Only tick animations that are marked active.
More work needs to be done in Ship.cpp to support this,
but it should enable us to have far more ships in one system.
and the reaper's due must be paid.
As we fly back to base after another successful mission, let us clear
comms in a moment of silence for the wingmates who no longer fly in
this squadron.
- To Robn, who wrote newUI in the first place. Without you, there would
be no newUI or pigui, and I'd still be complaining about oldUI.
- To Johnbartholomew, who spearheaded the move of existing systems to
newUI and implemented plenty of code we still use today.
- To ecraven, who did all of the work of adding ImGui to the code base
and worked tirelessly to port existing screens.
- To vakhoir, who not only worked tirelessly to port the most
recalcitrant of screens, but developed UI frameworks and paradigms
that made working on the UI a pleasure instead of a pain.
This commit totally removes the newUI from the codebase. Everything that
made reference to it (save the LuaConsole) has been ported or struck
from the code. This has simplified some systems significantly, has
allowed us to drop 8,000+ lines of C++ code, cut our build times
significantly, and brings us one step closer to a modern rendering and
tools pipeline.
- Split up the workspace better
- Add checkboxes to display model tags et. al.
- Add a tag name+location display
- Sane defaults for which animation is selected; remove the 'None' option
- Fix an issue with escape_pod.model having the wrong material name.
- Refactor InputFrame add/remove to support the console better.
- Remove the unneeded HandleSDLEvent virtual method on View.
- Fix a binding name mismatch issue.
- Add a (disabled) PerfInfo debug tab for debugging the input system.
Fix unused variable warnings.
Add SmoothEasing function
- A variable-exponent easing function for input and friends
- It's not as performant as the optimized InOut*Easing variants so use sparingly
- Based on the mentioned blog and reverse-engineering the Godot implementation
Significantly refactored the Input class, added Input::Manager to handle
most duties of the Input system.
Replaced the legacy KeyBindings system with the new InputBindings
(namespace subject to change) system for handling key state and key
chords - among other improvements, there is no longer a hardcoded
dependency on Pi::input anymore, as well as storing the binding state in
the binding itself, completely decoupling InputBindings from the input
system that handles input events and significantly reducing the
complexity of the binding system.
Input::Manager now is totally responsible for generating binding events,
removing the need for WorldView::HandleSDLEvent and its ilk - interested
parties can simply bind to the onPressed event and they will only be
notified when the binding in question is part of an active input frame
and nothing else has grabbed the input event, vastly simplifying control
flow.
Among other effects, this almost totally eradicates the need for
Pi::IsConsoleActive().
The lua Console widget is slightly broken as a result of this change,
it doesn't handle activation/deactivation state changes properly. The
solution to this seems to simply be a direct rewrite in PiGui, which
I don't expect to cause too many issues.
I've added a CMake option to use LLD to speed up incremental build link
times; this seems to be somewhat platform dependent and is not
implemented for windows at this time.
Serialization of key bindings to the config file is totally completed,
although support for a graphical method of binding multi-key chords is
not anticipated for this pull request.
This is primarily to make tool development easier - right now the only
way to build a tool without linking all 90MB+ of pioneer binary into the
tool is to cherry-pick a set of cpp files and hope you have all the
symbols you need for what you're doing.
Over time, "generic" functionality like compression, math, etc. will be
moved to the core module so tools can link against one library without
incurring lengthy link and compile times.
Moved mouse capture functionality from the renderer to Input
Temporarily patched ModelViewer, pending a major refactor to make it compatible with the input class.
Forward declare Space in Ship.h; Make things compiling again
Decouple WorldView.h; Some other decouple here and there
Decouple Renderer no more included in RenderState; Model not including directly its childs