public static void DumpAllForFigure(ImportSettings settings, ContentFileLocator fileLocator, Device device, ShaderCache shaderCache, Figure parentFigure, Figure figure) { ShapeImportConfiguration[] configurations = ShapeImportConfiguration.Load(figure.Name); var baseConf = configurations.SingleOrDefault(conf => conf.name == "Base"); ShapeDumper dumper = new ShapeDumper(fileLocator, device, shaderCache, parentFigure, figure, baseConf); foreach (var conf in configurations) { if (!settings.ShouldImportShape(figure.Name, conf.name)) { continue; } dumper.Dump(conf); } dumper.DumpUnmorphed(); MaterialSetImportConfiguration[] materialSetImportConfigurations = MaterialSetImportConfiguration.Load(figure.Name); foreach (var materialSetConf in materialSetImportConfigurations) { if (!settings.ShouldImportMaterialSet(figure.Name, materialSetConf.name)) { continue; } if (!materialSetConf.useCustomOcclusion) { continue; } dumper.DumpOcclusionForMaterialSet(materialSetConf.name); } }
private void Run(string[] args) { ImportSettings settings; if (args.Length > 0 && args[0] == "release") { settings = ImportSettings.MakeReleaseSettings(); } else { settings = ImportSettings.MakeFromViewerInitialSettings(); } new UiImporter().Run(); new EnvironmentCubeGenerator().Run(settings); OutfitImporter.ImportAll(); var loader = new FigureRecipeLoader(objectLocator); FigureRecipe genesis3FemaleRecipe = loader.LoadFigureRecipe("genesis-3-female", null); FigureRecipe genitaliaRecipe = loader.LoadFigureRecipe("genesis-3-female-genitalia", genesis3FemaleRecipe); FigureRecipe genesis3FemaleWithGenitaliaRecipe = new FigureRecipeMerger(genesis3FemaleRecipe, genitaliaRecipe).Merge(); Figure genesis3FemaleWithGenitalia = genesis3FemaleWithGenitaliaRecipe.Bake(null); Figure parentFigure = genesis3FemaleWithGenitalia; List <Figure> childFigures = settings.FiguresToImport .Where(figureName => figureName != parentFigure.Name) .Select(figureName => loader.LoadFigureRecipe(figureName, genesis3FemaleRecipe).Bake(parentFigure)) .ToList(); List <Figure> figuresToDump = Enumerable.Repeat(parentFigure, 1) .Concat(childFigures) .ToList(); Console.WriteLine($"Dumping parent..."); AnimationDumper.DumpAllAnimations(parentFigure); var textureProcessorSharer = new TextureProcessorSharer(device, shaderCache, settings.CompressTextures); foreach (Figure figure in figuresToDump) { bool[] channelsToInclude = figure != parentFigure?ChannelShaker.MakeChannelsToIncludeFromShapes(figure) : null; Console.WriteLine($"Dumping {figure.Name}..."); SystemDumper.DumpFigure(figure, channelsToInclude); GeometryDumper.DumpFigure(figure); UVSetDumper.DumpFigure(figure); MaterialSetDumper.DumpAllForFigure(settings, device, shaderCache, fileLocator, objectLocator, figure, textureProcessorSharer); ShapeDumper.DumpAllForFigure(settings, fileLocator, device, shaderCache, parentFigure, figure); } textureProcessorSharer.Finish(); }
public FigureDumper(ContentFileLocator fileLocator, DsonObjectLocator objectLocator, Device device, ShaderCache shaderCache, Figure parentFigure, Figure figure, SurfaceProperties surfaceProperties, MaterialSetImportConfiguration baseMaterialSetImportConfiguration, ShapeImportConfiguration baseShapeImportConfiguration, ShapeDumper shapeDumper) { this.device = device; this.shaderCache = shaderCache; this.fileLocator = fileLocator; this.objectLocator = objectLocator; this.parentFigure = parentFigure; this.figure = figure; this.surfaceProperties = surfaceProperties; this.baseMaterialSetImportConfiguration = baseMaterialSetImportConfiguration; this.baseShapeImportConfiguration = baseShapeImportConfiguration; this.shapeDumper = shapeDumper; }
public FigureDumper LoadDumper(string figureName) { var figure = figureName == parentFigure.Name ? parentFigure : figureRecipeLoader.LoadFigureRecipe(figureName, parentFigureRecipe).Bake(parentFigure); var figureConfDir = pathManager.GetConfDirForFigure(figure.Name); MaterialSetImportConfiguration baseMaterialSetConfiguration = MaterialSetImportConfiguration.Load(figureConfDir).Single(conf => conf.name == "Base"); ShapeImportConfiguration baseShapeImportConfiguration = ShapeImportConfiguration.Load(figureConfDir).SingleOrDefault(conf => conf.name == "Base"); SurfaceProperties surfaceProperties = SurfacePropertiesJson.Load(pathManager, figure); ShapeDumper shapeDumper = new ShapeDumper(fileLocator, device, shaderCache, parentFigure, parentFaceTransparencies, figure, surfaceProperties, baseShapeImportConfiguration); return(new FigureDumper(fileLocator, objectLocator, device, shaderCache, parentFigure, figure, surfaceProperties, baseMaterialSetConfiguration, baseShapeImportConfiguration, shapeDumper)); }