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