Correct the background of the world editor main tab with a (new) solid fill. Sometimes it appeared as black, magenta or the just the scene itself. Color is fixed for now as it is a unique situation regarding the use of tabs here.
Sidepanels of the world editors got shifted due to the introduction of the editor tab. Several corrected overall. Some minor tweaks to be expected in a later commit.
Tweaked example module script file to comply
Moved ExampleGameMode script file to scripts/shared since client and server need access to the gamemode for logic to work
Standardizes Gamemodes to be an actual class with data and utility functions that can be parsed
Adds inspector field handling for selecting gamemodes
Updated Scene class to work with Gamemodes for the gamemode field
Updates editor suite elements to be able to create SubScenes, SceneGroups and Gamemodes
Adds ability to convert SimGroup to SubScene
Updates BaseUI's chooselevel menu to have gamemode selection and filters shown levels based on selected gamemode
further ensure sound playback isn't even started unless the test condition is true and the gui element is awake
remove redundant sfx->stop(). already does so with SFX_DELETE(source)
ditch description: not needed.
set process ticking off when the gui element is put to sleep
for the case of re-use of 3d sounds, set emission to the listener position
now openal and sdl are embedded in the app bundle along with their symlink alternatives
clear out the openal framework and use the embedded dll instead
archiving works and will produce a notarized app if you provide the correct information and enable hardening.
cmake option to enable the templated matrix class, this is still in review phase, if it gets merged into main, probably best to remove this options just in case someone activates it accidentally.
further tests showed issues with inverse function, now to better match what was originally happening, the inverse only happens on the 3x3 portion of the matrix and translation is handled separately.
Frustum test now uses more real world examples of a projection matrix. Test for the full unproject stack of math to test its result as unproject was where the issue about inverse originated
added more unit tests to match values between templated and matrix
tests showed discrepancies in affineInverse, fixed the function to return what is expected.