Esempio n. 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);
        }
Esempio n. 2
0
 /// <summary>
 /// Generates a route event name.
 /// </summary>
 /// <param name="eventType">Type of the event.</param>
 /// <param name="idGenerator">ID number generator.</param>
 /// <returns>A new route event name.</returns>
 public static string GenerateEventName(string eventType, EventIdGenerator idGenerator)
 {
     return(GenerateEventName(eventType, idGenerator.Generate()));
 }