void cfile_serialize_editor(XFILE *fp, int flag) { // Editor only stuff SerializeMatrix(fp, flag, &view_orient); SerializeVector(fp, flag, &view_pos); SerializeInt(fp, flag, Control_mode); SerializeInt(fp, flag, cur_object_index); SerializeInt(fp, flag, cur_wing); SerializeGrid(fp, flag, The_grid); }
/*************************************************** * API to convert a Vector to its Maple equivalent * ***************************************************/ ALGEB lbConvertVector (MKernelVector kv, ALGEB *argv){ try { const VectorKey *k = &MapleToVectorKey(kv, argv[1]); SerialVector s; SerializeVector(s, *k); if (strcmp(s.type, "integer")==0){ size_t n = s.list.size(); RTableSettings setting; M_INT bounds[2];bounds[0]=1;bounds[1]=n; RTableGetDefaults(kv, &setting); setting.num_dimensions=1; setting.subtype=RTABLE_COLUMN; setting.data_type=RTABLE_DAG; ALGEB vector = RTableCreate(kv, &setting, NULL, bounds); M_INT index[1]; RTableData tmp; for (size_t i=1; i<n+1; ++i){ index[0]=i; tmp.dag = LinBoxToGMPMaple(kv, s.list[i-1]); RTableAssign(kv, vector, index, tmp); } return vector; } if (strcmp(s.type, "rational")==0){ size_t n = (s.list.size()); if (n & 0x1) MapleRaiseError(kv, "LinBox internal error (serializing vector problem)"); n = n>>1; RTableSettings setting; M_INT bounds[2];bounds[0]=1;bounds[1]=n; RTableGetDefaults(kv, &setting); setting.num_dimensions=1; setting.subtype=RTABLE_COLUMN; setting.data_type=RTABLE_DAG; ALGEB vector = RTableCreate(kv, &setting, NULL, bounds); ALGEB f = EvalMapleStatement(kv,"Fraction:"); M_INT index[1]; RTableData tmp; for (size_t i=1; i<n+1; ++i){ index[0]=i; tmp.dag = EvalMapleProc(kv, f, 2, LinBoxToGMPMaple(kv, s.list[(i<<1)-2]) , LinBoxToGMPMaple(kv, s.list[(i<<1)-1])); RTableAssign(kv, vector, index, tmp); } return vector; } else MapleRaiseError(kv, "LinBox internal error (serializing vector problem)"); }
void SerializeGrid(XFILE *fp, int mode, grid *gridp) { int i; SerializeInt(fp, mode, gridp->nrows); SerializeInt(fp, mode, gridp->ncols); SerializeMatrix(fp, mode, &gridp->gmatrix); SerializePhysicsInfo(fp, mode, &gridp->physics); SerializeFloat(fp, mode, gridp->square_size); SerializeFloat(fp, mode, gridp->planeD); for (i=0; i<MAX_GRID_POINTS; i++) SerializeVector(fp, mode, &gridp->gpoints[i]); }
///////////////////////////////////////////////////////////////////////////// // CFREDDoc serialization void SerializeObject(XFILE *fp, int mode, object *objp) { SerializeInt(fp, mode, objp->signature); SerializeInt(fp, mode, objp->type); SerializeInt(fp, mode, objp->parent); SerializeInt(fp, mode, objp->parent_sig); SerializeInt(fp, mode, objp->parent_type); SerializeInt(fp, mode, objp->instance); SerializeInt(fp, mode, objp->flags); SerializeFloat(fp, mode, objp->radius); // SerializeInt(fp, mode, objp->wing); SerializePhysicsInfo(fp, mode, &objp->phys_info); SerializeVector(fp, mode, &objp->pos); SerializeMatrix(fp, mode, &objp->orient); }
///////////////////////////////////////////////////////////////////////////// // CFREDDoc serialization void SerializeObject(XFILE *fp, int mode, object *objp) { SerializeInt(fp, mode, objp->signature); SerializeInt(fp, mode, objp->type); SerializeInt(fp, mode, objp->parent); SerializeInt(fp, mode, objp->parent_sig); SerializeInt(fp, mode, objp->parent_type); SerializeInt(fp, mode, objp->instance); SerializeInt(fp, mode, objp->flags); SerializeInt(fp, mode, objp->flags2); // Goober5000 - code is obsolete, but I added this just in case SerializeFloat(fp, mode, objp->radius); // SerializeInt(fp, mode, objp->wing); SerializePhysicsInfo(fp, mode, &objp->phys_info); SerializeVector(fp, mode, &objp->pos); SerializeMatrix(fp, mode, &objp->orient); }
void SerializePhysicsInfo(XFILE *fp, int mode, physics_info *pi) { SerializeFloat(fp, mode, pi->mass); SerializeFloat(fp, mode, pi->drag); SerializeVector(fp, mode, &pi->max_thrust); SerializeVector(fp, mode, &pi->max_rotthrust); SerializeFloat(fp, mode, pi->turnroll); SerializeInt(fp, mode, pi->flags); SerializeVector(fp, mode, &pi->velocity); SerializeVector(fp, mode, &pi->rotvel); SerializeVector(fp, mode, &pi->thrust); SerializeVector(fp, mode, &pi->rotthrust); }
void SerializeMatrix(XFILE *fp, int mode, matrix *m) { SerializeVector(fp, mode, &m->rvec); SerializeVector(fp, mode, &m->uvec); SerializeVector(fp, mode, &m->fvec); }