protected override void Dispose() { if (rigidBody != IntPtr.Zero) { int numRefs = btRigidBody_getNumConstraintRefs(rigidBody); List <TypedConstraintElement> constraints = new List <TypedConstraintElement>(numRefs); //Gather up all constraints for (int i = 0; i < numRefs; ++i) { IntPtr typedConstraint = btRigidBody_getConstraintRef(rigidBody, i); TypedConstraintElement element = TypedConstraintManager.getElement(typedConstraint); if (element != null) { constraints.Add(element); } } //Set all constraints to inactive foreach (TypedConstraintElement constraint in constraints) { constraint.setInactive(); } if (Owner.Enabled) { scene.removeRigidBody(this); } RigidBodyManager.remove(rigidBody); btRigidBody_Delete(rigidBody); rigidBody = IntPtr.Zero; motionState.Dispose(); } }
protected override void Dispose() { if (constraint != IntPtr.Zero) { TypedConstraintManager.removeConstraint(constraint); if (active && Owner.Enabled) { scene.removeConstraint(this); } btTypedConstraint_Delete(constraint); constraint = IntPtr.Zero; } }
protected void setConstraint(IntPtr constraint) { this.constraint = constraint; TypedConstraintManager.addConstraint(constraint, this); }