Now instead of hammering your working directory, all operations happen
in-memory using two new classes, MemoryBuffer and MemorySpan. This has
already fixed numerous bugs especially around handling model files.
All operations on files inside dat's now happen on memory buffers, with
an option to write them to a file.
A lot of now useless debug messages are removed too, as that made
some operations needlessly bound by the speed of your console output.
This is the first of many commits to improve code quality, and try to
tame my bad looking code.
Types such as Slot and Race are now living under types/ and have
dedicated functions to go between ids and enumerations without a heavy
std::map.
A new repository API lives in a new SqPack header, which replaces the
old crusty way of fetching repository information in GameData.
Building equipment paths now live in libxiv (moved from novus) provided
you have a model id. Standard methods to build index and dat filenames
are provided in their functions now too.
Pugixml is now downloaded if not found, and the CMake messages are now
clearer that the dependency is downloaded from the internet.
The POSIX getline function is now replaced with std::getline, which
works on MSVC.
Added functions to extract Havok pak files, and extract some skeleton
data from an externally processed Havok XML file. This still requires
you to use the proprietary Havok SDK though, but I'll think of a
solution in the future.
This can read basic MDL files (no terrain, shadow, edge geometry, etc.)
and export them to OBJ. This will be expanded in future commits to let
you export this to an easily readable vertex/index list.
This code is mostly based off of xivModdingFramework/Lumina, and just
ported to C++. All of it will eventually be refactored as there is
duplicate structs EVERYWHERE.
This is based off of Lumina's C# model extraction code. It currently
doesn't support edge geometry, and I have no way to actually test
what this actually does since no one has made a standalone FFXIV mdl
viewer. Huh?
Now you can easily parse EXL files, and this commit includes changes
to GameData to easily extract a EXH from just an excel sheet name
like "Item" or "Map". However this still doesn't work for language
seperated excel sheets yet.
Will now compile out of the box on Windows MSVC.
Right now, out of the box game installation is not supported
as per unshield being non-functional on Windows, will be porting
to Windows or finding a workaround in the near future.