ENTITY* test_unit;
void UserContactRestitution22 (const NewtonJoint* contactJoint, dFloat timestep, int threadIndex)
{
dFloat Ixx;
dFloat Iyy;
dFloat Izz;
dFloat mass;
const NewtonBody* body;
const NewtonBody* body0;
const NewtonBody* body1;
GenericContactProcess (contactJoint, timestep, threadIndex);
body0 = NewtonJointGetBody0(contactJoint);
body1 = NewtonJointGetBody1(contactJoint);
body = body0;
NewtonBodyGetMassMatrix (body, &mass, &Ixx, &Iyy, &Izz);
if (mass == (float)0.0) {
body = body1;
}
void* contact;
for (contact = NewtonContactJointGetFirstContact (contactJoint); contact; contact = NewtonContactJointGetNextContact (contactJoint, contact)) {
NewtonMaterial* nmaterial;
nmaterial = NewtonContactGetMaterial (contact);
you = (ENTITY*)NewtonBodyGetUserData(body);
test_unit = (ENTITY*)NewtonBodyGetUserData(NewtonJointGetBody1(contactJoint));
//NewtonMaterialSetContactElasticity (nmaterial, (float)you.skill98);
if(test_unit != NULL)
{
if(you.skill10 == 1 && test_unit.skill10 == 2)// i have set both you en test_unit to the correct value
{
float pos[3], n[3];
NewtonMaterialGetContactPositionAndNormal(nmaterial, pos, n);
you.skill8 = 8; // add force on a other func else force get duplicated
VECTOR pos_vec;
VECTOR n_vec;
vec_set(pos_vec,_vec(pos[0],pos[1],pos[2]));
vec_scale(pos_vec,METERTOQUANT);
draw_point3d(pos_vec,vector(0,0,255),100,5);
}
}
}
}