public void UnsubscribeComponentChanged <TComponent>(Entity entity, IComponentChangedEventListener <TComponent> eventListener) where TComponent : IComponent { Type componentType = typeof(TComponent); ComponentArray componentArray; if (_components.TryGetValue(componentType, out componentArray)) { ((ComponentArray <TComponent>)componentArray).UnsubscripOnComponentChanged(entity, eventListener); } }
public void Subscribe(ref Entity entity, IComponentChangedEventListener <TComponent> eventListener) { List <IComponentChangedEventListener <TComponent> > eventListeners; if (!eventListenerMap.TryGetValue(entity, out eventListeners)) { eventListeners = new List <IComponentChangedEventListener <TComponent> >(); eventListenerMap.Add(entity, eventListeners); } eventListeners.Add(eventListener); }
public void Unsubscribe(ref Entity entity, IComponentChangedEventListener <TComponent> eventListener) { List <IComponentChangedEventListener <TComponent> > eventListeners; if (eventListenerMap.TryGetValue(entity, out eventListeners)) { eventListeners.Remove(eventListener); if (eventListeners.Count == 0) { eventListenerMap.Remove(entity); } } }