Commit Graph
109 Commits
Author SHA1 Message Date
3fb8b2bb17 feat: font loading and dumping (#866)
* 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]>
2026-07-03 19:26:12 +02:00
JanandGitHub b4477ac1a9 refactor: accuracy graph subassets (#847)
* refactor: use subassets to load accuracy graphs for iw4,iw5,t5,t6

* fix: not dumping anim names for t5 weapons and t6 attachment unique

* refactor: dump accuracy graphs like a subasset

* refactor: use shared method for accuracy graph filenames
2026-06-20 17:16:37 +02:00
JanandGitHub 0d0f928267 feat: add binary xanim support for remaining games (#818)
* 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
2026-06-06 14:47:51 +00:00
0c22dddd0e feat: IW3 xanim dumping/loading in CoD4 Mod Tools raw binary format (#768)
* 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]>
2026-06-01 22:52:49 +02:00
Jan Laupetin 5cf0ce37c1 feat: calculate model collision tree with leafs 2026-05-24 11:13:55 +02:00
Jan Laupetin b7a22973e6 chore: make sure xmodel flags are unsigned 2026-05-03 13:09:03 +02:00
Jan Laupetin 08c128addd feat: accept aliases for asset type names 2026-05-02 18:08:12 +02:00
Jan Laupetin 72f285178b feat: add techset dumping for iw5 2026-03-18 23:04:35 +01:00
Jan Laupetin edcc6774c7 fix: not reusing cbrushedge_t type in iw3,iw4 clipMap 2026-03-14 16:01:30 +01:00
Jan Laupetin 161ab45306 chore: handle iw4 technique flags 2026-03-14 09:09:57 +01:00
Jan Laupetin dbe5cffb2f feat: use templated techset compiler for IW4 2026-03-14 09:09:56 +01:00
Jan Laupetin a6d63e9b31 fix: constraint on asset name arrays 2026-03-02 22:08:56 +00:00
Jan Laupetin bf9beb1458 chore: make sure TechsetCompilerT6 sets proper worldVertFormat 2026-03-02 22:08:55 +00:00
Jan Laupetin f7e0cb3c45 chore: call common djb2 implementations in game hashing funcs 2026-02-23 08:15:05 +01:00
Jan Laupetin aa47ffa629 refactor: introduce subasset loading 2026-02-05 18:17:15 +01:00
Jan Laupetin e5784d09ed refactor: retrieve asset names from IGame 2026-02-05 17:36:55 +01:00
Jan Laupetin 00546740e4 fix: filling union members that are not supposed to be written
* This causes some pointers to be partially overwritten when filling in the wrong order as well
2026-01-17 00:45:21 +00:00
Jan Laupetin 4cdccba016 feat: add embedded image loader for every supported game 2026-01-05 09:50:21 +00:00
Jan Laupetin c9e6a1fc64 feat: show zone and asset statistics in modman 2025-10-27 21:01:04 +01:00
Jan Laupetin 3995596e6c chore: add modman bind for getting assets from a zone 2025-10-27 21:01:03 +01:00
Jan Laupetin 734173066b refactor: only refer to game id in zone 2025-08-31 18:00:27 +01:00
Jan Laupetin 4b5cea3180 fix: iw3/iw4 xmodels having invalid collLod 2025-07-10 17:57:48 +01:00
Jan 3daa8b0412 refactor: use templated xmodel loading and dumping code for iw4 2025-07-09 23:23:16 +01:00
Jan b05a473e6a fix: iw4 materials not writing correct stateBitsEntry 2025-06-28 14:51:04 +01:00
Jan 2073265a86 feat: add templated iw4 material loading 2025-06-26 22:40:30 +01:00
Jan Laupetin 2230efbd27 chore: make xquat and xquat2 structs to improve handling from zcg 2025-06-19 20:45:19 +01:00
Jan 03ccede91c refactor: implement base x64 fastfile loading for iw4 2025-06-19 18:59:20 +01:00
Jan Laupetin 4ccd0a55cf chore: adjust game structs to have custom alignment when they are
platform independent
2025-04-27 21:05:22 +02:00
Jan Laupetin a6107e24a2 chore: disable type alignment on x64 for x86 games 2025-04-26 19:48:03 +02:00
Jan 4f585c6aa7 chore: add generic default asset constructors for all games 2025-01-01 18:14:40 +01:00
Jan b00c65c8c0 refactor: get rid of global game variables 2024-10-19 22:09:26 +02:00
Jan 897a571a41 chore: make GetLanguagePrefixes return a reference instead of a vector copy 2024-10-19 20:05:05 +01:00
Jan c034ac790a refactor: refactor ZoneDefWriter 2024-10-19 10:49:56 +02:00
Jan 2dccd423af refactor: extract image code into single component 2024-09-27 21:16:29 +02:00
Jan 5cc52c42cd refactor: image and obj data loading 2024-09-26 07:22:35 +02:00
Jan f653530714 chore: improve api for vector packing for models 2024-09-05 21:19:39 +02:00
Jan 1f5050befa feat: first draft of loading gltf models for t6 2024-09-05 21:19:39 +02:00
Jan 5737f232e2 chore: adjust name of leaderboard asset 2024-05-25 11:23:13 +02:00
Jan 3201cefd5b chore: rename accuracy table properties in weapon structs 2024-05-20 10:41:57 +02:00
Jan dc090c1371 chore: update count properties of leaderboard enums 2024-05-19 11:52:29 +02:00
Jan d0c7311dce fix: iw4 and iw5 structured data def asset using wrong struct 2024-04-23 00:05:56 +02:00
Jan 0b61fc6e81 chore: add asset structs for all games containing enum entry and type 2024-04-22 23:14:29 +02:00
Jan 3dad9d60da chore: fix typo in structs 2024-04-07 10:54:04 +02:00
Jan a1cf4ef30b feat: load iw4 weapons from raw 2024-04-02 23:49:06 +02:00
Jan 239001e6f2 refactor: use std ranges functions where applicable 2024-03-24 20:49:15 +01:00
Jan df7b25b854 feat: dump t6 materials as json 2024-02-18 10:16:43 +01:00
Clang FormatandJan 6b4f5d94a8 Reformat code with clang format 2023-11-19 21:07:21 +00:00
Jan 399d8e834d Make IW4 menu rect def align be unsigned like IW5 2023-08-23 20:51:11 +02:00
Jan 2dd8660824 Add supplemental data for iw4 statemap layout 2022-08-20 14:37:05 +02:00
Jan c010355d4a Dump material tile and filter properties 2022-08-06 18:47:28 +02:00