NewtonJoint* newton_createslider(VECTOR* vecPivot, VECTOR* vecDir, ENTITY* entBody1, ENTITY* entBody2, void* fpCallback)
{
NewtonBody* psBody1 = NULL;
NewtonBody* psBody2 = NULL;
NewtonJoint* psJoint;
float* fpPivot;
float* fpDir;
/* get Newton bodies */
if (entBody1 != NULL)
{
psBody1 = entBody1->skill99;
}
if (entBody2 != NULL)
{
psBody2 = entBody2->skill99;
}
fpPivot = vectorf(vecPivot);
fpPivot[0] *= QUANTTOMETER;
fpPivot[1] *= QUANTTOMETER;
fpPivot[2] *= QUANTTOMETER;
fpDir = vectorf(vecDir);
psJoint = NewtonConstraintCreateSlider(psWorld, fpPivot, fpDir, psBody1, psBody2);
if (fpCallback != NULL)
{
NewtonSliderSetUserCallback (psJoint, fpCallback);
}
/* store joint pointers in related objects */
if (entBody1 != NULL)
{
entBody1->skill98 = psJoint;
}
if (entBody2 != NULL)
{
entBody2->skill98 = psJoint;
}
}