#pragma warning restore 649 /// <summary> /// Removes a physBody from the manager /// </summary> /// <param name="physBody"></param> public void RemoveBody(IPhysBody physBody) { var removeAttempted = false; var removed = false; if (physBody.Owner.Deleted || physBody.Owner.Transform.Deleted) { removeAttempted = true; foreach (var mapId in _mapManager.GetAllMapIds()) { removed = this[mapId].Remove(physBody); if (removed) { break; } } } if (!removed) { try { removed = this[physBody.MapID].Remove(physBody); } catch (InvalidOperationException ioex) { removeAttempted = true; // TODO: TryGetMapId or something foreach (var mapId in _mapManager.GetAllMapIds()) { removed = this[mapId].Remove(physBody); if (removed) { break; } } } } if (!removed) { foreach (var mapId in _mapManager.GetAllMapIds()) { removed = this[mapId].Remove(physBody); if (removed) { break; } } } if (!removed) { Logger.WarningS("phys", $"Trying to remove unregistered PhysicsBody! {physBody.Owner}"); } }
private void RemoveFromEntityTrees(IEntity entity) { foreach (var mapId in _mapManager.GetAllMapIds()) { if (_entityTreesPerMap.TryGetValue(mapId, out var entTree)) { entTree.Remove(entity); } } }