public bool RemoveComponent(MyComponentBase component) { if (Contains(component)) { component.OnBeforeRemovedFromContainer(); } else { return(false); } if (m_components.Remove(component)) { return(true); } foreach (var childComponent in m_components) { if (childComponent is IMyComponentAggregate) { var childAggregate = (childComponent as IMyComponentAggregate); if (childAggregate.ChildList.RemoveComponent(component)) { return(true); } } } return(false); }
public static void AddComponent(this IMyComponentAggregate aggregate, MyComponentBase component) { Debug.Assert(aggregate != component, "Can not add to itself!"); if (component.ContainerBase != null) { component.OnBeforeRemovedFromContainer(); } aggregate.ChildList.AddComponent(component); component.SetContainer(aggregate.ContainerBase); aggregate.AfterComponentAdd(component); }