Rewritten YTEditor framework, this work from @nicholasammann.
Using basis texture compression.
Custom YTEMesh and YTESkeleton file types.
Particle Performance improvements.
Switched to Optick for performance monitoring.
Cleaned up Asset importing such that we must import files into our formats first. This simplified a lot of code and allowed us to not worry about importing during game startup. This led to massive load time performance improvements.
Did lots of work to support compiling on Linux via clang. warnings are currently disabled. By time this PR goes through, we'll still need some more work to get on Linux (there's still probably going to be some build breaks here and there.) But this branch got us most of the way there.
Removed VkEvent usage, this will enable future porting to Apple platforms via Molten Vk after we get Linux done. To my knowledge, that was the only feature we used that isn't supported via Molten Vk. I'm sure there's still some minor issues here and there that need to be corrected though.
Moved our Platform library to use SDL2 under the hood instead of Win32. This will enable porting to many platforms in the future, as well as opening up wider controller support.
Made the Renderer generic enough that the FFT_WaterSimulation no longer needs any Vulkan specific code.
ShaderDescriptions became generic! We can convert to the appropriate API specific description when required. This cleaned up a bunch of code including leading to the above comment about FFT_WaterSimulation.
Things left to do before this can be merged:
[ ] Fix crash on close in editor when Play window is open.
[x] Fix editor issue relating to initialization. Seems we either init too much, or not enough. Currently in the not enough state.
[x] Fix gamepads not working in editor.
[x] Fix gamepads not working with steam running.
[x] Separate importing/writing file format functions into library editor can depend on. (For future command line or similar utilities)
[x] Get WWiseEditorPlugin Widget in-editor.
[x] Fix WWiseWidget not playing sounds and such.
[x] Remove all assimp code from YTE itself.
[ ] Finally figure out how to properly initialize ShaderDescriptions such that we only bind the UBOs and buffers that we actually need for each Shader. Maybe we first load a json file that tells us what we need to know? I could contain the shader files needed, the UBOs, and the Buffers. But then we need to know how to fufill those on arbitrary meshes, and we'd need a way to create these on the fly in code as well for things like the particle manager or the water sim.
[ ] Finish YTEMesh importer. (Fixup the Texture extensions to be .basis, as well as call into the texture importer)
[ ] Remake Texture importer.
[ ] Update ImGui/ImGuizmo, try to not use the multiple contexts anymore.
[ ] Fix the terrible ImGui bugs.
[ ] Fix Rotation Gizmo issue/make sure they're working alright.
[ ] Fixup the installer to work with plugins.
[ ] Fix the Composition deletion bugs of objects seemingly sticking around.
[ ] Get things running on Linux (very close I believe, just having seemingly a calling convention issue with SDL on linux as we crash upon returning from a function)
[ ] Just before actually reviewing this, we should do another pass on updating Dependencies.
Things Implemented in this PR:
Things left to do before this can be merged: