Пример #1
0
#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}");
            }
        }
Пример #2
0
 private void RemoveFromEntityTrees(IEntity entity)
 {
     foreach (var mapId in _mapManager.GetAllMapIds())
     {
         if (_entityTreesPerMap.TryGetValue(mapId, out var entTree))
         {
             entTree.Remove(entity);
         }
     }
 }