/// <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); }
/// <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())); }