mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-01-04 13:45:04 +08:00
3b067e4664
* Disable compilation for use in Unity 6 (6000.0.20f1): - Do not compile some classes and code paths in non-VRChat projects. - This has been tested in Unity 6 (6000.0.20f1). * Fix hide internal components in Unity 6: - [AddComponentMenu("")] does not work in Unity 6. - Replace it with [AddComponentMenu("/")] - This alternative is confirmed to also work in Unity 2022. --------- Co-authored-by: Haï~ <hai-vr@users.noreply.github.com> Co-authored-by: bd_ <bd_@nadena.dev>
67 lines
2.1 KiB
C#
67 lines
2.1 KiB
C#
#if MA_VRCSDK3_AVATARS
|
|
using nadena.dev.modular_avatar.ui;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using VRC.SDK3.Avatars.ScriptableObjects;
|
|
|
|
namespace nadena.dev.modular_avatar.core.editor
|
|
{
|
|
internal static class ToggleCreatorShortcut
|
|
{
|
|
[MenuItem(UnityMenuItems.GameObject_CreateToggle, false, UnityMenuItems.GameObject_CreateToggleOrder)]
|
|
private static void CreateToggle()
|
|
{
|
|
var selected = Selection.activeGameObject;
|
|
if (selected == null) return;
|
|
|
|
var avatarRoot = RuntimeUtil.FindAvatarTransformInParents(selected.transform);
|
|
if (avatarRoot == null) return;
|
|
|
|
bool createInstaller = true;
|
|
Transform parent = avatarRoot;
|
|
|
|
try
|
|
{
|
|
var selectedMenuItem = selected.GetComponent<ModularAvatarMenuItem>();
|
|
if (selectedMenuItem?.Control?.type == VRCExpressionsMenu.Control.ControlType.SubMenu
|
|
&& selectedMenuItem.MenuSource == SubmenuSource.Children
|
|
)
|
|
{
|
|
parent = selected.transform;
|
|
createInstaller = false;
|
|
}
|
|
}
|
|
catch (MissingComponentException)
|
|
{
|
|
// ignore
|
|
}
|
|
|
|
var toggle = new GameObject("New Toggle");
|
|
|
|
var objToggle = toggle.AddComponent<ModularAvatarObjectToggle>();
|
|
|
|
toggle.transform.SetParent(parent, false);
|
|
|
|
var mami = toggle.AddComponent<ModularAvatarMenuItem>();
|
|
mami.InitSettings();
|
|
mami.Control = new VRCExpressionsMenu.Control
|
|
{
|
|
type = VRCExpressionsMenu.Control.ControlType.Toggle,
|
|
name = "New Toggle",
|
|
value = 1,
|
|
};
|
|
|
|
if (createInstaller)
|
|
{
|
|
toggle.AddComponent<ModularAvatarMenuInstaller>();
|
|
}
|
|
|
|
Selection.activeGameObject = toggle;
|
|
EditorGUIUtility.PingObject(objToggle);
|
|
|
|
|
|
Undo.RegisterCreatedObjectUndo(toggle, "Create Toggle");
|
|
}
|
|
}
|
|
}
|
|
#endif |