* feat: font loading and dumping
* chore: make font properties unsigned if possible
* chore: use merge_patch to dump json font
* chore: font material is required
* chore: move static methods from font loader and dumper to anonymous namespace
* chore: make sure loaded fonts have their glyphs sorted
* chore: add macros for json NLOHMANN_TO_JSON_METHOD and NLOHMANN_FROM_JSON_METHOD
* feat: encode printable letters as string in json
Co-authored-by: hindercanrun <[email protected]>
* chore: omit redundant glyph count from jsons
---------
Co-authored-by: Jan Laupetin <[email protected]>
Co-authored-by: hindercanrun <[email protected]>
Co-authored-by: MrIkso <[email protected]>
* refactor: use generic loader for iw3 xanims
* refactor: use generic dumper for iw3 xanims
* chore: use templating on XAnimDumper
* chore: use templating on XAnimLoader
* feat: dump xanims for T5
* feat: load binary t5 xanims
* feat: load and dump t6 xanims
* feat: load and dump iw4,iw5 xanims
* chore: make sure iw3 and t5 notify about unsupported delta3D
* chore: also use CommonVec3U8 and CommonVec3U16 for non delta trans track
* feat: IW3 dump xanim to cod4 mod tools compatible binary
* chore: add XAnimPartType enum to game headers
* chore: use XAnimPartType in XAnimDumperIW3
* chore: extract xanim filename into XAnimCommon
* chore: prefer emplace_back over push_back
* chore: small code style improvements
* chore: use proper unsigned types for XAnimParts structs
* chore: use better understandable calculations for bitfields
* chore: use game names for parts
* chore: rename method to WriteNoteTracks
* chore: adds comments and improve clearity of what the game does
* chore: extract stream writing methods into StreamUtils
* chore: use vec3 for XAnimPartTransFrames mins and size
* chore: properly differ between XQuat and XQuat2 structs
* chore: use constants for xanim flags
* chore: use optional for delta track quats and trans
* chore: split delta track writing methods into quat and trans
* chore: add assertion for bDelta
* chore: simplify quat frame encoding indexing
* chore: simplify float to int bit casting
* chore: do not throw exception on failing to reconstruct bone tracks
* feat: add xanim loader for iw3
* fix: make sure to sort quats and trans like the game
* chore: prevent empty dumped files on bad xanim data
* chore: ensure no exception on zero frames in xanim notifies
* test: add system test for iw3 xanims
---------
Co-authored-by: Jan Laupetin <[email protected]>