public static void RemoveBody(JRigidbody body) { lock (BodyPoolToRemove) { if (!BodyPoolToRemove.Contains(body)) { BodyPoolToRemove.Add(body); } } lock (Bodies) if (!Bodies.ContainsValue(body)) { Bodies.Remove(body.Body); } }
void RemoveBodies() { lock (BodyPoolToRemove) { var count = BodyPoolToRemove.Count; if (count == 0) { return; } for (var i = 0; i < count; i++) { var b = BodyPoolToRemove[i]; World.RemoveBody(b.Body); World.Events.PostStep -= b.TransformUpdate; } BodyPoolToRemove.Clear(); } }