Beispiel #1
0
 public static void UnregisterActionWithDispatcher <TMessageType>
 (
     GameObject inDispatcherObject, UnityMessageEventHandle <TMessageType> inHandle
 )
     where TMessageType : UnityMessagePayload
 {
     UnregisterActionWithDispatcher(inDispatcherObject.GetComponent <IUnityMessageEventInterface>(), inHandle);
 }
Beispiel #2
0
        public static void UnregisterActionWithDispatcher <TMessageType>
        (
            IUnityMessageEventInterface inDispatcherInterface, UnityMessageEventHandle <TMessageType> inHandle
        )
            where TMessageType : UnityMessagePayload
        {
            if (inDispatcherInterface == null)
            {
                throw new UnityMessageHandleException("Invalid dispatcher interface passed in for unregistration!");
            }

            inDispatcherInterface.GetUnityMessageEventDispatcher().UnregisterForMessageEvent(inHandle);
        }
        public UnityMessageEventHandle <TMessageType> RegisterForMessageEvent <TMessageType>(UnityAction <TMessageType> inAction)
            where TMessageType : UnityMessagePayload
        {
            var messageType = typeof(TMessageType);

            if (!_registeredEvents.ContainsKey(messageType))
            {
                _registeredEvents.Add(typeof(TMessageType), new UnityMessageEvent <TMessageType>());
            }

            var messageEvent  = (UnityMessageEvent <TMessageType>)_registeredEvents[messageType];
            var messageHandle = new UnityMessageEventHandle <TMessageType>();

            messageHandle.RegisterHandle(messageEvent, inAction);

            return(messageHandle);
        }
        public void UnregisterForMessageEvent <TMessageType>(UnityMessageEventHandle <TMessageType> inHandle)
            where TMessageType : UnityMessagePayload
        {
            if (inHandle == null)
            {
                throw new UnityMessageHandleException("Null handle on unregistration!");
            }
            if (!inHandle.IsRegistered())
            {
                throw new UnityMessageHandleException("handle was not registered!");
            }

            var messageType = typeof(TMessageType);

            if (!_registeredEvents.ContainsKey(messageType))
            {
                throw new UnityMessageHandleException("Handle was registered to other dispatcher!");
            }

            var messageEvent = (UnityMessageEvent <TMessageType>)_registeredEvents[typeof(TMessageType)];

            inHandle.UnregisterHandle(messageEvent);
        }