示例#1
0
        /// <summary>
        /// Import a .frt file.
        /// </summary>
        /// <param name="ctx"></param>
        public override void OnImportAsset(AssetImportContext ctx)
        {
            InitializeDictionaries();

            FoxLib.Tpp.RouteSet.RouteSet routeSet = null;

            using (var reader = new BinaryReader(new FileStream(ctx.assetPath, FileMode.Open), FoxLib.Tpp.RouteSet.getEncoding()))
            {
                Action <int> skipBytes     = numberOfBytes => SkipBytes(reader, numberOfBytes);
                var          readFunctions = new FoxLib.Tpp.RouteSet.ReadFunctions(reader.ReadSingle, reader.ReadUInt16, reader.ReadUInt32, reader.ReadInt32, reader.ReadBytes, skipBytes);
                routeSet = FoxLib.Tpp.RouteSet.Read(readFunctions);
            }

            var getRouteName     = routeNameHashManager.MakeUnhashFunc();
            var getEventTypeName = eventTypeHashManager.MakeUnhashFunc();

            var eventIdGenerator = new EventIdGenerator();

            EventFactory.GenerateEventNameDelegate generateEventName = eventType => GenerateEventName(eventType, eventIdGenerator);

            var buildNodeEvent = EventFactory.CreateNodeEventFactory(getEventTypeName, generateEventName);
            var buildEdgeEvent = EventFactory.CreateEdgeEventFactory(getEventTypeName, generateEventName);

            var buildNode     = NodeFactory.CreateFactory(buildNodeEvent, buildEdgeEvent);
            var buildRoute    = RouteFactory.CreateFactory(buildNode, getRouteName, GenerateNodeName);
            var buildRouteSet = RouteSetFactory.CreateFactory(buildRoute);

            var routeSetGameObject = buildRouteSet.Invoke(routeSet, Path.GetFileNameWithoutExtension(ctx.assetPath));

            routeSetGameObject.IsReadOnly = true;

            ctx.AddObjectToAsset(routeSetGameObject.name, routeSetGameObject.gameObject);
            ctx.SetMainObject(routeSetGameObject.gameObject);
        }
示例#2
0
        /// <summary>
        /// Create a RouteSet.
        /// </summary>
        /// <param name="data">Parameters of the RouteSet to construct.</param>
        /// <param name="createRoute">Function to create a Route.</param>
        /// <returns>The constructed RouteSet.</returns>
        private static FoxLib.Tpp.RouteSet.RouteSet Create(RouteSet data, CreateRouteDelegate createRoute)
        {
            var routes = from route in data.Routes
                         select createRoute(route);

            var routeset = new FoxLib.Tpp.RouteSet.RouteSet(routes.ToArray());

            return(routeset);
        }
示例#3
0
        /// <summary>
        /// Create a RouteSet.
        /// </summary>
        /// <param name="data">Parameters of the RouteSet to create.</param>
        /// <param name="name">Name of the RouteSet to create.</param>
        /// <param name="createRoute">Function to create a Route.</param>
        /// <returns>The constructed RouteSet.</returns>
        private static RouteSet Create(FoxLib.Tpp.RouteSet.RouteSet data, string name, CreateRouteDelegate createRoute)
        {
            var gameObject = new GameObject(name);

            var routeSetComponent = gameObject.AddComponent <RouteSet>();

            routeSetComponent.Routes = (from route in data.Routes
                                        select createRoute(route, routeSetComponent))
                                       .ToList();

            foreach (var routeGameObject in routeSetComponent.Routes)
            {
                routeGameObject.transform.SetParent(gameObject.transform);
            }

            return(routeSetComponent);
        }