Example #1
0
    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);
                }
            }
        }
    }
Example #2
0
        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));
        }
Example #3
0
    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);
                }
            }
        }
    }
Example #4
0
        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();
        }
Example #5
0
        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);
        }
Example #6
0
 private static void CreateBaseDNAExtension(string destination, string formatString, Dictionary <string, object> customData)
 {
     UMAFileUtils.WriteAllText(FindPathFor("UMADna", destination), String.Format(customFormatter, formatString, customData));
 }