I have no idea why my forcecallback doesn't work:
- Code: Select all
void spInitiatePhysics(void)
{
nWorld = NewtonCreate(NULL,NULL);
dVector minSize(-10000, -10000, -10000);
dVector maxSize( 10000, 10000, 10000);
NewtonSetWorldSize(nWorld, &minSize[0], &maxSize[0]);
}
void spForceCallback(const NewtonBody* body)
{
dFloat mass;
dFloat Ixx;
dFloat Iyy;
dFloat Izz;
float force[3];
NewtonBodyGetMassMatrix (body,&mass,&Ixx,&Iyy,&Izz);
force[0]=0.0;
force[1]=-mass*9.81;
force[2]=0.0;
NewtonBodySetForce(body,force);
}
void main(void)
{
spInitiatePhysics();
cCar = NewtonCreateBox(nWorld,30,30,30,fCar);
bCar = NewtonCreateBody(nWorld,cCar);
NewtonReleaseCollision(nWorld,cCar);
NewtonBodySetForceAndTorqueCallback(bCar,spForceCallback);
NewtonBodySetMassMatrix(bCar,1000,1,1,1);
float tireoffset[16] = {0,1,0,0, 0,0,1,0, 1,0,0,0, 0,0,0,1};
float vector[3];
jCar = DGRaycastVehicleCreate(4,tireoffset,bCar);
vector[0]=9;vector[1]=-1;vector[2]=-13.5;
DGRaycastVehicleAddTire(jCar,NULL,vector, 0.5, 14, 5, 0.1, 0.25, 70, 5, 1);
vector[0]=9;vector[1]=-1;vector[2]=15;
DGRaycastVehicleAddTire(jCar,NULL,vector, 0.5, 14, 5, 0.1, 0.25, 70, 5, 1);
vector[0]=-9;vector[1]=-1;vector[2]=-13.5;
DGRaycastVehicleAddTire(jCar,NULL,vector, 0.5, 14, 5, 0.1, 0.25, 70, 5, 1);
vector[0]=-9;vector[1]=-1;vector[2]=15;
DGRaycastVehicleAddTire(jCar,NULL,vector, 0.5, 14, 5, 0.1, 0.25, 70, 5, 1);
while (true)
{
DGRaycastVehicleSetCustomTireTorque(jCar,1,1500);
DGRaycastVehicleSetCustomTireTorque(jCar,0,1500);
/.../
DGRayCarGetChassisMatrixLocal(jCar,spmCar);
/.../
for(i=0;i<=3;i++)
{
DGRayCarTireMatrix(jCar,i,spmCar);
/.../
}
/.../
NewtonUpdate(nWorld,spGetTimer());
}
return;
}
I get this error:
- Code: Select all
1>------ Erstellen gestartet: Projekt: ..., Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Main.cpp
1>...\main.cpp(213) : error C2664: 'NewtonBodySetForceAndTorqueCallback': Konvertierung des Parameters 2 von 'void (__cdecl *)(const NewtonBody *)' in 'NewtonApplyForceAndTorque' nicht möglich
1> Keine Funktion mit diesem Namen im Gültigkeitsbereich stimmt mit dem Zieltyp überein
1>Das Buildprotokoll wurde unter "file://...\Debug\BuildLog.htm" gespeichert.
1>Driver - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
This sounds logic, but the examples uses a 'void'-function, too. The compiler wanted a 'NewtonApplyForceAndTorque'-function...
Need help, if there is a tutorial, please post. I haven't found a solution in the demos.
Thanks!