private void OnActorEvent(ActorEvent evt)
        {
            if (!showUpdate && evt.GetType() == typeof(ActorUpdateEvent))
            {
                return;
            }
            if (!showFixedUpdate && evt.GetType() == typeof(ActorFixedUpdateEvent))
            {
                return;
            }

            Debug.Log($"{actor.name}: {evt}");
        }
Esempio n. 2
0
        /// <summary>
        /// Send an event to the all registered actor components
        /// </summary>
        /// <param name="evt">Event to send</param>
        public void Send(ActorEvent evt)
        {
            if (null == handlers)
            {
                return;
            }

            evt.IsHandled = false;

            // Generate a temporary list of all event handlers for the given event.  This is
            // done to allow the handler table to be modified during a send event
            var eventHandlers = handlersPool.Get();
            var eventType     = evt.GetType();

            foreach (var handler in handlers)
            {
                if (handler.eventType == eventType || handler.eventType == typeof(ActorEvent))
                {
                    eventHandlers.Add(handler);
                }
            }

            // Send the envent to each of the matching event handlers.
            for (var handlerIndex = 0; !evt.IsHandled && handlerIndex < eventHandlers.Count; handlerIndex++)
            {
                var handler = eventHandlers[handlerIndex];
                if (handler.component != null && handler.component.isActiveAndEnabled)
                {
                    handler.callback.Invoke(handler.component, evt);
                }
            }

            eventHandlers.Clear();
            handlersPool.Release(eventHandlers);
        }
        private void OnActorEvent(ActorEvent evt)
        {
            if (evt.GetType() != _event.Type)
            {
                return;
            }

            AudioManager.Instance.Play(_clip);
        }
Esempio n. 4
0
        /// <summary>
        /// Call to handle an event by callin the handlers callback if available
        /// </summary>
        /// <param name="evt">Event to handle</param>
        internal void HandleEvent(ActorEvent evt)
        {
            var eventType = evt.GetType();

            foreach (var handler in info.handlers)
            {
                if (handler.eventType == eventType)
                {
                    handler.callback.Invoke(this, evt);
                }
            }
        }
Esempio n. 5
0
 public static ActorEventType FromEvent(ActorEvent evt) => new ActorEventType
 {
     name = evt.GetType().FullName
 };