i try to make a conveyer
now if they come in contact with the conveyer the get some force added
now my question is how to get both entity's pointers because the first one does work but not the second entity pointer

this is my try

Code:


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



thx flits


"empty"