/// <summary>Constructs and binds a new event.</summary> /// <param name="Name">The name of this BindedEvent.</param> /// <param name="Trigger">The trigger that causes this event to execute.</param> /// <param name="Callback">The method to execute on event trigger.</param> /// <param name="ManagerType">The type of audio manager this event is binded to.</param> public BindedEvent(string Name, EventTriggerType Trigger, UnityObjectEvent Callback, Type ManagerType) { EventName = Name; EventTrigger = Trigger; EventCallback = Callback; this.ManagerType = ManagerType; }
/// <summary>Creates and binds a new BindedEvent.</summary> /// <returns>The BindedEvent.</returns> /// <param name="DesiredTriggerType">The desired trigger type.</param> /// <param name="DesiredOverload">The method overload to bind.</param> /// <param name="MethodParamaterValues">The values to pass as paramaters to the method overload.</param> public BindedEvent CreateAndBindEvent(EventTriggerType DesiredTriggerType, OverloadEventBinder DesiredOverload, object[] MethodParamaterValues) { //Creates invokable action and name UnityAction <object> Callback = DesiredOverload.CreateInvokableAction((object[])MethodParamaterValues.Clone()); string EventName = DesiredOverload.CreateEventName(MethodParamaterValues); UnityObjectEvent CallbackEvent = new UnityObjectEvent(); UnityEventTools.AddPersistentListener(CallbackEvent, Callback); //Binds the event return(new BindedEvent(EventName, DesiredTriggerType, CallbackEvent, ClassType)); }
/// <summary> /// Start listener to an event with extra data /// </summary> /// <param name="eventName">Name of the event</param> /// <param name="action">Action to execute with the extra data</param> public static void StartListening(string eventName, UnityAction <object> action) { if (eventsWithData.TryGetValue(eventName, out UnityObjectEvent auxEvent)) { auxEvent.AddListener(action); } else { auxEvent = new UnityObjectEvent(); auxEvent.AddListener(action); eventsWithData.Add(eventName, auxEvent); } }