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--; } }