Instead of extracting item sheets one at a time, it's now done on
multiple threads. Loading gear is now faster since reused files are
cached, switching between races is still wasteful, but it's a good
enough improvement for now.
This is a major code overhaul for mdlviewer, which will make it easier
to extend and modify in the future (trust me, the old code was garbage).
The different views are now split up (SingleGearView, FullModelViewer,
and MDLPart) which makes the functionality easier to handle, and less
error-prone.
Right now bone debugging is disabled (not that it worked that well
anyway) but will be brought back in a future commit.
The mapping to vertex weights work, but skeleton exporting is still a
heavy WIP. Vertex weight export will need another pass in order to get
all 4 weights, but it's a functional proof of concept.
This is big, as it shows we are now correctly parsing the havok XML
sidecard data and you can edit the scale of the bones in the viewport.
This also pulls in a new libxiv version, which is required to fill out
the used bones list on a Model. Right now the bone editing is incredibly
basic, and the viewport suffers from a lack of depth testing still.
The number of lods are now properly loaded from the model data, and race
is checked by checking for the existence of race-specific models (I
think this is the current best way?).
Also, magic_enum is added as a dependency for some enum magic involving
enumerating Race.
Qt5 for macOS can actually use the same code as on Linux/Win, but
apparently no one wants to build it with Vulkan support. Instead, we
spawn a standalone SDL2 window.