Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
 /// <summary>
 /// Create a function to create RouteEdgeEvents.
 /// </summary>
 /// <param name="getEventTypeName"></param>
 /// <param name="generateEventName"></param>
 /// <returns></returns>
 public static CreateEventDelegate CreateEdgeEventFactory(IHashManagerExtensions.TryUnhashDelegate <uint> getEventTypeName, GenerateEventNameDelegate generateEventName)
 {
     return((parent, data) => CreateEdgeEvent(parent, data, getEventTypeName, generateEventName));
 }