private void OnActorEvent(ActorEvent evt) { if (!showUpdate && evt.GetType() == typeof(ActorUpdateEvent)) { return; } if (!showFixedUpdate && evt.GetType() == typeof(ActorFixedUpdateEvent)) { return; } Debug.Log($"{actor.name}: {evt}"); }
/// <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); }
/// <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); } } }
public static ActorEventType FromEvent(ActorEvent evt) => new ActorEventType { name = evt.GetType().FullName };