private void Dispose(bool disposeManaged) { if (m_disposed) { return; } if (disposeManaged) { m_bodyShape.Dispose(); for (var i = 0; i < m_wheelShapes.Length; i++) { m_wheelShapes[i].Dispose(); m_wheelLines[i].Dispose(); } } m_physicsManager.PreStep -= ApplyAcceleration; m_physicsManager.PostStep -= PhysicsPostStep; for (var i = 0; i < m_wheelShapes.Length; i++) { m_wheelBodies[i].OnCollision -= WheelInitialCollision; m_physicsManager.World.RemoveJoint(m_wheelJoints[i]); m_physicsManager.World.RemoveBody(m_wheelBodies[i]); } m_physicsManager.World.RemoveBody(m_bodyBody); m_disposed = true; }