enable post build step (binaries now get copied to the builds folder)
move SPT version info into a dedicated file (so that the version is the same across all files), and recompile this file every time by deleting spt-version.obj as a post build step
fixed a small bug in x86.h
exposed the function that converts old cvar names & commands into new names
organize the DECL/IMPL macros and add support for __stdcall hooks
minor tweaks to a couple features to make them more compatible with the ImGui implementation
Goal
Broad goal for ImGui implementation:
cvars are synced in the GUI and console, there should be minimal ImGui-specific state within features
most SPT features are simple from a user-perspective and do not need their own ImGui window
"simple" features can all live in a single main ImGui window
more complicated features can be displayed in a separate window if necessary (ideally everything should be accessible through the main window)
within the main window, features are broadly organized into categories; this corresponds to tabs/subtabs/sections in the main window
the main window layout is described in spt/features/visualizations/imgui/imgui_interface.hpp; a feature can register a callback to be displayed in a specific part of this window by including this file
most features can be added to the GUI with little effort and I think the focus should be on adding those simple features to the GUI first (stuff like TAS tools would be cool, but that would be a big project)
The current implementation is mostly working, although it does seem to have a small midlife crisis every now and then. At least it pretends to not crash anymore :). It's a little unstable, but I think we can merge it in and call it a BETA feature for now.
TODO
Add more features to the GUI!!! I've added a handful of relatively simple features to serve as examples. I'll add more in the future, and I strongly encourage others to add their own features as well. I made a demo of what I want the overlay feature GUI to look like a while ago, but I want to change the portal selection code before I implement it.
Major
Currently, you can only use the GUI when the game has a VGUI panel focused, otherwise the mouse is always teleported to the middle of the screen which obviously isn't great for UI. It would be really cool if we could use the GUI without forcing focus on a VGUI panel. A couple ideas on how this could be done:
create a dummy vgui panel (preferably invisible or off the screen) that allows you to steal focus while the game is running
feed fake mouse movement to ImGui and use ImGui's software cursor rendering
Medium
ImGui still occasionally triggers asserts for some reason, figure out why and fix!
the logic that I have for handling application resizing doesn't always work, occasionally the game freezes and must be forced closed
add support for icons, other font sizes, and potentially other fonts
the ImGui multi-viewport feature allows dragging the windows outside the application area and create Win32 windows on the fly - this is currently disabled for stability reasons, get it working!
determine if feature callbacks should be called even when the tabs are closed
the cursor doesn't always update over ImGui windows, this seems to be framerate dependent
Minor
I've added some shoddy support for color themes; if people care - clean them up and add better support for customization
test mouse pen & gamepad events in the UI (and determine if we even care about this)
the wakeup animation in 00 tints the GUI, this is probably a minor ImGui bug
Changes
Added BETA support for Dear ImGui to SPT.
Minor changes:
Goal
Broad goal for ImGui implementation:
spt/features/visualizations/imgui/imgui_interface.hpp
; a feature can register a callback to be displayed in a specific part of this window by including this fileThe current implementation is mostly working, although it does seem to have a small midlife crisis every now and then. At least it pretends to not crash anymore :). It's a little unstable, but I think we can merge it in and call it a BETA feature for now.
TODO
Add more features to the GUI!!! I've added a handful of relatively simple features to serve as examples. I'll add more in the future, and I strongly encourage others to add their own features as well. I made a demo of what I want the overlay feature GUI to look like a while ago, but I want to change the portal selection code before I implement it.
Major
Currently, you can only use the GUI when the game has a VGUI panel focused, otherwise the mouse is always teleported to the middle of the screen which obviously isn't great for UI. It would be really cool if we could use the GUI without forcing focus on a VGUI panel. A couple ideas on how this could be done:
Medium
Minor