Ejemplo n.º 1
0
        private static void SubmitDockableUi()
        {
            { //Declare Standalone Windows here
#if DEBUG
                //Debug Window
                {
                    if (ImGui.Button("Throw Another Exception"))
                    {
                        ExceptionManager.PushExceptionForRendering
                        (
                            $"DummyException:{new Random().Next()}",
                            new Exception("hAaaaa")
                        );
                    }
                }
#endif
                // Color Picker
                if (CPickerIsEnable)
                {
                    ImGui.SetNextWindowDockID(mainViewPortDockSpaceID, ImGuiCond.FirstUseEver);
                    if (ImGui.Begin("FFX Color Picker", ref CPickerIsEnable))
                    {
                        Vector2 mEme = ImGui.GetWindowSize();
                        if (mEme.X > mEme.Y)
                        {
                            ImGui.SetNextItemWidth(mEme.Y * 0.80f);
                        }
                        ImGui.ColorPicker4("CPicker", ref CPicker, ImGuiColorEditFlags.AlphaPreviewHalf | ImGuiColorEditFlags.AlphaBar | ImGuiColorEditFlags.NoTooltip);
                        if (ImGui.IsItemDeactivatedAfterEdit())
                        {
                            var actionList = new List <Action>();

                            if (CPickerRed.Attribute(FfxHelperMethods.Xsi + "type").Value == "FFXFieldInt" || CPickerGreen.Attribute(FfxHelperMethods.Xsi + "type").Value == "FFXFieldInt" || CPickerBlue.Attribute(FfxHelperMethods.Xsi + "type").Value == "FFXFieldInt" || CPickerAlpha.Attribute(FfxHelperMethods.Xsi + "type").Value == "FFXFieldInt")
                            {
                                actionList.Add(new ModifyXAttributeString(CPickerRed.Attribute(FfxHelperMethods.Xsi + "type"), "FFXFieldFloat"));
                                actionList.Add(new ModifyXAttributeString(CPickerGreen.Attribute(FfxHelperMethods.Xsi + "type"), "FFXFieldFloat"));
                                actionList.Add(new ModifyXAttributeString(CPickerBlue.Attribute(FfxHelperMethods.Xsi + "type"), "FFXFieldFloat"));
                                actionList.Add(new ModifyXAttributeString(CPickerAlpha.Attribute(FfxHelperMethods.Xsi + "type"), "FFXFieldFloat"));
                            }
                            actionList.Add(new ModifyXAttributeFloat(CPickerRed.Attribute("Value"), CPicker.X));
                            actionList.Add(new ModifyXAttributeFloat(CPickerGreen.Attribute("Value"), CPicker.Y));
                            actionList.Add(new ModifyXAttributeFloat(CPickerBlue.Attribute("Value"), CPicker.Z));
                            actionList.Add(new ModifyXAttributeFloat(CPickerAlpha.Attribute("Value"), CPicker.W));

                            SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                        }
                        ImGui.Separator();
                        ImGui.Text("Brightness Multiplier");
                        ImGui.SliderFloat("###Brightness Multiplier", ref ColorOverload, 0, 10f);
                        ImGui.SameLine();
                        if (ImGuiAddons.ButtonGradient("Multiply Color"))
                        {
                            List <Action> actions = new List <Action>();
                            CPicker.X *= ColorOverload;
                            CPicker.Y *= ColorOverload;
                            CPicker.Z *= ColorOverload;
                            actions.Add(new EditPublicCPickerVector4(new Vector4(CPicker.X *= ColorOverload, CPicker.Y *= ColorOverload, CPicker.Z *= ColorOverload, CPicker.W)));
                            actions.Add(new ModifyXAttributeFloat(CPickerRed.Attribute("Value"), CPicker.X));
                            actions.Add(new ModifyXAttributeFloat(CPickerGreen.Attribute("Value"), CPicker.Y));
                            actions.Add(new ModifyXAttributeFloat(CPickerBlue.Attribute("Value"), CPicker.Z));
                            SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actions));
                        }
                        ImGui.End();
                    }
                }
                // Keyboard Guide
                if (_keyboardInputGuide)
                {
                    ImGui.SetNextWindowDockID(mainViewPortDockSpaceID, ImGuiCond.FirstUseEver);
                    ImGui.Begin("Keyboard Guide", ref _keyboardInputGuide, ImGuiWindowFlags.MenuBar);
                    ImGui.BeginMenuBar();
                    ImGui.EndMenuBar();
                    ImGui.ShowUserGuide();
                    ImGui.End();
                }
                if (_axbyDebugger)
                {
                    ImGui.SetNextWindowDockID(mainViewPortDockSpaceID, ImGuiCond.FirstUseEver);
                    ImGui.Begin("axbxDebug", ref _axbyDebugger);
                    if (SelectedFfxWindow.NodeListEditor != null)
                    {
                        if (SelectedFfxWindow.NodeListEditor.Any() & (SelectedFfxWindow.ShowFfxEditorFields || SelectedFfxWindow.ShowFfxEditorProperties))
                        {
                            int integer = 0;
                            foreach (XNode node in SelectedFfxWindow.NodeListEditor.ElementAt(0).Parent.Nodes())
                            {
                                ImGui.Text($"Index = '{integer} Node = '{node}')");
                                integer++;
                            }
                        }
                    }
                    ImGui.End();
                }
                if (MainUserInterface.IsSearchBarOpen)
                {
                    var viewport = ImGui.GetMainViewport();

                    ImGui.SetNextWindowSize(new Vector2(300, 80));
                    ImGui.SetNextWindowPos(new Vector2(viewport.Pos.X + viewport.Size.X - 15, viewport.Pos.Y + 38), ImGuiCond.None, new Vector2(1, 0));
                    ImGui.PushStyleVar(ImGuiStyleVar.WindowRounding, 0);
                    if (ImGui.Begin("Action Search", ref MainUserInterface.IsSearchBarOpen, ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove))
                    {
                        ImGui.SetNextItemWidth(190);
                        ImGui.InputText("Action Search", ref MainUserInterface.SearchBarString, 1024);
                        ImGui.Checkbox("Search By ID", ref MainUserInterface.IsSearchById);

                        ImGui.End();
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private static void AxBySwapper()
        {
            ImGui.BulletText("Input Type:");
            ImGui.SameLine();
            if (ImGuiAddons.BeginComboFixed("##Current AxBy", FfxHelperMethods.AxByToName(SelectedFfxWindow.AxBy)))
            {
                if (FfxHelperMethods.AxByColorArray.Contains(SelectedFfxWindow.AxBy))
                {
                    foreach (string str in FfxHelperMethods.AxByColorArray)
                    {
                        bool selected = false;
                        if (SelectedFfxWindow.AxBy == str)
                        {
                            selected = true;
                        }
                        if (ImGui.Selectable(FfxHelperMethods.AxByToName(str), selected) & str != SelectedFfxWindow.AxBy)
                        {
                            XElement axbyElement = SelectedFfxWindow.FfxPropertyEditorElement;
                            if (str == "A19B7")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("19", "7");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "19"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "7"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A35B11")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("35", "11");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "35"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "11"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A67B19")
                            {
                                if (SelectedFfxWindow.AxBy == "A4163B35")
                                {
                                    var actionListQuick = new List <Action>();

                                    actionListQuick.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "67"));
                                    actionListQuick.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "19"));

                                    actionListQuick.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionListQuick));
                                    return;
                                }
                                XElement templateXElement = DefParser.TemplateGetter("67", "19");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "67"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "19"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A99B27")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("99", "27");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "99"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "27"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A4163B35")
                            {
                                if (SelectedFfxWindow.AxBy == "A67B19")
                                {
                                    var actionListQuick = new List <Action>();

                                    actionListQuick.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "4163"));
                                    actionListQuick.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "35"));

                                    actionListQuick.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionListQuick));
                                    return;
                                }
                                XElement templateXElement = DefParser.TemplateGetter("4163", "35");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "4163"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "35"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            return;
                        }
                    }
                }
                else if (FfxHelperMethods.AxByScalarArray.Contains(SelectedFfxWindow.AxBy))
                {
                    foreach (string str in FfxHelperMethods.AxByScalarArray)
                    {
                        bool selected = false;
                        if (SelectedFfxWindow.AxBy == str)
                        {
                            selected = true;
                        }
                        if (ImGui.Selectable(FfxHelperMethods.AxByToName(str), selected) & str != SelectedFfxWindow.AxBy)
                        {
                            XElement axbyElement = SelectedFfxWindow.FfxPropertyEditorElement;
                            if (str == "A0B0")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("0", "0");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "0"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "0"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A16B4")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("16", "4");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "16"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "4"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A32B8")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("32", "8");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "32"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "8"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A64B16")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("64", "16");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "64"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "16"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A96B24")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("96", "24");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "96"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "24"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            else if (str == "A4160B32")
                            {
                                XElement templateXElement = DefParser.TemplateGetter("4160", "32");
                                if (templateXElement != null)
                                {
                                    var actionList = new List <Action>();

                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "4160"));
                                    actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "32"));

                                    actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                                    actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                                    SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                                }
                            }
                            return;
                        }
                    }
                }
                else
                {
                    ImGui.Selectable(SelectedFfxWindow.AxBy, true);
                }
                ImGuiAddons.EndComboFixed();
            }
            ImGui.SameLine();
            if (ImGuiAddons.ButtonGradient("Flip C/S"))
            {
                XElement axbyElement = SelectedFfxWindow.FfxPropertyEditorElement;
                if (FfxHelperMethods.AxByColorArray.Contains(SelectedFfxWindow.AxBy))
                {
                    XElement templateXElement = DefParser.TemplateGetter("0", "0");
                    if (templateXElement != null)
                    {
                        var actionList = new List <Action>();

                        actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "0"));
                        actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "0"));

                        actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                        actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                        SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                    }
                }
                else
                {
                    XElement templateXElement = DefParser.TemplateGetter("19", "7");
                    if (templateXElement != null)
                    {
                        var actionList = new List <Action>();

                        actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumA"), "19"));
                        actionList.Add(new ModifyXAttributeString(axbyElement.Attribute("TypeEnumB"), "7"));

                        actionList.Add(new XElementReplaceChildren(axbyElement, templateXElement));

                        actionList.Add(new ResetEditorSelection(SelectedFfxWindow));

                        SelectedFfxWindow.ActionManager.ExecuteAction(new CompoundAction(actionList));
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public static void SubmitMainMenuBar()
        {
            if (ImGui.BeginMainMenuBar())
            {
                if (ImGui.BeginMenu("File"))
                {
                    if (ImGui.MenuItem("Load FFX"))
                    {
#if RELEASE
                        try
                        {
#endif
                        System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog();
                        ofd.Filter = "FFX|*.fxr;*.xml";
                        ofd.Title  = "Open FFX";

                        if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            if (Path.GetExtension(ofd.FileName) == ".fxr")
                            {
                                var fxrXml = FXR3_XMLR.Fxr3EnhancedSerialization.Fxr3ToXml(FXR3_XMLR.Fxr3.Read(ofd.FileName));
                                LoadFfxFromXml(fxrXml, ofd.FileName);
                            }
                            else if (Path.GetExtension(ofd.FileName) == ".xml")
                            {
                                var fxrXml = XDocument.Load(ofd.FileName);
                                LoadFfxFromXml(fxrXml, ofd.FileName);
                            }
                        }
#if RELEASE
                    }
                    catch (Exception exception)
                    {
                        ExceptionManager.PushExceptionForRendering("ERROR: FFX loading failed", exception);
                    }
#endif
                    }
                    if (ImGui.MenuItem("Save", OpenFfXs.Any()))
                    {
                        try
                        {
                            if (SelectedFfxWindow.LoadedFilePath.EndsWith(".xml"))
                            {
                                SelectedFfxWindow.XDocLinq.Save(SelectedFfxWindow.LoadedFilePath);
                                FXR3_XMLR.Fxr3EnhancedSerialization.XmlToFxr3(SelectedFfxWindow.XDocLinq).Write(SelectedFfxWindow.LoadedFilePath.Substring(0, SelectedFfxWindow.LoadedFilePath.Length - 4));
                            }
                            else if (SelectedFfxWindow.LoadedFilePath.EndsWith(".fxr"))
                            {
                                SelectedFfxWindow.XDocLinq.Save(SelectedFfxWindow.LoadedFilePath + ".xml");
                                FXR3_XMLR.Fxr3EnhancedSerialization.XmlToFxr3(SelectedFfxWindow.XDocLinq).Write(SelectedFfxWindow.LoadedFilePath);
                            }
                        }
                        catch (Exception exception)
                        {
                            ExceptionManager.PushExceptionForRendering("ERROR: FFX saving failed", exception);
                        }
                    }
                    if (ImGui.MenuItem("Save as", OpenFfXs.Any()))
                    {
                        try
                        {
                            System.Windows.Forms.SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
                            saveFileDialog1.Filter = "FXR|*.fxr|XML|*.xml";
                            saveFileDialog1.Title  = "Save FFX as";

                            if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                if (Path.GetExtension(saveFileDialog1.FileName) == ".fxr")
                                {
                                    FXR3_XMLR.Fxr3EnhancedSerialization.XmlToFxr3(SelectedFfxWindow.XDocLinq).Write(saveFileDialog1.FileName);
                                }
                                else if (Path.GetExtension(saveFileDialog1.FileName) == ".xml")
                                {
                                    SelectedFfxWindow.XDocLinq.Save(saveFileDialog1.FileName);
                                }
                            }
                        }
                        catch (Exception exception)
                        {
                            ExceptionManager.PushExceptionForRendering("ERROR: FFX saving failed", exception);
                        }
                    }
                    if (ImGui.MenuItem("Load FFX Resources For Texture Display - Requires Relatively Good Hardware", FfxTextureHandler == null))
                    {
                        var ofd = new OpenFileDialog()
                        {
                            Title = "Open frpg_sfxbnd_commoneffects_resource.ffxbnd", Filter = "FfxRes|frpg_sfxbnd_commoneffects_resource.ffxbnd.dcx"
                        };
                        if (ofd.ShowDialog() == DialogResult.OK)
                        {
                            FfxTextureHandler = new ImGuiFxrTextureHandler(BND4.Read(ofd.FileName));
                        }
                    }
                    ImGui.EndMenu();
                }
                if (ImGui.BeginMenu("Edit"))
                {
                    if (ImGui.MenuItem("Undo", "Ctrl Z", false, SelectedFfxWindow != null ? SelectedFfxWindow.ActionManager.CanUndo() : false))
                    {
                        SelectedFfxWindow.ActionManager.UndoAction();
                    }
                    if (ImGui.MenuItem("Redo", "Ctrl Y", false, SelectedFfxWindow != null ? SelectedFfxWindow.ActionManager.CanRedo() : false))
                    {
                        SelectedFfxWindow.ActionManager.RedoAction();
                    }
                    if (ImGui.MenuItem("Extend Active FFX Treeview", SelectedFfxWindow != null))
                    {
                        SelectedFfxWindow.CollapseExpandTreeView = true;
                    }
                    if (ImGuiAddons.IsItemHoveredForTime(500, MainUserInterface.FrameRateForDelta, "HoverTimerTreeViewExpander"))
                    {
                        ImGui.Indent();
                        ImGui.Text("Holding Shift while clicking this button will expand properties aswell as the treeview itself.");
                        ImGui.Unindent();
                    }
                    if (ImGui.MenuItem("Search Actions..."))
                    {
                        IsSearchBarOpen = !IsSearchBarOpen;
                    }
                    ImGui.EndMenu();
                }
                if (ImGui.BeginMenu("UI Configs"))
                {
                    if (ImGuiAddons.BeginComboFixed("Theme Selector", _activeTheme))
                    {
                        foreach (string str in ThemeSelectorEntriesArray)
                        {
                            bool selected = false;
                            if (str == _activeTheme)
                            {
                                selected = true;
                            }
                            if (ImGui.Selectable(str, selected))
                            {
                                _activeTheme = str;
                                Themes.ThemesSelectorPush(_activeTheme);
                                SelectedThemeConfig.WriteConfigsIni(_activeTheme);
                            }
                        }
                        ImGuiAddons.EndComboFixed();
                    }
                    ImGui.InputInt("Displayed Texture Size", ref TextureDisplaySize, 10, 100);
                    ImGui.EndMenu();
                }
                if (ImGui.BeginMenu("Useful Info"))
                {
                    // Keybord Interactions Start
                    ImGui.Text("Keyboard Interactions Guide");
                    ImGui.SameLine();
                    ImGuiAddons.ToggleButton("Keyboard InteractionsToggle", ref _keyboardInputGuide);
                    // Keybord Interactions End

                    // AxBy Debugger Start
                    ImGui.Text("AxBy Debugger");
                    ImGui.SameLine();
                    ImGuiAddons.ToggleButton("AxByDebugger", ref _axbyDebugger);
                    // AxBy Debugger End

                    // No Action ID Filter Start
                    ImGui.Text("No ActionID Filter");
                    ImGui.SameLine();
                    ImGuiAddons.ToggleButton("No ActionID Filter", ref Filtertoggle);
                    // No Action ID Filter End
                    if (ImGui.MenuItem("Lock DFXR3E Input", "Shift-Escape"))
                    {
                        MessageBox.Show("DFXR3E Inputs are locked, press OK to unlock");
                    }
                    ImGui.EndMenu();
                }
                ImGui.EndMainMenuBar();
            }
        }