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)); }
public static void Import(ImporterPathManager pathManager, FileInfo outfitConfFile, DirectoryInfo contentDestDirectory) { string name = outfitConfFile.GetNameWithoutExtension(); var outfitsDir = contentDestDirectory.Subdirectory("outfits"); var destinationFile = outfitsDir.File(name + ".dat"); if (destinationFile.Exists) { return; } string json = outfitConfFile.ReadAllText(); var proxy = JsonConvert.DeserializeObject <OutfitJsonProxy>(json); var items = proxy.items .Select(itemProxy => { ImportProperties.Load(pathManager, itemProxy.figure); //verify that that a figure with this name exists return(new Outfit.Item(itemProxy.figure, itemProxy.label, itemProxy.isInitiallyVisible)); }) .ToList(); List <Outfit.Fabric> fabrics = proxy.fabrics? .Select(entry => { var label = entry.Key; var materialSetsByFigureName = entry.Value; //verify that the material set for each figure exists foreach (var entry2 in materialSetsByFigureName) { var figureName = entry2.Key; var materialSetName = entry2.Value; var figureConfDir = pathManager.GetConfDirForFigure(figureName); var materialSetsConfs = MaterialSetImportConfiguration.Load(figureConfDir); materialSetsConfs.Where(conf => conf.name == materialSetName).Single(); } return(new Outfit.Fabric(label, materialSetsByFigureName)); }) .ToList(); var outfit = new Outfit(proxy.label, items, fabrics); outfitsDir.CreateWithParents(); Persistance.Save(destinationFile, outfit); }
public static ImportProperties Load(ImporterPathManager pathManager, string figureName) { JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error }; string json = pathManager.GetConfDirForFigure(figureName).File("import-properties.json").ReadAllText(); JsonProxy proxy = JsonConvert.DeserializeObject <JsonProxy>(json, settings); UrisJsonProxy urisProxy = proxy.uris; var uris = new FigureUris( urisProxy.basePath, urisProxy.documentName, urisProxy.geometryId, urisProxy.rootNodeId, urisProxy.skinBindingId); return(new ImportProperties(uris, proxy.hdCorrectionInitialValue)); }
public static SurfaceProperties Load(ImporterPathManager pathManager, Figure figure) { JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error }; string json = pathManager.GetConfDirForFigure(figure.Name).File("surface-properties.json").ReadAllText(); JsonProxy proxy = JsonConvert.DeserializeObject <JsonProxy>(json, settings); int subdivisionLevel = proxy.subdivisionLevel; string[] surfaceNames = figure.Geometry.SurfaceNames; Dictionary <string, int> surfaceNameToIdx = Enumerable.Range(0, surfaceNames.Length) .ToDictionary(idx => surfaceNames[idx], idx => idx); int[] renderOrder; if (proxy.renderOrder == null) { renderOrder = new int[] { }; } else { renderOrder = proxy.renderOrder.Select(surfaceName => surfaceNameToIdx[surfaceName]).ToArray(); } float[] opacities = surfaceNames.Select(name => proxy.defaultOpacity).ToArray(); if (proxy.opacities != null) { foreach (var entry in proxy.opacities) { opacities[surfaceNameToIdx[entry.Key]] = entry.Value; } } bool precomputeScattering = proxy.precomputeScattering; string materialSetForOpacities = proxy.materialSetForOpacities; return(new SurfaceProperties(subdivisionLevel, renderOrder, opacities, precomputeScattering, materialSetForOpacities)); }