void MenuBar(Rect rect) { #if UMA_ADDRESSABLES if (AddressablesMenu.GetItemCount() == 1) { SetupMenus(); } #endif Rect MenuRect = new Rect(rect); MenuRect.width = 60; if (EditorGUI.DropdownButton(MenuRect, new GUIContent("File"), FocusType.Passive, EditorStyles.toolbarDropDown)) { FileMenu.DropDown(new Rect(MenuRect)); } MenuRect.x += 60; MenuRect.width = 100; if (EditorGUI.DropdownButton(MenuRect, new GUIContent("Addressables"), FocusType.Passive, EditorStyles.toolbarDropDown)) { AddressablesMenu.DropDown(new Rect(MenuRect)); } MenuRect.x += 100; MenuRect.width = 70; if (EditorGUI.DropdownButton(MenuRect, new GUIContent("Items"), FocusType.Passive, EditorStyles.toolbarDropDown)) { ItemsMenu.DropDown(new Rect(MenuRect)); } MenuRect.x += 70; MenuRect.width = 100; if (GUI.Button(MenuRect, new GUIContent("Collapse All"), EditorStyles.toolbarButton)) { treeView.CollapseAll(); } MenuRect.x += 100; MenuRect.width = 100; if (GUI.Button(MenuRect, new GUIContent("Expand All"), EditorStyles.toolbarButton)) { treeView.ExpandAll(); } MenuRect.x += 100; MenuRect.width = 100; bool newShowUtilities = GUI.Toggle(MenuRect, ShowUtilities, "Show Utilities", EditorStyles.toolbarButton); if (newShowUtilities != ShowUtilities) { ShowUtilities = newShowUtilities; Repaint(); } Rect FillRect = new Rect(rect); FillRect.x += 530; FillRect.width -= 530; GUI.Box(FillRect, "", EditorStyles.toolbar); if (ShowUtilities) { rect.y += rect.height; GUI.Box(rect, ""); GUILayout.BeginArea(rect); GUILayout.BeginHorizontal(); if (GUILayout.Button("Apply UMAMaterials to Selection", GUILayout.Width(259))) { UpdateMaterials(); AssetDatabase.SaveAssets(); } Replacement = EditorGUILayout.ObjectField("", Replacement, typeof(UMAMaterial), false, GUILayout.Width(250)) as UMAMaterial; GUILayout.EndHorizontal(); GUILayout.EndArea(); } }
private void SetupMenus() { _FileMenu = new GenericMenu(); _AddressablesMenu = new GenericMenu(); _ItemsMenu = new GenericMenu(); AddPlugins(GetAddressablePlugins()); // *********************************************************************************** // File Menu items // *********************************************************************************** AddMenuItemWithCallback(FileMenu, "Rebuild From Project", () => { UAI.Clear(); UAI.AddEverything(false); Resources.UnloadUnusedAssets(); m_Initialized = false; Repaint(); }); AddMenuItemWithCallback(FileMenu, "Rebuild From Project (include text assets)", () => { UAI.Clear(); UAI.AddEverything(true); Resources.UnloadUnusedAssets(); m_Initialized = false; Repaint(); }); AddMenuItemWithCallback(FileMenu, "Repair and remove invalid items", () => { UAI.RepairAndCleanup(); Resources.UnloadUnusedAssets(); m_Initialized = false; Repaint(); EditorUtility.DisplayDialog("Repair", "AssetIndex successfully repaired", "OK"); }); /* AddMenuItemWithCallback(FileMenu, "Add Build refs to all non-addressables", () => * { * UAI.AddReferences(); * RecountTypes(); * Resources.UnloadUnusedAssets(); * Repaint(); * }); * AddMenuItemWithCallback(FileMenu, "Clear build refs from all items", () => * { * UAI.ClearReferences(); * Resources.UnloadUnusedAssets(); * RecountTypes(); * Repaint(); * }); */ FileMenu.AddSeparator(""); AddMenuItemWithCallback(FileMenu, "Toggle Utilities Panel", () => { ShowUtilities = !ShowUtilities; Repaint(); }); FileMenu.AddSeparator(""); AddMenuItemWithCallback(FileMenu, "Empty Index", () => { UAI.Clear(); m_Initialized = false; Repaint(); }); #if UMA_ADDRESSABLES foreach (IUMAAddressablePlugin plugin in addressablePlugins) { AddMenuItemWithCallbackParm(AddressablesMenu, "Generators/" + plugin.Menu, (object o) => { IUMAAddressablePlugin addrplug = o as IUMAAddressablePlugin; UAI.GenerateAddressables(addrplug); Resources.UnloadUnusedAssets(); m_Initialized = false; Repaint(); }, plugin); } AddressablesMenu.AddSeparator("Generators/"); // *********************************************************************************** // Addressables Menu items // *********************************************************************************** AddMenuItemWithCallback(AddressablesMenu, "Generators/Generate Groups (optimized)", () => { UAI.CleanupAddressables(); UAI.GenerateAddressables(); Resources.UnloadUnusedAssets(); m_Initialized = false; Repaint(); }); /* AddMenuItemWithCallback(AddressablesMenu, "Generators/Generate Shared Group (fast)", () => * { * UAI.CleanupAddressables(); * UAI.GenerateSingleGroup(); * Resources.UnloadUnusedAssets(); * m_Initialized = false; * Repaint(); * }); * * AddMenuItemWithCallback(AddressablesMenu, "Generators/Generate Shared Group (incl recipes)", () => * { * UAI.CleanupAddressables(); * UAI.GenerateSingleGroup(true); * Resources.UnloadUnusedAssets(); * m_Initialized = false; * Repaint(); * }); */ AddMenuItemWithCallback(AddressablesMenu, "Remove Addressables", () => { UAI.CleanupAddressables(false, true); m_Initialized = false; Repaint(); }); AddMenuItemWithCallback(AddressablesMenu, "Delete Empty Groups", () => { UAI.CleanupAddressables(true); }); /* * AddMenuItemWithCallback(AddressablesMenu, "Force Add Refs (Bad!!)", () => * { * UAI.AddReferences(true); * RecountTypes(); * Resources.UnloadUnusedAssets(); * Repaint(); * }); */ AddMenuItemWithCallback(AddressablesMenu, "Remove Orphaned Slots", () => { if (EditorUtility.DisplayDialog("Warning!", "You *must* build the addressable groups, and mark any slots you want to keep as 'keep' before running this!", "OK", "Cancel")) { UAI.CleanupOrphans(typeof(SlotDataAsset)); m_Initialized = false; Repaint(); } }); AddMenuItemWithCallback(AddressablesMenu, "Remove Orphaned Overlays", () => { if (EditorUtility.DisplayDialog("Warning!", "You *must* build the addressable groups, and mark any slots you want to keep as 'keep' before running this!", "OK", "Cancel")) { UAI.CleanupOrphans(typeof(OverlayDataAsset)); m_Initialized = false; Repaint(); } }); #endif // *********************************************************************************** // Items Menu items // *********************************************************************************** AddMenuItemWithCallback(ItemsMenu, "Select All", () => { var treeElements = new List <AssetTreeElement>(); TreeElementUtility.TreeToList <AssetTreeElement>(treeView.treeModel.root, treeElements); foreach (AssetTreeElement ate in treeElements) { ate.Checked = true; } treeView.RecalcTypeChecks(); Repaint(); return; }); AddMenuItemWithCallback(ItemsMenu, "Clear Selection", () => { var treeElements = new List <AssetTreeElement>(); TreeElementUtility.TreeToList <AssetTreeElement>(treeView.treeModel.root, treeElements); foreach (AssetTreeElement ate in treeElements) { ate.Checked = false; } treeView.RecalcTypeChecks(); Repaint(); return; }); foreach (RaceData rc in UAI.GetAllAssets <RaceData>()) { if (rc != null) { AddMenuItemWithCallbackParm(ItemsMenu, "Select Slots + Overlays By Race/" + rc.raceName, SelectByRace, rc); AddMenuItemWithCallbackParm(ItemsMenu, "Select Slots By Race/" + rc.raceName, SelectSlotsByRace, rc); AddMenuItemWithCallbackParm(ItemsMenu, "Select Overlays By Race/" + rc.raceName, SelectOverlaysByRace, rc); } } ItemsMenu.AddSeparator(""); AddMenuItemWithCallback(ItemsMenu, "Add Keep Flag to Selected Items", () => { MarkKeep(true); Repaint(); return; }); AddMenuItemWithCallback(ItemsMenu, "Clear Keep Flag from Selected Items", () => { MarkKeep(false); Repaint(); return; }); ItemsMenu.AddSeparator(""); AddMenuItemWithCallback(ItemsMenu, "Remove Selected", () => { RemoveSelected(); m_Initialized = false; Repaint(); return; }); AddMenuItemWithCallback(ItemsMenu, "Force Selected Items to Save", () => { ForceSave(); m_Initialized = false; Repaint(); return; }); }