private void deleteComponentAddedHandler(ListenerKey key, ComponentAddedHandler handler) { if (componentAddedHandlers.ContainsKey(key)) { componentAddedHandlers[key].Remove(handler); if (componentAddedHandlers[key].Count == 0) { componentAddedHandlers.Remove(key); } } }
private ComponentAddedHandler createComponentAddedHandler <T>(ListenerKey key, Action <T> onAdded, bool onlyOnce) where T : BaseData { if (!componentAddedHandlers.ContainsKey(key)) { componentAddedHandlers.Add(key, new List <ComponentAddedHandler>()); } ComponentAddedHandler <T> componentAddedHandler = new ComponentAddedHandler <T>(); componentAddedHandler.Added = onAdded; componentAddedHandler.onlyOnce = onlyOnce; ComponentAddedHandler <T> componentAddedHandler2 = componentAddedHandler; componentAddedHandlers[key].Add(componentAddedHandler2); return(componentAddedHandler2); }
internal void ComponentAdded <T>(string entityName, T component) where T : BaseData { ListenerKey listenerKey = default(ListenerKey); listenerKey.EntityName = entityName; listenerKey.Type = typeof(T); ListenerKey key = listenerKey; if (!componentAddedHandlers.ContainsKey(key)) { return; } List <ComponentAddedHandler> list = componentAddedHandlers[key]; Stack <int> stack = new Stack <int>(); int count = list.Count; for (int i = 0; i < count; i++) { ComponentAddedHandler <T> componentAddedHandler = (ComponentAddedHandler <T>)list[i]; componentAddedHandler.Added.InvokeSafe(component); if (componentAddedHandler.onlyOnce) { stack.Push(i); } } if (stack.Count <= 0) { return; } foreach (int item in stack) { list.RemoveAt(item); } if (list.Count == 0) { componentAddedHandlers.Remove(key); } }
public static void SubscribeComponentAdded <T>(ComponentAddedHandler <T> handler) { World.SubscribeComponentAdded(handler); }
public void RemoveComponentAddedListener <TComponent>(ComponentAddedHandler <TScope, TComponent> handler) { ComponentData <TComponent> .OnComponentAdded -= handler; }