示例#1
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            AnimatorOverrideController overrideController = this.target as AnimatorOverrideController;

            if (this.quickSetupFlagsFoldOut = EditorGUILayout.Foldout(this.quickSetupFlagsFoldOut, "Quick Setup"))
            {
                EditorGUI.indentLevel++;

                Dictionary <string, List <RuntimeAnimatorController> > qscs = new Dictionary <string, List <RuntimeAnimatorController> >();

                foreach (var controller in OverrideControllerToolsSettings.instance.quickSetupControllers)
                {
                    if (controller == null)
                    {
                        continue;
                    }

                    string folder = System.IO.Path.GetDirectoryName(AssetDatabase.GetAssetPath(controller)).Replace("\\", "/");
                    if (!qscs.ContainsKey(folder))
                    {
                        qscs[folder] = new List <RuntimeAnimatorController>();
                    }
                    qscs[folder].Add(controller);
                }
                foreach (var kvp in qscs)
                {
                    string folder = kvp.Key;
                    if (!this.quickSetupFolderFoldOuts.ContainsKey(folder))
                    {
                        this.quickSetupFolderFoldOuts[folder] = true;
                    }
                    if (this.quickSetupFolderFoldOuts[folder] = EditorGUILayout.Foldout(this.quickSetupFolderFoldOuts[folder], folder))
                    {
                        EditorGUI.indentLevel++;
                        foreach (var controller in kvp.Value)
                        {
                            string controllerName = controller.name;
                            foreach (var replace in OverrideControllerToolsSettings.instance.quickSetupControllerNameReplaces)
                            {
                                controllerName = controllerName.Replace(replace.oldValue, replace.newValue);
                            }
                            this.DrawButton(
                                true,
                                controllerName,
                                () => {
                                overrideController.runtimeAnimatorController = controller;
                                overrideController.CreateOverrideAnimations(overrideController.GetOverridesUnite().FindAll(cp => cp.Value == null).Select(cp => cp.Key).ToArray());
                            }
                                );
                        }
                        EditorGUI.indentLevel--;
                    }
                }
                EditorGUI.indentLevel--;
            }

            if (this.mainFoldOut = EditorGUILayout.Foldout(this.mainFoldOut, "Override Controller Tools"))
            {
                EditorGUI.indentLevel++;

                var      unSetupClips     = overrideController.GetOverridesUnite().FindAll(cp => cp.Value == null).Select(cp => cp.Key).ToArray();
                string[] unSetupClipsName = unSetupClips.Select(c => c.name).ToArray();
                this.DrawButton(
                    unSetupClipsName.Length > 0,
                    "Cteate Override Animations" + (unSetupClipsName.Length > 0 ? " (" + string.Join(", ", unSetupClipsName) + ")" : ""),
                    () => {
                    overrideController.CreateOverrideAnimations(unSetupClips);
                }
                    );
                List <AnimationClip> unusedClips = overrideController.GetUnusedAnimations();
                this.DrawButton(
                    unusedClips.Count > 0,
                    "Delete Unused Animations" + (unusedClips.Count > 0 ? " (" + string.Join(", ", unusedClips.Select(c => c.name).ToArray()) + ")" : ""),
                    () => {
                    foreach (AnimationClip clip in unusedClips)
                    {
                        Object.DestroyImmediate(clip, true);
                    }
                    AssetImporter assetImporter = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(overrideController));
                    assetImporter.SaveAndReimport();
                }
                    );
                this.DrawButton(
                    overrideController.runtimeAnimatorController != null,
                    "Export to Animator",
                    () => {
                    overrideController.ExportController();
                }
                    );
                if (this.hideFlagsFoldOut = EditorGUILayout.Foldout(this.hideFlagsFoldOut, "Set Include Animations Hide Flags"))
                {
                    EditorGUI.indentLevel++;
                    this.DrawButton(
                        true,
                        HideFlags.None.ToString(),
                        () => {
                        overrideController.SetAnimationsHideFlags(HideFlags.None);
                    }
                        );
                    this.DrawButton(
                        true,
                        HideFlags.HideInHierarchy.ToString(),
                        () => {
                        overrideController.SetAnimationsHideFlags(HideFlags.HideInHierarchy);
                    }
                        );
                    EditorGUI.indentLevel--;
                }
                if (this.moreFoldOut = EditorGUILayout.Foldout(this.moreFoldOut, "More..."))
                {
                    EditorGUI.indentLevel++;
                    string url = "http://u3d.as/U4e";
                    this.DrawButton(
                        true,
                        "Asset Inspector - " + url,
                        () => {
                        System.Diagnostics.Process.Start(url);
                    }
                        );
                    EditorGUI.indentLevel--;
                }
                EditorGUI.indentLevel--;
            }
        }
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            AnimatorOverrideController overrideController = target as AnimatorOverrideController;

            if (overrideController.runtimeAnimatorController)
            {
                return;
            }

            if (quickSetupFlagsFoldOut = EditorGUILayout.Foldout(quickSetupFlagsFoldOut, "Quick Setup"))
            {
                EditorGUI.indentLevel++;

                Dictionary <string, List <RuntimeAnimatorController> > quickSetupControllers = new Dictionary <string, List <RuntimeAnimatorController> >();

                foreach (var settings in AnimatorOverrideControllerQuickSetupSettings.assets)
                {
                    string displayName = string.IsNullOrEmpty(settings.name) ? settings.name : settings.name;
                    foreach (var controller in settings.controllers)
                    {
                        if (controller == null)
                        {
                            continue;
                        }

                        if (!quickSetupControllers.ContainsKey(displayName))
                        {
                            quickSetupControllers[displayName] = new List <RuntimeAnimatorController>();
                        }
                        quickSetupControllers[displayName].Add(controller);
                    }
                    foreach (var kvp in quickSetupControllers)
                    {
                        string folder = kvp.Key;
                        if (!quickSetupFolderFoldOuts.ContainsKey(folder))
                        {
                            quickSetupFolderFoldOuts[folder] = true;
                        }
                        if (quickSetupFolderFoldOuts[folder] = EditorGUILayout.Foldout(quickSetupFolderFoldOuts[folder], folder))
                        {
                            EditorGUI.indentLevel++;
                            foreach (var controller in kvp.Value)
                            {
                                string controllerName = controller.name;
                                DrawButton(
                                    true,
                                    controllerName,
                                    () =>
                                {
                                    var overrides = new List <KeyValuePair <AnimationClip, AnimationClip> >(overrideController.overridesCount);
                                    overrideController.runtimeAnimatorController = controller;
                                    overrideController.GetOverrides(overrides);
                                    overrideController.CreateOverrideAnimations(overrides.Where(cp => cp.Value == null).Select(cp => cp.Key).ToArray(), settings);
                                }
                                    );
                            }
                            EditorGUI.indentLevel--;
                        }
                    }
                }
                EditorGUI.indentLevel--;
            }
        }