Exemple #1
0
        public void Register <T>(MsgTypedHandler <T> inAction)
        {
            if (m_DebugMode)
            {
                if (m_AllowedArgType == null)
                {
                    throw new ArgumentException("Message type '" + m_Metadata.Name + "' does not accept arguments, but handler for type '" + typeof(T).Name + "' provided!");
                }
                else if (typeof(T).TypeHandle.Value != m_AllowedArgTypePtr)
                {
                    throw new ArgumentException("Message type '" + m_Metadata.Name + "' accepts arguments of type '" + m_AllowedArgType.Name + "', but handler for type '" + typeof(T).Name + "' provided!");
                }

                if (m_Metadata.CanLog(LogFlags.Register))
                {
                    m_Manager.Log(m_Owner.Owner.name + " registered listener for " + m_Metadata.Name);
                }
            }

            TypedMsgDelegate <T> msgDelegate;

            if (m_Typed == null)
            {
                m_Typed = msgDelegate = new TypedMsgDelegate <T>();
            }
            else
            {
                msgDelegate = (TypedMsgDelegate <T>)m_Typed;
            }

            msgDelegate.Register(inAction);
        }
Exemple #2
0
        public void Deregister <T>(MsgTypedHandler <T> inAction)
        {
            if (m_DebugMode && m_Metadata.CanLog(LogFlags.Deregister))
            {
                m_Manager.Log(m_Owner.Owner.name + " deregistered listener for " + m_Metadata.Name);
            }

            if (m_Typed != null)
            {
                TypedMsgDelegate <T> msgDelegate = (TypedMsgDelegate <T>)m_Typed;
                msgDelegate.Unregister(inAction);
            }
        }