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);

}
Exemple #2
0
	/***************************************************
	 * 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);
}