Пример #1
0
    /// <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);
    }
Пример #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 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);
        }
Пример #4
0
    /// <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);
    }