/// <summary> /// Registers a route event instance. /// </summary> /// <param name="data">Raw data associated with the event.</param> /// <param name="parent">Parent object of the event.</param> /// <param name="createEvent">Function to create a new event.</param> /// <returns>The new, registered route event instance.</returns> public RouteEdgeEvent RegisterRouteEdgeEvent(FoxLib.Tpp.RouteSet.RouteEvent data, Transform parent, CreateEventDelegate createEvent) { var eventGameObject = new GameObject(); eventGameObject.transform.position = parent.transform.position; eventGameObject.transform.SetParent(parent); var eventInstance = createEvent(eventGameObject, data); eventGameObject.name = eventInstance.Name; return(eventInstance as RouteEdgeEvent); }
/// <summary> /// Create a RouteEdgeEvent. /// </summary> /// <param name="parent">GameObject parent of the RouteEvent.</param> /// <param name="data">Parameters of the RouteEvent.</param> /// <param name="getEventTypeName">Function to get the name of the RouteEvent's type.</param> /// <param name="generateEventName">Function to generate a name for a RouteEvent.</param> /// <returns>The constructed RouteEvent.</returns> private static RouteEdgeEvent CreateEdgeEvent(GameObject parent, FoxLib.Tpp.RouteSet.RouteEvent data, IHashManagerExtensions.TryUnhashDelegate <uint> getEventTypeName, GenerateEventNameDelegate generateEventName) { var component = parent.GetComponent <RouteEdgeEvent>(); if (component == null) { component = parent.AddComponent <RouteEdgeEvent>(); } // Dumb hack to support the event with no name. if (data.EventType == 3205930904) { component.Type = RouteEdgeEventType.EMPTY_STRING; } // Dumb hack to support lowercase move else if (data.EventType == 368586264) { component.Type = RouteEdgeEventType.LOWERCASE_move; } else { var eventNameContainer = getEventTypeName(data.EventType); if (eventNameContainer.WasNameUnhashed) { component.Type = RouteEdgeEvent.ParseEventType(eventNameContainer.UnhashedString); } else { component.Type = RouteEdgeEvent.ParseEventType(eventNameContainer.Hash.ToString()); } } component.Name = generateEventName(RouteEdgeEvent.EventTypeToString(component.Type)); component.Params = data.Params.Cast <uint>().ToList(); component.Snippet = data.Snippet; return(component); }
/// <summary> /// Create a RouteNodeEvent. /// </summary> /// <param name="parent">GameObject parent of the RouteEvent.</param> /// <param name="data">Parameters of the RouteEvent.</param> /// <param name="getEventTypeName">Function to get the name of the RouteEvent's type.</param> /// <param name="generateEventName">Function to generate a name for a RouteEvent.</param> /// <returns>The constructed RouteEvent.</returns> private static RouteNodeEvent CreateNodeEvent(GameObject parent, FoxLib.Tpp.RouteSet.RouteEvent data, IHashManagerExtensions.TryUnhashDelegate <uint> getEventTypeName, GenerateEventNameDelegate generateEventName) { var component = parent.GetComponent <RouteNodeEvent>(); if (component == null) { component = parent.AddComponent <RouteNodeEvent>(); } var eventNameContainer = getEventTypeName(data.EventType); if (eventNameContainer.WasNameUnhashed) { component.Type = RouteNodeEvent.ParseEventType(eventNameContainer.UnhashedString); } else { component.Type = RouteNodeEvent.ParseEventType(eventNameContainer.Hash.ToString()); } component.Name = generateEventName(RouteNodeEvent.EventTypeToString(component.Type)); component.Params = data.Params.Cast <uint>().ToList(); component.Snippet = data.Snippet; return(component); }
/// <summary> /// Registers a route event instance. /// </summary> /// <param name="data">Raw data associated with the event.</param> /// <param name="owner">GameObject for the event to attach to.</param> /// <param name="createEvent">Function to create a new event.</param> /// <returns>The new, registered route event instance.</returns> public RouteEvent RegisterRouteEvent(FoxLib.Tpp.RouteSet.RouteEvent data, GameObject owner, CreateEventDelegate createEvent) { RouteEvent eventInstance = createEvent(owner, data); return(eventInstance); }