示例#1
0
        /// <summary>
        /// Constructs a messenger for the given GameObject.
        /// </summary>
        public MessengerImpl(Manager inManager, GameObject inUnityObject)
        {
            m_Manager  = inManager;
            m_Handlers = new Dictionary <MsgType, DelegateBlock>();

            m_Parent = inManager.Root;

            // Non-root messengers do not tend to have children,
            // so we can allocate a small list.
            m_Children = new List <MessengerImpl>(2);
            m_Parent.m_Children.Add(this);

            m_ID        = inUnityObject.GetInstanceID();
            m_IsRoot    = false;
            m_Destroyed = false;

            m_GameObject     = inUnityObject;
            m_UnityComponent = inUnityObject.GetComponent <MessengerComponent>();
            if (!m_UnityComponent)
            {
                m_UnityComponent = inUnityObject.AddComponent <MessengerComponent>();
            }
            m_UnityComponent.Initialize(this);

            m_UnityActive = inUnityObject.activeInHierarchy;

            Interface = new Messenger(this);

            m_Manager.RegisterMessenger(this);
        }
示例#2
0
        /// <summary>
        /// Constructs the root messenger.
        /// </summary>
        public MessengerImpl(Manager inManager)
        {
            m_Manager  = inManager;
            m_Handlers = new Dictionary <MsgType, DelegateBlock>(64);

            m_Parent = null;

            // We can expect the root to have many children,
            // so we should pre-allocate a larger list to avoid
            // expanding at runtime
            m_Children = new List <MessengerImpl>(256);

            m_ID        = 0;
            m_IsRoot    = true;
            m_Destroyed = false;

            m_GameObject     = null;
            m_UnityComponent = null;
            m_UnityActive    = true;

            Interface = new Messenger(this);

            m_Manager.RegisterMessenger(this);
        }