/// <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); }
/// <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); }