Ejemplo n.º 1
0
    public void Render()
    {
        try
        {
            if (_renderDebugOverlay)
            {
                DebugOverlay.Render(GameViews.Primary);
            }

            if (_renderObjectTree)
            {
                new DebugObjectGraph().Render();
            }

            if (_renderRaycastStats)
            {
                RaycastStats.Render();
            }

            RenderMainMenuBar(out var height);

            // Disable mouse scrolling when the mouse is on the debug UI
            if (GameViews.Primary is GameView gameView)
            {
                gameView.IsMouseScrollingEnabled = height <= 0;
            }

            ObjectEditors.Render();

            ActionsDebugUi.Render();

            Tig.Console.Render(height);
        }
        catch (Exception e)
        {
            if (!ErrorReporting.ReportException(e))
            {
                throw;
            }
        }

        ErrorReportingUi.Render();

        ImGui.Render();
        var drawData = ImGui.GetDrawData();

        _renderer.ImGui_ImplDX11_RenderDrawLists(drawData);
    }
Ejemplo n.º 2
0
    private void RenderMainMenuBar(out int height)
    {
        height = 0;

        // Only render the main menu bar when the mouse is in the vicinity
        if (ImGui.GetIO().MousePos.Y > 30 && !_forceMainMenu && !Tig.Console.IsVisible)
        {
            return;
        }

        _forceMainMenu = false;

        if (ImGui.BeginMainMenuBar())
        {
            height = (int)ImGui.GetWindowHeight();

            _forceMainMenu = ImGui.IsWindowHovered(ImGuiHoveredFlags.ChildWindows);

            var anyMenuOpen = false;

            if (ImGui.MenuItem("Console"))
            {
                Tig.Console.IsVisible = !Tig.Console.IsVisible;
            }

            if (ImGui.BeginMenu("View"))
            {
                anyMenuOpen = true;

                var enabled = Globals.UiManager.Debug.DebugMenuVisible;
                if (ImGui.MenuItem("UI Debug Menu", null, ref enabled))
                {
                    Globals.UiManager.Debug.DebugMenuVisible = enabled;
                }

                ImGui.MenuItem("Debug Overlay", null, ref _renderDebugOverlay);

                ActionsDebugUi.RenderMenuOptions();

                ImGui.MenuItem("Game Object Tree", null, ref _renderObjectTree);
                ImGui.MenuItem("Raycast Stats", null, ref _renderRaycastStats);

                var showGoalsChecked = AnimGoalsDebugRenderer.Enabled;
                if (ImGui.MenuItem("Render Anim Goals", null, ref showGoalsChecked))
                {
                    AnimGoalsDebugRenderer.Enabled = showGoalsChecked;
                }

                var showNamesChecked = AnimGoalsDebugRenderer.ShowObjectNames;
                if (ImGui.MenuItem("Render Object Names", null, ref showNamesChecked))
                {
                    AnimGoalsDebugRenderer.ShowObjectNames = showNamesChecked;
                }

                var verbosePartyLogging = GameSystems.Anim.VerbosePartyLogging;
                if (ImGui.MenuItem("Verbose Anim Goal Logging (Party)", null, ref verbosePartyLogging))
                {
                    GameSystems.Anim.VerbosePartyLogging = verbosePartyLogging;
                }

                var gameRenderer = UiSystems.GameView.GameRenderer;

                var renderSectorDebug = gameRenderer.RenderSectorDebugInfo;
                if (ImGui.MenuItem("Sector Blocking Debug", null, ref renderSectorDebug))
                {
                    gameRenderer.RenderSectorDebugInfo = renderSectorDebug;
                }

                var renderSectorVisibility = gameRenderer.RenderSectorVisibility;
                if (ImGui.MenuItem("Sector Visibility", null, ref renderSectorVisibility))
                {
                    gameRenderer.RenderSectorVisibility = renderSectorVisibility;
                }

                var pathFindingDebug = gameRenderer.DebugPathFinding;
                if (ImGui.MenuItem("Debug Pathfinding", null, ref pathFindingDebug))
                {
                    gameRenderer.DebugPathFinding = pathFindingDebug;
                }

                if (ImGui.BeginMenu("Line of Sight"))
                {
                    var fogDebugRenderer = gameRenderer.MapFogDebugRenderer;
                    var index            = 0;
                    foreach (var partyMember in GameSystems.Party.PartyMembers)
                    {
                        var displayName = GameSystems.MapObject.GetDisplayName(partyMember);
                        var selected    = fogDebugRenderer.RenderFor == index;
                        if (ImGui.MenuItem(displayName, null, ref selected))
                        {
                            fogDebugRenderer.RenderFor = selected ? index : -1;
                        }

                        index++;
                    }

                    ImGui.EndMenu();
                }

                var particleSystems = Globals.Config.DebugPartSys;
                if (ImGui.MenuItem("Particle Systems", null, ref particleSystems))
                {
                    Globals.Config.DebugPartSys = particleSystems;
                }

                var clipping = GameSystems.Clipping.Debug;
                if (ImGui.MenuItem("Clipping Meshes", null, ref clipping))
                {
                    GameSystems.Clipping.Debug = clipping;
                }

                ImGui.EndMenu();
            }

            if (ImGui.BeginMenu("Screenshot"))
            {
                anyMenuOpen = true;

                if (GameViews.Primary != null)
                {
                    if (ImGui.MenuItem("Game View"))
                    {
                        GameViews.Primary.TakeScreenshot("gameview.jpg");
                    }
                }

                ImGui.EndMenu();
            }

            if (ImGui.BeginMenu("Scripts"))
            {
                anyMenuOpen = true;

                foreach (var availableScript in Tig.Console.AvailableScripts)
                {
                    if (ImGui.MenuItem(availableScript))
                    {
                        Tig.Console.RunScript(availableScript);
                    }
                }

                ImGui.EndMenu();
            }

            if (anyMenuOpen)
            {
                _forceMainMenu = true;
            }

            RenderCheatsMenu();

            if (GameViews.Primary != null)
            {
                var screenCenter = GameViews.Primary.CenteredOn;
                ImGui.Text($"X: {screenCenter.location.locx} Y: {screenCenter.location.locy}");
            }

            ImGui.End();
        }
    }