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); } } if (component is IRenderableComponent) { RenderableComponents.Remove(component as IRenderableComponent); } foreach (var child in component.GetAllChildrenRecursive()) { RemoveComponentImmediate(child); } }
private void RemoveComponentImmediate(GameComponent component) { if (!Components.ContainsKey(component.GlobalID)) { return; } Components.Remove(component.GlobalID); List <GameComponent> children = component.GetAllChildrenRecursive(); foreach (GameComponent child in children) { Components.Remove(child.GlobalID); } }