/// <summary> /// Get the StrCode32 hash for an edge event type. /// </summary> /// <param name="data">Event whose type to hash.</param> /// <param name="hashManager">Hash manager instance.</param> /// <returns>StrCode32 hash of the event type</returns> private static uint GetEventTypeHash(RouteEdgeEvent data, StrCode32HashManager hashManager) { if (data.TreatTypeAsHash) { return(uint.Parse(RouteEdgeEvent.EventTypeToString(data.Type))); } return(hashManager.GetHash(RouteEdgeEvent.EventTypeToString(data.Type))); }
/// <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); }