Ejemplo n.º 1
0
        /// <summary>
        /// Create a RouteNode.
        /// </summary>
        /// <param name="data">Parameters of the RouteNode.</param>
        /// <param name="routeSet">RouteSet the RouteNode belongs to.</param>
        /// <param name="route">Route the RouteNode belongs to.</param>
        /// <param name="name">Name of the RouteNode.</param>
        /// <param name="createEvent">Function to create a RouteEvent.</param>
        /// <returns>The constructed RouteNode.</returns>
        private static RouteNode Create(FoxLib.Tpp.RouteSet.RouteNode data, RouteSet routeSet, Route route, string name, CreateEventDelegate createNodeEvent, CreateEventDelegate createEdgeEvent)
        {
            var gameObject    = new GameObject(name);
            var nodeComponent = gameObject.AddComponent <RouteNode>();

            gameObject.transform.position = FoxUtils.FoxToUnity(data.Position);
            gameObject.transform.SetParent(route.transform);

            // TODO: Remove? We don't share event instances anymore.
            routeSet.RegisterRouteEvent(data.EdgeEvent, gameObject, createEdgeEvent);

            nodeComponent.Events = (from @event in data.Events
                                    select routeSet.RegisterRouteNodeEvent(@event, gameObject.transform, createNodeEvent))
                                   .ToList();

            return(nodeComponent);
        }