Ejemplo n.º 1
0
void flFree(Flag* F)
{
	for(unsigned int i = 0; i < daGetSize(&F->Vertices); i++)
	{
		delVertex((Vertex*) daGet(&F->Vertices, i));
	}
	for(unsigned int i = 0; i < daGetSize(&F->Rigids); i++)
	{
		delRigid((Rigid*) daGet(&F->Rigids, i));
	}
	daFree(&F->Vertices);
	daFree(&F->Rigids);
}
Ejemplo n.º 2
0
void freeDll(void)
{
	
	int i;
	Variable *var;


	//Poistettaan kaikki muuttujat
	for (i = 1; i != mVariableHandler.mSize;i++)
	{
		var = mVariableHandler.mPtrArray[i];
		if (var != NULL)
		{
			switch(var->mType)
			{
			case VarTypeBody:
				cpBodyFree((cpBody*)var->mPtr);break;
			case VarTypeShape:
				cpShapeFree((cpShape*)var->mPtr);break;
			case VarTypeConstraint:
				cpConstraintFree((cpConstraint*)var->mPtr);break;
			case VarTypeDataArray:
				daFree((DataArray*)var->mPtr);break;
			}
		}
	}

	//Tuhotaan ne kaikki...
	vhDestroy(&mVariableHandler);
	cpSpaceDestroy(&mSpace);
	mState = Unloaded;
}
Ejemplo n.º 3
0
void delPolygon(Polygon* P)
{
	unsigned int i;

	/* Destruction des liaisons */
	for(i = 0; i < daGetSize(&P->Rigids); i++)
	{
		delRigid((Rigid*)daGet(&P->Rigids, i));
	}
	for(i = 0; i < daGetSize(&P->InternalRigids); i++)
	{
		delRigid((Rigid*)daGet(&P->InternalRigids, i));
	}

	/* Libération des Dynamic Arrays */
	daFree(&P->Rigids);
	daFree(&P->Vertices);
	daFree(&P->InternalRigids);

	if(P->Center != NULL) delVertex(P->Center), P->Center = NULL;

	free(P);
}
Ejemplo n.º 4
0
__declspec( dllexport ) void deletevar( const void * _in, int in_size, void * _out, int out_sz )
{
	cpBody *body;
	int i;
	int index;
	Variable *var;
	Variable *mainVar = vhRemoveVariable(&mVariableHandler,PEEKINT(INPUT_MEMBLOCK,0));
	
	if (mainVar->mType == VarTypeBody)
	{
		body = (cpBody*)mainVar->mPtr;
		resetVariableList();
		cpBodyEachShape(body,listShape,0);
		index = 0;
		for (i = 0;i != mVariableListIterator;i++)
		{
			var = mVariableList[i];
			
			POKEINT(OUTPUT_MEMBLOCK,index,var->mCBPtr);index += 4;
			
			cpSpaceRemoveShape(&mSpace,(cpShape*)var->mPtr);
			cpShapeFree((cpShape*)var->mPtr);
			//MessageBoxA(NULL,"ShapeRemoved2","Error",MB_OK);

			vhRemoveVariable(&mVariableHandler,var->mLocalHandle);
			varFree(var);
		}

		resetVariableList();
		cpBodyEachConstraint(body,listConstraint,0);
		for (i = 0;i != mVariableListIterator;i++)
		{
			var = mVariableList[i];
			POKEINT(OUTPUT_MEMBLOCK,index,var->mCBPtr);index+=4;
			//MessageBoxA(NULL,"Constraint removed2","Error",MB_OK);
			cpSpaceRemoveConstraint(&mSpace,(cpConstraint*)var->mPtr);
			cpConstraintFree((cpConstraint*)var->mPtr);
			vhRemoveVariable(&mVariableHandler,var->mLocalHandle);
			varFree(var);
		}
		POKEINT(OUTPUT_MEMBLOCK,index,0);//End point
		//MessageBoxA(NULL,"BodyRemoved","Error",MB_OK);
		cpSpaceRemoveBody(&mSpace,body);
		cpBodyFree(body);
		varFree(mainVar);
	}
	else if (mainVar->mType == VarTypeShape)
	{
		cpSpaceRemoveShape(&mSpace,(cpShape*)mainVar->mPtr);
		cpShapeFree((cpShape*)mainVar->mPtr);
		//MessageBoxA(NULL,"ShapeRemoved","Error",MB_OK);
		varFree(mainVar);
		POKEINT(OUTPUT_MEMBLOCK,0,0);
	}
	else if (mainVar->mType == VarTypeConstraint)
	{
		cpSpaceRemoveConstraint(&mSpace,(cpConstraint*)mainVar->mPtr);
		cpConstraintFree((cpConstraint*)mainVar->mPtr);
		varFree(mainVar);

		POKEINT(OUTPUT_MEMBLOCK,0,0);
	}
	else if (mainVar->mType == VarTypeDataArray)
	{
		daFree((DataArray*)mainVar->mPtr);
		varFree(mainVar);
		POKEINT(OUTPUT_MEMBLOCK,0,0);
	}
	else
	{
		//Failure...
		MessageBoxA(NULL,"Unknown cpChipmunk error 11","Error",MB_OK);
		varFree(mainVar);
		POKEINT(OUTPUT_MEMBLOCK,0,0);
		
	}
	
}
Ejemplo n.º 5
0
void delDynArr(DynArr* DA)
{
	daFree(DA);
	free(DA);
}
Ejemplo n.º 6
0
void
main (int argc, char **argv)
{
 PTR_ROOT root;
 BOOL error;
 char *inputfile;
 
 //Variáveis de entrada
 REAL tempoInicial = 0.0;
 REAL passoDeTempo = 0.1;
 int tamanhoDoSistema = 2;
 REAL *y;
 REAL *derivadaY;
 int *index = NULL;

 #pragma region AlocacaoDeMemoria

 y  = (REAL*)malloc(tamanhoDoSistema*sizeof(REAL));
 derivadaY = (REAL*)malloc(tamanhoDoSistema*sizeof(REAL));

 #pragma endregion 

 y[0]=1.0;
 y[1]=1.0;
 derivadaY[0] = 0.0;
 derivadaY[1] = 1.0;

 if (argc > 1) inputfile = argv[1];
 else inputfile = "demo.dat";

 inputfile = "?";

 user_init = init_root;
  
  if (error = daSetup (inputfile, &root, funcaoResidual, tamanhoDoSistema, tempoInicial, y, derivadaY, index, NULL, NULL), error)
 {
  printf ("Setup error = %d\n", error);
  exit(1);
 }

 /**root.iter.rtol = 0;
 *root.iter.atol = 1e-6;*/
  

 if (error = dasslc (INITIAL_COND, &root, funcaoResidual, &tempoInicial, passoDeTempo, NULL, NULL), error < 0)
   printf ("error = %d\n", error);
 else
   for (; passoDeTempo <= 1.; passoDeTempo += .1)
      if (error = dasslc (TRANSIENT, &root, funcaoResidual, &tempoInicial, passoDeTempo, NULL, NULL), error < 0)
	{
	 printf ("error = %d\n", error);
	 break;
	}

 daStat (root.savefile, &root);

 /*root.iter.atol[0] = 1e-20;
 if (!root.iter.stol) root.iter.atol[1] = 1e-20;

 if (error >= 0)
   if (error = dasslc (STEADY_STATE, &root, funcaoResidual, &tempoInicial, passoDeTempo, jacobiano, ppsolver), error < 0)
     printf ("error = %d\n", error);

 daStat (root.savefile, &root);
*/
 #pragma region LiberacaoMemoria

 free((void*)y);
 free((void*)derivadaY);

 #pragma endregion


 daFree (&root);
}					/* main */