/// <summary> /// Removes a rigidbody from the world if it exists. /// </summary> /// <param name="_body"></param> public void RemoveBody(ABRigidBody _body) { if (RigidBodies.Contains(_body)) { RigidBodies.Remove(_body); return; } Debug.LogWarning("Attempted to remove a body from world that didn't exist."); }
/// <summary> /// Removes the bodies that have left the simulation boundaries. /// </summary> private void RemoveBodiesOutsideWorld() { if (Settings.Motion.RemoveBodiesOutsideWorld) { int numberOfRigidBodies = RigidBodies.Count; for (int i = numberOfRigidBodies - 1; i >= 0; i--) { var body = RigidBodies[i]; if (body.IsSleeping) continue; var pose = body.Pose; if (pose.Position.IsNaN || pose.Orientation.IsNaN || !GeometryHelper.HaveContact(body.Aabb, World.Aabb)) { RigidBodies.Remove(body); } } } }