Ejemplo n.º 1
0
 private void deleteComponentAddedHandler(ListenerKey key, ComponentAddedHandler handler)
 {
     if (componentAddedHandlers.ContainsKey(key))
     {
         componentAddedHandlers[key].Remove(handler);
         if (componentAddedHandlers[key].Count == 0)
         {
             componentAddedHandlers.Remove(key);
         }
     }
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
 public static void SubscribeComponentAdded <T>(ComponentAddedHandler <T> handler)
 {
     World.SubscribeComponentAdded(handler);
 }
Ejemplo n.º 5
0
 public void RemoveComponentAddedListener <TComponent>(ComponentAddedHandler <TScope, TComponent> handler)
 {
     ComponentData <TComponent> .OnComponentAdded -= handler;
 }