Archived
1
Fork 0
Commit graph

43 commits

Author SHA1 Message Date
071aed6596 Export bone weights & bone ids for vertices
This currently pulls in glm as a dependency, will be added to the build
system soon.
2022-04-28 17:47:48 -04:00
89ea0548ef Trim whitespace around parent indices
This prevents a bug where whitespace could accidentally delete
some parents.
2022-04-28 13:32:06 -04:00
8b3aed1f29 Fix memory buffer issues on gcc 2022-04-17 22:30:41 -04:00
872bef51bb Add exists() method to GameData 2022-04-17 20:00:23 -04:00
e53e1a0e6c Clean up mdl parser
Now all the structs live at the top of the file, and the main vertex
element reading loop is much nicer looking.
2022-04-17 20:00:12 -04:00
c78a1ab245 Big refactoring commit pt. 2
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.
2022-04-17 19:08:34 -04:00
b11767dc02 Big refactoring commit pt. 1
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.
2022-04-17 16:55:41 -04:00
d0e016e568 Move float utility functions into utility.h 2022-04-16 16:38:29 -04:00
79c482ac97 Fix compilation on MSVC
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.
2022-04-15 21:01:17 -04:00
ba13bab4b7 Restore unshield support, and add cmake find_package for pugimxl 2022-04-14 19:25:55 -04:00
8139f399fd Read more int types 2022-04-14 10:24:04 -04:00
ce7c99c3de Add method to get index file directly 2022-04-14 08:22:10 -04:00
0e653bf6e9 Add install target 2022-04-13 09:40:36 -04:00
bde032fa53 Properly set C++17 2022-04-13 09:26:52 -04:00
68ecdca929 Add very experimental skeleton loading
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.
2022-04-12 23:27:21 -04:00
a7751a50bb Fix Clang build 2022-04-12 16:17:26 -04:00
172e45412c Output uint64/int64 raw in exdparser 2022-04-12 15:27:42 -04:00
fa8fa9093a Add support for excel sheets with subrows
This also fixes strings not loading past another string
column
2022-04-12 14:39:33 -04:00
cd6033a77b Remove some debug output 2022-04-12 12:18:52 -04:00
f674fbe75b Properly unpack byte float2/float4 for vertex normal support 2022-04-12 09:47:22 -04:00
88c43149dc Load normal data from model 2022-04-12 09:11:14 -04:00
f8835854a3 Output model as a real struct from parseMDL instead of into an obj file 2022-04-11 21:56:10 -04:00
2610de0f7f Add basic MDL parsing
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.
2022-04-11 20:02:20 -04:00
f066452ed8 Add experimental model extraction
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?
2022-04-11 15:52:39 -04:00
f5bc8b9414 Clarify usage in README 2022-04-11 12:35:44 -04:00
da7e84c53d Update README 2022-04-11 12:33:10 -04:00
fbe386c958 Add support for reading excel packed booleans 2022-04-11 11:57:33 -04:00
8b6842c0e0 Ignore EXLT header string in exl files 2022-04-11 11:36:04 -04:00
58cd40912f Add language code support when reading EXD files 2022-04-11 10:36:34 -04:00
7006cc4662 Add exl parser, make exd category configurable
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.
2022-04-11 10:18:29 -04:00
851ae281e6 Fix macOS build 2022-04-10 18:08:07 -04:00
13454ba688 Further improve Windows support 2022-03-27 21:48:50 -04:00
29d3a1aabf Improve Windows support
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.
2022-03-27 21:06:14 -04:00
e9c7223048 Add basic patch installation support
Right now it can only handle stuff like updating ffxivboot. It lacks
indexed patch support, a lot of zipatch commands, etc.
2022-03-17 00:58:18 -04:00
ffb3350ddc Allow specifying an install directory for game 2022-03-16 18:33:22 -04:00
970931f048 Update README 2022-03-16 18:02:48 -04:00
570e9900fd Add installer extract functionality 2022-03-16 18:02:39 -04:00
ddd3993db8 Add support for parsing EXD integer types 2022-03-16 08:50:13 -04:00
3befb9070b Export some simple data from EXD 2022-03-16 00:30:52 -04:00
d428c6c3f5 Add EXD/EXH file parsing 2022-03-16 00:02:07 -04:00
2e74f477cf Add README 2022-03-15 16:00:22 -04:00
b5886b04c5 Add license 2022-03-15 15:45:31 -04:00
610c515256 Add initial files 2022-03-15 15:33:57 -04:00