public static void LoadSelectedAvatarsTxt() { for (int i = 0; i < Selection.gameObjects.Length; i++) { var selectedTransform = Selection.gameObjects[i].transform; var avatar = selectedTransform.GetComponent <UMAAvatarBase>(); while (avatar == null && selectedTransform.parent != null) { selectedTransform = selectedTransform.parent; avatar = selectedTransform.GetComponent <UMAAvatarBase>(); } if (avatar != null) { var path = EditorUtility.OpenFilePanel("Load serialized Avatar", "Assets", "txt"); if (path.Length != 0) { var asset = ScriptableObject.CreateInstance <UMATextRecipe>(); asset.recipeString = UMAFileUtils.ReadAllText(path); avatar.Load(asset); Destroy(asset); } } } }
private static void CreateDNAHelperCode(Type dnaType, string destination, string formatString, CodeGenTemplate[] templates) { var scriptPath = FindPathFor(dnaType, destination); var customData = new Dictionary <string, object>(); customData.Add("ClassName", dnaType.Name); customData.Add("FieldName", ""); customData.Add("Index", 0); int index = 0; var fields = dnaType.GetFields(); customData.Add("DnaEntries", fields.Length); foreach (var field in fields) { customData["FieldName"] = field.Name; customData["Index"] = index; foreach (var template in templates) { template.Append(customData); } index++; } foreach (var template in templates) { customData.Add(template.Name, template.sb); } UMAFileUtils.WriteAllText(scriptPath, String.Format(customFormatter, formatString, customData)); }
static void ExportSelectionToSeparate() { for (int i = 0; i < Selection.gameObjects.Length; i++) { var selectedTransform = Selection.gameObjects[i].transform; var avatar = selectedTransform.GetComponent <UMAAvatarBase>(); while (avatar == null && selectedTransform.parent != null) { selectedTransform = selectedTransform.parent; avatar = selectedTransform.GetComponent <UMAAvatarBase>(); } if (avatar != null) { var path = EditorUtility.SaveFilePanel("Save obj static mesh", "Assets", avatar.name + ".obj", "obj"); if (path.Length != 0) { var staticMesh = new Mesh(); avatar.umaData.myRenderer.BakeMesh(staticMesh); UMAFileUtils.WriteAllText(path, MeshToString(staticMesh, avatar.umaData.myRenderer.sharedMaterials)); Object.Destroy(staticMesh); } } } }
static void CreateDNAHelperCode() { var destDir = Path.Combine(Directory.GetCurrentDirectory(), "Assets/Character/UMA/UMA_Generated/DnaHelpers"); var sourceDir = Path.Combine(Directory.GetCurrentDirectory(), "Assets/Character/UMA/Editor/Templates"); var baseTemplate = UMAFileUtils.ReadAllText(Path.Combine(sourceDir, "UmaDna_Template.cs.txt")); var pageTemplate = UMAFileUtils.ReadAllText(Path.Combine(sourceDir, "UmaDnaChild_Template.cs.txt")); var templates = CodeGenTemplate.ParseTemplates(sourceDir, baseTemplate); var pageTemplates = CodeGenTemplate.ParseTemplates(sourceDir, pageTemplate); customFormatter = new DictionaryCustomFormatter(); CodeGenTemplate.formatter = customFormatter; var baseDnaType = typeof(UMADnaBase); var customData = new Dictionary <string, object>(); customData.Add("ClassName", ""); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var dnaType in assembly.GetTypes()) { if (DerivesFrom(dnaType, baseDnaType)) { if (dnaType.Name == "UMADna") { continue; } customData["ClassName"] = dnaType.Name; foreach (var template in pageTemplates) { template.sb.Length = 0; } foreach (var template in templates) { template.Append(customData); } CreateDNAHelperCode(dnaType, destDir, pageTemplate, pageTemplates); } } } foreach (var template in templates) { customData.Add(template.Name, template.sb); } CreateBaseDNAExtension(destDir, baseTemplate, customData); AssetDatabase.Refresh(); }
private static string FindPathFor(string dnaTypeName, string destination) { var scriptPath = Path.Combine(destination, dnaTypeName + "_Generated.cs"); var matchingScripts = AssetDatabase.FindAssets("t:MonoScript " + dnaTypeName); var desiredSuffix = "/" + dnaTypeName + ".cs"; foreach (var guid in matchingScripts) { var scripts = AssetDatabase.GUIDToAssetPath(guid); if (scripts.EndsWith(desiredSuffix, StringComparison.InvariantCultureIgnoreCase)) { scriptPath = scripts.Insert(scripts.Length - 3, "_Generated"); break; } } UMAFileUtils.EnsurePath(Path.GetDirectoryName(scriptPath)); return(scriptPath); }
private static void CreateBaseDNAExtension(string destination, string formatString, Dictionary <string, object> customData) { UMAFileUtils.WriteAllText(FindPathFor("UMADna", destination), String.Format(customFormatter, formatString, customData)); }