Пример #1
0
        private void _cacheRoute(string route, UIElementNode listener)
        {
            if (!_cache.ContainsKey(route))
            {
                _cache.Add(route, new List <UIElementNode> ());
            }

            _cache [route].Add(listener);
        }
Пример #2
0
 /**
  * Adds and caches an element
  */
 internal UIRouter Add(UIElementNode listener)
 {
     if (listener != null)
     {
         _processNode(listener);
     }
     else
     {
         Debug.LogError("Null listener passed.");
     }
     return(this);
 }
Пример #3
0
        /**
         * Removes an element
         */
        internal UIRouter Remove(UIElementNode listener)
        {
            if (_nodes.Remove(listener))
            {
                foreach (string route in listener.Routes)
                {
                    if (_cache.ContainsKey(route))
                    {
                        _cache [route].Remove(listener);
                    }
                }
            }

            return(this);
        }
Пример #4
0
        private void _cacheListener(UIElementNode parent, UIElementNode listener)
        {
            if (!_nodes.Contains(listener))
            {
                listener.Router = this;
                listener.Parent = parent;

                if (!_nodes.Contains(listener))
                {
                    _nodes.Add(listener);
                }


                for (int i = 0; i < listener.Routes.Length; i++)
                {
                    _cacheRoute(listener.Routes [i], listener);
                }
            }
        }
Пример #5
0
        //Recursivly traverses transform heirarchy passing elements to be cached as relevent.
        private void _processNode(UIElementNode parent)
        {
            if (parent != null && ((parent == this) || (parent.GetType() != typeof(UIRouter))))
            {
                foreach (Transform child in parent.transform)
                {
                    UIElementNode element = child.GetComponent <UIElementNode> ();

                    if (element == null)
                    {
                        element        = child.gameObject.AddComponent <UIElementNode> ();
                        element.Routes = new string[parent.Routes.Length];
                        Array.Copy(parent.Routes, element.Routes, parent.Routes.Length);
                    }

                    _cacheListener(parent, element);

                    _processNode(element);
                }
            }
        }