void UpdateODEJoint() { bool needCreate = PushedToWorld && !Broken; bool created = jointID != dJointID.Zero; if (needCreate == created) { return; } if (needCreate) { ODEBody odeBody1 = (ODEBody)Body1; ODEBody odeBody2 = (ODEBody)Body2; jointID = Ode.dJointCreateSlider(((ODEPhysicsScene)Scene).worldID, IntPtr.Zero); Ode.SetJointContactsEnabled(jointID, ContactsEnabled); Ode.dJointSetSliderParam(jointID, Ode.dJointParams.dParamFudgeFactor, Defines.jointFudgeFactor); Ode.dJointAttach(jointID, odeBody1.bodyID, odeBody2.bodyID); axis.UpdateToLibrary(true); Ode.BodyDataAddJoint(odeBody1.bodyData, jointID); Ode.BodyDataAddJoint(odeBody2.bodyData, jointID); } else { DestroyODEJoint(); } }