Skip to content

Conversation

@Malkierian
Copy link
Contributor

Add RunGuiOnly to interpreter to run ImGui interface without game commands.

Copy link
Collaborator

@briaguya0 briaguya0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think this makes sense, the one thing i'd want to change is adding a virtual RunGuiOnly to Ship::Windowinstead of only having it on Fast3dWindow.

i see 2 ways to accomplish what HarbourMasters/Shipwright#5892 needs from this PR:

  1. do what this PR is doing (make the RunGuiOnly method)
  2. create a new "gui only" class that inherits from Ship::Window

i think it probably makes sense to have both. supporting a RunGuiOnly "mode" for different backends is probably a good thing, and won't get in the way of adding a "gui only" class in the future.

i'll be happy with this PR landing once Ship::Window includes a virtual RunGuiOnlymethod

Copy link
Collaborator

@briaguya0 briaguya0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@briaguya0 briaguya0 merged commit 5d498e7 into Kenix3:main Nov 2, 2025
6 checks passed
@Malkierian Malkierian deleted the gui-only-render branch November 3, 2025 00:55
KiritoDv added a commit to Net64DD/libultraship that referenced this pull request Dec 28, 2025
* Assume 60Hz if SDL reports 0Hz (Kenix3#828)

This fixes a crash on MacOS, where SDL sometimes outputs 0Hz for secondary displays on startup.

* Implemented osSetTime to fix osGetTime not using boot time (Kenix3#829)

* Implemented osSetTime to fix osGetTime not using boot time

* Fixed tidy

* Missing namespace for some instances of (std::)static_pointer_cast. (Kenix3#830)

* fixed compilation errors for linux with static_pointer_cast

* aded #include <memory> for better formatting

* clang format

* Update RCP and RSP (Kenix3#833)

* Update RCP and RSP

* Format

* Add surround 5.1 support (Kenix3#832)

* Support for 6 channels.

* Add option to configure Surround 5.1 audio.

* Clean up.

* Force 6 channels for now.

* Support stereo and surround.

* Apply comments.

* Fix SDLAudioPlayer.

* Apply clang format.

* Fix SDLAudioPlayer.

* adapt var name

* Apply suggestions from code review

Co-authored-by: briaguya <[email protected]>

* Fix correct name of var.

* Fix format.

* Prefix enum.

---------

Co-authored-by: briaguya <[email protected]>

* split windows vcpkg part off from windows cmake deps (Kenix3#845)

* fix vsync toggle behavior in sdl (Kenix3#847)

* remove initdata in File struct (Kenix3#849)

* Update DisplayListFactory.cpp (Kenix3#837)

* Add command gSPSegmentInterp (Kenix3#834)

* Added gSPSegmentInterp

* Formatting

* Format again

* Various fixes for mouse delta (Kenix3#846)

* Update gfx_dxgi.cpp

* Update gfx_dxgi.cpp

* Update gfx_dxgi.h

* Update gfx_dxgi.cpp

* Update gfx_dxgi.cpp

* Update gfx_dxgi.cpp

* Update gfx_dxgi.cpp

* Update gfx_dxgi.h

* tidy

* reposition

* minor focus inconsistency

* some fixes

---------

Co-authored-by: MegaMech <[email protected]>

* Set icon for dxgi window (Kenix3#826)

This is basically copied from SDL.
https://github.com/libsdl-org/SDL/blob/52e64f816cd5842a5c1b513d7df6cbfe3daed732/src/video/windows/SDL_windowsevents.c#L2620-L2631 and https://github.com/libsdl-org/SDL/blob/52e64f816cd5842a5c1b513d7df6cbfe3daed732/src/video/windows/SDL_windowsevents.c#L2683-L2684

* remove unordered_map for attr handler (Kenix3#805)

* optimise

* Update gfx_pc.cpp

* After patch update cache fix (Kenix3#794)

* apply patch with reset

* same for stormlib

* fix

* patch via cmake script

* restore comments & cleanup

* Texture Scrolling Interpolation (Kenix3#835)

* Texture Scrolling Interpolation

* Use floats for texture scrolling for increased precision

* Formatting

* Mac fullscreen fix (Kenix3#817)

* Implementation of the macOS fullscreen fixes

* Comments and small updates to fullscreen fix

Fixes the issue where windowed fullscreen cursor hiding didn't work as it should according to the presence of the imGUI menubar.
We still need a specific fix in each game to disable changing fullscreen mode while in fullscreen, but this can be removed when SDL3 gets implemented in the future.

Also renamed some macOS specific functions and variables to make sure it is clear that they are macOS only.

* Fixed an oversight from a previous version

* tidy-format, yada yada yada...

* Feel free to shoot me. I'm a professional.

* Trying to appease one of tidy-formats complaints

* Add Writefile and GetArchiveFromFile for Archives (Kenix3#851)

* Update O2rArchive.cpp

* Update O2rArchive.h

* Update O2rArchive.cpp

* Update OtrArchive.h

* Update OtrArchive.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.h

* Update ArchiveManager.cpp

* Update ArchiveManager.h

* Update Archive.h

* Update ArchiveManager.cpp

* Update ArchiveManager.h

* Allow ports to configure ImGui Window Docks by overriding DrawMenu (Kenix3#843)

* Update Fast3dWindow.cpp

* Update Fast3dWindow.h

* Update Window.cpp

* Update Window.h

* Update Gui.h

* Update Gui.h

* Update Fast3dWindow.cpp

* Update Gui.cpp

* remove copypasta

* Update Fast3dWindow.cpp

* Update Window.cpp

---------

Co-authored-by: briaguya <[email protected]>

* Fix typo in DX shader (Kenix3#852)

* Fix incorrect directx shader condition for texture coordinates (Kenix3#853)

* Fix set texture image width calculations (Kenix3#854)

* Simplify Mac Fullscreen and improve fullscreen handling (Kenix3#855)

* Simplify mac fullscreening to just native fullscreen

---

Co-authored-by: Lars-Christian Selland <[email protected]>

* improve fullscreening experience

* adjust comment

---------

Co-authored-by: Lars-Christian Selland <[email protected]>

* fix tidy-result-publish workflow failing (Kenix3#850)

* fix tidy-result-publish workflow failing

apparently the API path changed

* Missed one

* those changed too

* Buffered RawInput handling (Kenix3#841)

Co-authored-by: lightmanLP <[email protected]>

* GfxPC refactor (Kenix3#800)

* GfxPC refactor

* Remove unused types

* Fix missing header

* Move ownership to F3d window

* Move big items to dynamically allocations

* Fix include and format

* Move GfxPc into Fast namespace

* Format

* Rename the class

* Missed a few

* Update to latest

* Case

* Fix metal

* Format

* Merge

* Format and move interp idx into class

* Fix clang

* Fixed texture interpolation (Kenix3#859)

* Fixed texture interpolation

* Fixed tidy

* Add ability to read from folder instead of archive (Kenix3#860)

* Added Folder Archive

* Formatting

* Tidy

* Fix framebuffer regressions with gfxpc refactor (Kenix3#861)

* Improve compile times (Kenix3#840)

* Improve compile times

# Conflicts:
#	src/graphic/Fast3D/Fast3dWindow.cpp
#	src/window/gui/GfxDebuggerWindow.cpp

* Fix missing headers

* Format

* Fix metal include

* Fixes from the rebase

* Fix mac again

* spdlog

---------

Co-authored-by: louist103 <[email protected]>

* Properly fetch app bundle path on windows instead of relying on current directory (Kenix3#869)

* declare derived classes with non-virtual destructors final (Kenix3#866)

classes with virtual methods updated to have virtual destructors

c++ spec suggests destructors should either be public & virtual, or protected & nonvirtual

* Add `SetBlock()` to `Config` for large-scale settings replacements. (Kenix3#868)

Modify `Config::Save()` to apply assign unflattened `mFlattenedJson` to `mNestedJson` and dump that, to keep `mNestedJson` somewhat synchronized.

* Make GuiElement's destructor virtual (Kenix3#871)

* Bump prism and fixed texture filtering on opengl (Kenix3#873)

* Bump prism and fixed texture filtering on opengl

* Reverted wrong defines

* Commented log

* Fixed tidy

* Fixed prism compilation issue

* Readded toggleable filtering

* O2rArchive: simplify WriteFile (Kenix3#864)

* O2rArchive: simplify WriteFile

* feedback

* Add `ListDirectories()` and `unordered_set<std::string>::mDirectories` to ArchiveManager (Kenix3#863)

* Update ArchiveManager.h

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update src/resource/archive/ArchiveManager.h

Co-authored-by: briaguya <[email protected]>

* Update ArchiveManager.h

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

---------

Co-authored-by: briaguya <[email protected]>

* Apply `OPCODE` macro to all `int8_t` opcodes in `f3dex.h` and `f3dex2.h` to prevent constant value truncation warnings. (Kenix3#877)

* Fix some control mapping warnings (Kenix3#876)

* Apply `OPCODE` macro to all `int8_t` opcodes in `f3dex.h` and `f3dex2.h` to prevent constant value truncation warnings.

* Add explicit parent member calls for `GetPhysicalDeviceName()` and `GetPhysicalInputName()` to `final` control mapping files to prevent inheritance by dominance warnings (caused by multi-parent inheritance paths).

* Undo F3DEX changes to send in a different PR.

* Always call PSSetSamplers in D3D11 (Kenix3#872)

* CVar union (Kenix3#870)

* CVar union

* Fix leak

* Save the file this time

* Remove name field, add a destructor, add null checks

* Format

* Fixed ConsoleWindow Help types. (Kenix3#878)

* O2rArchive::WriteFile() Better Error Checking (Kenix3#867)

* Update ArchiveManager.cpp

* Update O2rArchive.cpp

* Update O2rArchive.cpp

* format

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update O2rArchive.cpp

* Update O2rArchive.cpp

* Gfx backend refactor (Kenix3#875)

* Refactor SDL2 backend

* DXGI refactor

* DX11 and OpenGL refactor

# Conflicts:
#	src/graphic/Fast3D/backends/gfx_direct3d11.cpp

* Fix struct definition

* Remove gfx_cc file

# Conflicts:
#	cmake/dependencies/common.cmake
#	src/graphic/Fast3D/backends/gfx_direct3d_common.cpp

* Remove DX12

* Cleanup includes

* Metal refactor

* Fix non mac build

* format

* FIx iOS (maybe)

* Prism fix

* Fix iOS openGL

* Remove more dx12 files

* Cleanup DXGI hack

* Fix metal name

* Format

* Format

* Fix dx11

* Remove #if 0 block

* Add namespace Fast

* Format

* Fix metal

* Fix DXGI

* Fix gfx refactor (Kenix3#883)

* FIx windows

* fix mac

* Format

* Replace file drop CVars with a class (Kenix3#880)

* File drop manager

# Conflicts:
#	src/graphic/Fast3D/backends/gfx_sdl2.cpp
#	src/graphic/Fast3D/gfx_dxgi.cpp
#	src/window/gui/Gui.cpp

* Fix after rebase

* Add missing header

* bump imgui to `v1.91.9b-docking` (Kenix3#884)

* bump imgui to `v1.91.9b-docking`

* update imgui patch

ocornut/imgui@v1.91.9b-docking...briaguya-ai:1_19_9b_docking_patched

* Update Prism to fix elseif shader bug (Kenix3#887)

* fix O2rArchive leak (Kenix3#889)

* clean imgui memory (Kenix3#888)

* Update O2rArchive.cpp

* make a safe cleanup memory of imgui

* Update O2rArchive.cpp

* Update src/resource/archive/O2rArchive.cpp

Co-authored-by: briaguya <[email protected]>

* Update O2rArchive.cpp

* Update Gui.cpp

* Update gfx_sdl2.cpp

* fix format

* revert font factory changement

---------

Co-authored-by: briaguya <[email protected]>

* more final (Kenix3#886)

* Revert Addition of sched_yield(); for macOS. (Kenix3#890)

This doesn't seem to do anything in testing, even on older (2012) Macs. It's left in for Windows in case it helps lower end PCs. Thanks!

* Fix macOS wait timing. (Kenix3#892)

This uses the correct timing value for macOS. Thanks!

* fix dx11 memleak (Kenix3#896)

* MPQ Opt-In (Kenix3#898)

* Change MPQ support to be opt-in. Also changes all instances of `#ifndef EXCLUDE_MPQ_SUPPORT` to `#ifdef INCLUDE_MPQ_SUPPORT` to be logically consistent.

* Remove adding compile definition (needs to be done by the port now).

* Use pragma once everywhere (Kenix3#897)

* Use pragma once everywhere

* Fix apple folder manager

* format

* Restore types

* Fix interrupt

* gbi

* Move mbi above defines

* Move guard

* Update gfxdebuggerbridge.h

* Fix Program Quit Crash (Kenix3#900)

* Update Gui.cpp

* Update Gui.cpp

* Update Gui.cpp

* Update Gui.cpp

* Use SHADER_MAX_TEXTURES for OGL mCurrentTextureIds (Kenix3#905)

* set `FontDataOwnedByAtlas` in `ImFontConfig` to `false` in `GameOverlay::LoadFont()` (Kenix3#902)

* Add pointer memcpy to `GameOverlay::LoadFont()` to prevent `free()` crash.

* Remove memcpy in favor of passing ImFontConfig with `FontDataOwnedByAtlas` set to false, and pass the resource fontData again.

* Windows ARM64 support (Kenix3#899)

* WIP Arm 64

# Conflicts:
#	src/graphic/Fast3D/backends/gfx_opengl.cpp

* Some cleanups.

* oops

* Update prism

Fix

* Prism fixes

* Format

* arm64 actions

* Fix dx11

* Use Visuall studio build system

* Fix paths?

* Fix actions again?

* Update build-validation.yml

* Add registration system to the file drop manager (Kenix3#904)

* Add registration system

* Add better error handling

* Fix windows

* Windows includes

* Format

* Format

* obey app directory for default.sav (Kenix3#908)

* Fix readme grammar & update with o2r (Kenix3#913)

* Dxgi: Remove unnecessary flushes and cleanup (Kenix3#813)

* Clean up after Kenix3#325

This cleans up some stuff left by Kenix3#325.
Most of that probably got optimized out anyway.

* Remove unnecessary Flush

The order is
    mRapi->EndFrame();
    mWapi->SwapBuffersBegin(); <- we are here
    mRapi->FinishRender();
    mWapi->SwapBuffersEnd();
and  mRapi->EndFrame(); is already using Flush(); so no need to do it twice in a row, with nothing else in between happening.

* Remove other unnecessary Flush

The order is
    mRapi->EndFrame();
    mWapi->SwapBuffersBegin();
    mRapi->FinishRender(); <- we are here
    mWapi->SwapBuffersEnd();

swap_chain->Present(mVsyncEnabled, DXGI_PRESENT_ALLOW_TEARING) in mWapi->SwapBuffersBegin(); is already an implicit Flush(); so no need to do it twice in a row, with nothing else in between happening.

* No flush, no include

<d3d11.h> and namespace Microsoft::WRL are not needed anymore without the flush in gfx_dxgi.cpp

* Improve Windows logs for crash handling (Kenix3#910)

* Update CrashHandler.cpp

* Update CrashHandler.cpp

* KeyUp Variables (Kenix3#918)

* Convert mouse capture and fullscreen scancode lookups in `Fast3dWindow::KeyUp` to variable-centered flow.

* clang

* Fix special character paths on Windows (Kenix3#912)

* Fix special character paths on Windows

* Explicitly include stringapiset.h

* Mouse Capture Improvements (Kenix3#917)

* Remove LUS-side CVar references for ForceCursorVisibility.

* Add cursor visibility timeout.

* Add `GetTargetFPS()` chain, and use it in cursor timeout calculations.

* Fix overlapping between force cursor visibility, auto capture mouse, and cursor timeout.

* Fine-tune menu opening cursor showing.

* clang pt 1

* Camel casing.

* Cursor timeout customization.

* oops

* ci: temporarily disable iOS (Kenix3#922)

* KeyUp Variables Quick Fix (Kenix3#919)

* Fix metal compatibility with prism (Kenix3#925)

* chore: make default logger synchronous (Kenix3#915)

* chore: make default logger synchronous

* Adds SPDLOG definition to LUS cmake.

* Removes explicit set of log levels.

---------

Co-authored-by: Kenix3 <[email protected]>

* Audio: null audio engine. make it the fallback (Kenix3#909)

* clean up `target_include_directories` (Kenix3#923)

* we no longer have an `/extern` dir so removing that is a no-op
* the GFX debugger worked fine in ship without this

Co-authored-by: briaguya <[email protected]>

* [ArchiveManager] Reload Archive After Modifying File (Kenix3#920)

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* Update ArchiveManager.cpp

* restructure files so headers live in `/include` (Kenix3#924)

* Un-static variables, private them, and add getters/setters for them.

* ci: temporarily disable iOS

* move all the files

* some cmake error stuff

* glorified stash

* another glorified stash

* some header stuff

* more header progress

* another glorified stash

* it builds

* more

* another

* remove files we shouldn't have there

* more

* move stuff

* bridge stuff

* clang-format

* move

* mac error

* remove commented line

* mac error

* mac probably needs this too

* more mac

* another

* more mac

* mac

* oh mac

* hiding errors

* more mac errors hiding

* mac arc stuff

* ok that wasn't it what's going on

* is it the headers?

* none of this makes sense

* some windows error fixes

* more win error fixes

* missed one

* one more

* another

* more error

* error

* couple more

* fix tidy excludes

* fix some includes tidy caught

* fix cmake stuff found when building soh

* try to get tidy to not complain about stringhelper?

* i hate clang tidy

---------

Co-authored-by: Malkierian <[email protected]>
Co-authored-by: briaguya <[email protected]>

* clean up includes (Kenix3#927)

* clean up includes (Kenix3#928)

* clean up includes (Kenix3#929)

* clean up includes (Kenix3#932)

* Fix SDL audio (Kenix3#938)

* clean up resourcebridge (Kenix3#937)

* clean up resourcebridge

* clang format

* clean up includes (color) (Kenix3#939)

* clean up includes (color)

* tidy

* clean up includes (fast from Gui) (Kenix3#941)

* move lus specific button default mappings to lus from ship (Kenix3#942)

* do the moving

* do the cleaning

* little

* Cursor Visibility Tweaks (Kenix3#944)

* Fixed typo (ForceCursorVisability -> ForceCursorVisibility).
Tweaked the cursor visibility tick to only call SetCursorVisibility(false) once per visibility cycle.

* Fix SetCursorVisibility in DXGI to not need looping.

* Undo previous, and add better presentation for `CursorTimeoutTick()`.

* move button names from ship to LUS (Kenix3#943)

* a bunch of button name plumbing

* remove the parts

* clang-format

* start moving things

* bit more

* clang format

* remove a line

* builds

* working

* Mouse Capture Clip Adjustment (Kenix3#946)

* Add 2x2 mid-window clip rect to SDL when mouse capture is active.
Adjust DXGI's mouse clip rect to match SDL's.

* Fix SDL rect position calculation.

* Removed unnecessary rect from clip calculations.

* Add TODO on the manual clipping rect.

* clang

* Restore lost `fileSinks` push into `sinks` during initialization. (Kenix3#950)

* Increase register buffer size for crash logs (Kenix3#951)

* Gui Only Render (Kenix3#949)

* Add `RunGuiOnly` to `interpreter` to run ImGui interface without game commands.

* clang

* Add `RunGuiOnly` to `Window.h` and override with `Fast3dWindow`.

* Logging Setup Improvements (Kenix3#954)

* Change cmake logger defines to set SPDLOG_MIN_CUTOFF as the active level for both debug and release.
Add debug and release build level parameters to InitLogging with defaults of debug and warn, respectively.

* clang

* Set `mZipArchive` to nullptr after `zip_close()` in `O2rArchive::Close()`. (Kenix3#955)

* Allow writing new blocks to config (Kenix3#956)

* Fix bug with writing new blocks to config

Co-authored-by: Garrett Cox <[email protected]>

* Always assign the block regardless of key presence

---------

Co-authored-by: Garrett Cox <[email protected]>

* Update CMakeLists.txt

* undo

* merge fix

* Fix Compile

---------

Co-authored-by: Spodi <[email protected]>
Co-authored-by: Lywx <[email protected]>
Co-authored-by: snowboundmage2 <[email protected]>
Co-authored-by: louist103 <[email protected]>
Co-authored-by: tortugaveloz <[email protected]>
Co-authored-by: briaguya <[email protected]>
Co-authored-by: Archez <[email protected]>
Co-authored-by: coco875 <[email protected]>
Co-authored-by: Nicholas Estelami <[email protected]>
Co-authored-by: lightmanLP <[email protected]>
Co-authored-by: Lars-Christian Selland <[email protected]>
Co-authored-by: lepideble <[email protected]>
Co-authored-by: Philip Dubé <[email protected]>
Co-authored-by: Malkierian <[email protected]>
Co-authored-by: Rozelette <[email protected]>
Co-authored-by: Eblo <[email protected]>
Co-authored-by: xxAtrain223 <[email protected]>
Co-authored-by: ReddestDream <[email protected]>
Co-authored-by: Malkierian <[email protected]>
Co-authored-by: AltoXorg <[email protected]>
Co-authored-by: Pepe20129 <[email protected]>
Co-authored-by: briaguya <[email protected]>
Co-authored-by: Garrett Cox <[email protected]>
Co-authored-by: Anna <[email protected]>
Co-authored-by: Kenix3 <[email protected]>
Co-authored-by: Sirius902 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants