Skip to content

Commit

Permalink
feat: add menu option to disable "modular avatar information" display (
Browse files Browse the repository at this point in the history
…#833)

* feat: add menu option to disable "modular avatar information" display

Closes: #815
  • Loading branch information
bdunderscore committed Apr 22, 2024
1 parent 0fc9f5d commit 926ea25
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 1 deletion.
40 changes: 40 additions & 0 deletions Editor/ParamsUsage/ParamsUsagePrefs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System;
using nadena.dev.modular_avatar.ui;
using UnityEditor;
using UnityEngine.Serialization;

namespace nadena.dev.modular_avatar.core.editor
{
#if UNITY_2022_3_OR_NEWER
[FilePath("modular-avatar/ParamsUsagePrefs.asset", FilePathAttribute.Location.PreferencesFolder)]
internal sealed class ParamsUsagePrefs : ScriptableSingleton<ParamsUsagePrefs>
{
public static event Action<bool> OnChange_EnableInfoMenu;

[FormerlySerializedAs("EnableInfoMenu")] public bool enableInfoMenu = true;

[MenuItem(UnityMenuItems.TopMenu_EnableInfo, false, UnityMenuItems.TopMenu_EnableInfoOrder)]
private static void Menu_EnableInfo()
{
ParamsUsagePrefs.instance.enableInfoMenu = !ParamsUsagePrefs.instance.enableInfoMenu;
Menu.SetChecked(UnityMenuItems.TopMenu_EnableInfo, ParamsUsagePrefs.instance.enableInfoMenu);
ParamsUsagePrefs.instance.Save(true);

OnChange_EnableInfoMenu?.Invoke(ParamsUsagePrefs.instance.enableInfoMenu);
}

[InitializeOnLoadMethod]
private static void Initialize()
{
Menu.SetChecked(UnityMenuItems.TopMenu_EnableInfo, ParamsUsagePrefs.instance.enableInfoMenu);
}
}
#else
internal sealed class ParamsUsagePrefs
{
public static ParamsUsagePrefs instance => new ParamsUsagePrefs();
public static event Action<bool> OnChange_EnableInfoMenu;
public bool enableInfoMenu => false;
}
#endif
}
3 changes: 3 additions & 0 deletions Editor/ParamsUsage/ParamsUsagePrefs.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 19 additions & 1 deletion Editor/ParamsUsage/ParamsUsageUI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,19 @@ public ParamsUsageUI()
(self) => self.OnLanguageChangedCallback());
}

private void OnChange_EnableState(bool enableState)
{
if (_editor != null)
{
Rebuild();
}
}

private void OnLanguageChangedCallback()
{
if (_editor != null)
{
BuildContent();
Rebuild();
}
}

Expand All @@ -66,19 +74,29 @@ private void OnDetach(DetachFromPanelEvent evt)
Object.DestroyImmediate(_editor);
_editor = null;
}

ParamsUsagePrefs.OnChange_EnableInfoMenu -= OnChange_EnableState;
}

private void OnAttach(AttachToPanelEvent evt)
{
if (_recursing) return;

Rebuild();

ParamsUsagePrefs.OnChange_EnableInfoMenu += OnChange_EnableState;
}

private void Rebuild()
{
if (parent == null) return;

if (!ParamsUsagePrefs.instance.enableInfoMenu)
{
Clear();
return;
}

SetRedrawSensor();

if (_gameObjectEditorElement?.parent != parent)
Expand Down
4 changes: 4 additions & 0 deletions Runtime/UI/UnityMenuItems.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@ internal class UnityMenuItems
internal const string TopMenu_EditModeBoneSync = "Tools/Modular Avatar/Sync Bones in Edit Mode";
internal const int TopMenu_EditModeBoneSyncOrder = 100;

internal const string TopMenu_EnableInfo = "Tools/Modular Avatar/Show Modular Avatar Information";
internal const int TopMenu_EnableInfoOrder = 101;

internal const string TopMenu_ManualBakeAvatar = "Tools/Modular Avatar/Manual Bake Avatar";
internal const int TopMenu_ManualBakeAvatarOrder = 1000;

internal const string TopMenu_ReloadLocalizations = "Tools/Modular Avatar/Reload Localizations";
internal const int TopMenu_ReloadLocalizationsOrder = 1001;

}
}

0 comments on commit 926ea25

Please sign in to comment.