public override void EditorContent(VisualElement element)
        {
            GUILayout.BeginHorizontal();

            GUILayout.BeginVertical();
            GUILayout.Label("Left Hand", GestureManagerStyles.GuiHandTitle);
            Manager.left = GestureManagerEditor.OnCheckBoxGuiHand(Manager, GestureHand.Left, Manager.left, position => 0);
            GUILayout.EndVertical();

            GUILayout.BeginVertical();
            GUILayout.Label("Right Hand", GestureManagerStyles.GuiHandTitle);
            Manager.right = GestureManagerEditor.OnCheckBoxGuiHand(Manager, GestureHand.Right, Manager.right, position => 0);
            GUILayout.EndVertical();

            GUILayout.EndHorizontal();

            GUILayout.Space(4);
            GmgLayoutHelper.Divisor(1);
            GUILayout.Label("Radial Menu", GestureManagerStyles.GuiHandTitle);

            GUILayout.Label("", GUILayout.ExpandWidth(true), GUILayout.Height(RadialMenu.Size));
            var extraSize = RadialMenu.Render(element, GmgLayoutHelper.GetLastRect(ref _rect)) - RadialMenu.Size;

            if (extraSize > 0)
            {
                GUILayout.Label("", GUILayout.ExpandWidth(true), GUILayout.Height(extraSize));
            }

            if (_radialDescription != null)
            {
                ShowRadialDescription();
            }
        }
        private void ManagerGui()
        {
            GUILayout.Label("Gesture Manager 3.1", GestureManagerStyles.TitleStyle);

            if (Manager.Module != null)
            {
                if (Manager.Module.IsInvalid())
                {
                    Manager.UnlinkModule();
                }

                GmgLayoutHelper.ObjectField("Controlling Avatar: ", Manager.Module.Avatar, newObject =>
                {
                    if (newObject)
                    {
                        var module = ModuleHelper.GetModuleForDescriptor(Manager, newObject.GetComponent <VRC.SDKBase.VRC_AvatarDescriptor>());
                        if (module == null || !module.IsValidDesc())
                        {
                            return;
                        }
                        Manager.SetModule(module);
                    }
                    else
                    {
                        Manager.UnlinkModule();
                    }
                });

                if (Manager.Module == null)
                {
                    return;
                }

                GUILayout.BeginHorizontal();
                Manager.Module.EditorHeader();
                GUILayout.EndHorizontal();

                Manager.Module.EditorContent(_root);
            }
            else
            {
                if (EditorApplication.isPlaying)
                {
                    if (Manager.enabled && Manager.gameObject.activeInHierarchy)
                    {
                        if (Manager.GetLastCheckedActiveDescriptors().Count == 0)
                        {
                            GUILayout.Label("There are no VRC_AvatarDescriptor on your scene. \nPlease consider adding one to your avatar before entering in PlayMode.",
                                            GestureManagerStyles.TextError);
                        }
                        else
                        {
                            var eligible    = Manager.GetLastCheckedActiveDescriptors().Where(module => module.IsValidDesc()).ToList();
                            var nonEligible = Manager.GetLastCheckedActiveDescriptors().Where(module => !module.IsValidDesc()).ToList();

                            GUILayout.Label(eligible.Count == 0 ? "No one of your VRC_AvatarDescriptor are eligible." : "Eligible VRC_AvatarDescriptors:", GestureManagerStyles.SubHeader);

                            foreach (var module in eligible)
                            {
                                EditorGUILayout.BeginHorizontal(new GUIStyle(GUI.skin.box));
                                GUILayout.Label(module.AvatarDescriptor.gameObject.name + ":", GUILayout.Width(Screen.width - 131));
                                if (GUILayout.Button("Set As Avatar", GUILayout.Width(100)))
                                {
                                    Manager.SetModule(module);
                                }
                                GUILayout.EndHorizontal();
                            }

                            if (eligible.Count != 0 && nonEligible.Count != 0)
                            {
                                GUILayout.Label("Non-Eligible VRC_AvatarDescriptors:", GestureManagerStyles.SubHeader);
                            }

                            foreach (var module in nonEligible)
                            {
                                GUILayout.BeginVertical(GestureManagerStyles.EmoteError);
                                GUILayout.Label(module.AvatarDescriptor.gameObject.name + ":");
                                foreach (var error in module.GetErrors())
                                {
                                    GUILayout.Label(error, GestureManagerStyles.TextError);
                                }
                                GUILayout.EndVertical();
                            }
                        }

                        if (GUILayout.Button("Check Again"))
                        {
                            CheckActiveDescriptors();
                        }
                    }
                    else
                    {
                        GUILayout.Label("I'm disabled!", GestureManagerStyles.TextError);
                    }
                }
                else
                {
                    GUILayout.Label("I'm an useless script if you aren't on play mode :D", GestureManagerStyles.MiddleStyle);
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();

                    GUI.enabled = !Manager.inWebClientRequest;
                    if (GUILayout.Button("Check For Updates", GUILayout.Width(130)))
                    {
                        CheckForUpdates();
                    }

                    GUILayout.Space(20);

                    if (GUILayout.Button("My Discord Name", GUILayout.Width(130)))
                    {
                        CheckDiscordName();
                    }
                    GUI.enabled = true;

                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                }
            }

            GUILayout.Label($"Script made by {BsxName}", GestureManagerStyles.BottomStyle);
        }
        public override void EditorContent(VisualElement element)
        {
            GUILayout.Space(15);

            GmgLayoutHelper.MyToolbar(ref _toolBar, new[]
            {
                new GmgLayoutHelper.GmgToolbarRow("Gestures", () =>
                {
                    if (Manager.emote != 0 || Manager.onCustomAnimation)
                    {
                        GUILayout.BeginHorizontal(GestureManagerStyles.EmoteError);
                        GUILayout.Label("Gesture doesn't work while you're playing an emote!");
                        if (GUILayout.Button("Stop!", GestureManagerStyles.GuiGreenButton))
                        {
                            Manager.StopCurrentEmote();
                        }

                        GUILayout.EndHorizontal();
                    }

                    GUILayout.BeginHorizontal();

                    GUILayout.BeginVertical();
                    GUILayout.Label("Left Hand", GestureManagerStyles.GuiHandTitle);
                    Manager.left = GestureManagerEditor.OnCheckBoxGuiHand(Manager, GestureHand.Left, Manager.left, position => 0);
                    GUILayout.EndVertical();

                    GUILayout.BeginVertical();
                    GUILayout.Label("Right Hand", GestureManagerStyles.GuiHandTitle);
                    Manager.right = GestureManagerEditor.OnCheckBoxGuiHand(Manager, GestureHand.Right, Manager.right, position => 0);
                    GUILayout.EndVertical();

                    GUILayout.EndHorizontal();
                }),
                new GmgLayoutHelper.GmgToolbarRow("Emotes", () =>
                {
                    GUILayout.Label("Emotes", GestureManagerStyles.GuiHandTitle);

                    GestureManagerEditor.OnEmoteButton(Manager, 1);
                    GestureManagerEditor.OnEmoteButton(Manager, 2);
                    GestureManagerEditor.OnEmoteButton(Manager, 3);
                    GestureManagerEditor.OnEmoteButton(Manager, 4);
                    GestureManagerEditor.OnEmoteButton(Manager, 5);
                    GestureManagerEditor.OnEmoteButton(Manager, 6);
                    GestureManagerEditor.OnEmoteButton(Manager, 7);
                    GestureManagerEditor.OnEmoteButton(Manager, 8);
                }),
                new GmgLayoutHelper.GmgToolbarRow("Test Animation", () =>
                {
                    GUILayout.Label("Force animation.", GestureManagerStyles.GuiHandTitle);

                    GUILayout.BeginHorizontal();
                    var lastAnim         = _selectingCustomAnim;
                    _selectingCustomAnim = (AnimationClip)EditorGUILayout.ObjectField("Animation: ", _selectingCustomAnim, typeof(AnimationClip), true, null);
                    if (_selectingCustomAnim != lastAnim)
                    {
                        Manager.SetCustomAnimation(_selectingCustomAnim);
                    }

                    if (Manager.onCustomAnimation)
                    {
                        if (GUILayout.Button("Stop", GestureManagerStyles.GuiGreenButton))
                        {
                            Manager.OnCustomEmoteStop();
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Play", GUILayout.Width(100)))
                        {
                            Manager.StopCurrentEmote();
                            Manager.SetCustomAnimation(_selectingCustomAnim);
                            Manager.OnCustomEmoteStart();
                        }
                    }

                    GUILayout.EndHorizontal();
                })
            });
        }