File Explorer is still in functionality limbo, but this at least removes
the libxiv dependency and will make it easier to use the new GUI parts
system in the future.
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.
These parts (inspired by the KDE parts system) will allow the tooling
to reuse GUI mechanisms. Right now the two supported parts are for Excel
and Models, and exdviewer and mdlviewer will be retrofitted to them in
future commits.
The renderer can now store diffuse, normal, specular, and multi
textures. Skin textures now color with a hardcoded skin tone (to be
changed) and bone info buffers are now per-model instead of set globally
Level of detail above 0 is now loaded properly, although break for
other reasons.
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.