private void RemoveComponentImmediate(GameComponent component) { if (!Components.ContainsKey(component.GlobalID)) { return; } Components.Remove(component.GlobalID); if (component is IUpdateableComponent) { //var type = component.GetType(); //if (UpdateableComponents.ContainsKey(type)) // UpdateableComponents[type].Remove(component as IUpdateableComponent); UpdateableComponents.Remove(component as IUpdateableComponent); } if (component is IRenderableComponent) { Renderables.Remove(component as IRenderableComponent); } if (component is MinimapIcon) { MinimapIcons.Remove(component as MinimapIcon); } foreach (var child in new List <GameComponent>(component.EnumerateChildren())) { RemoveComponentImmediate(child); } }
private void RemoveComponentImmediate(GameComponent component) { if (!Components.ContainsKey(component.GlobalID)) { return; } if (_componentList == null) { _componentList = Components.Values.ToList(); } _componentList.Remove(component); Components.Remove(component.GlobalID); if (component is Body) { World.OctTree.Remove((component as Body), (component as Body).GetBoundingBox()); } if (component is MinimapIcon) { MinimapIcons.Remove(component as MinimapIcon); } foreach (var child in new List <GameComponent>(component.EnumerateChildren())) { RemoveComponentImmediate(child); } }
private void RemoveComponentImmediate(GameComponent component) { if (!Components.ContainsKey(component.GlobalID)) { return; } Components.Remove(component.GlobalID); if (component is MinimapIcon) { MinimapIcons.Remove(component as MinimapIcon); } foreach (var child in new List <GameComponent>(component.EnumerateChildren())) { RemoveComponentImmediate(child); } }