Commit Graph
38 Commits
Author SHA1 Message Date
Jan Laupetin c24d1f0cd8 chore: rename generated loader/writer/marker aggregated headers 2026-10-22 20:01:05 +02:00
Jan Laupetin 8490c09fad refactor: generate combined asset loader/writer/marker headers per variant 2026-10-22 20:01:05 +02:00
moandJan Laupetin 51770e7ae5 feat: IW3 menu dumping and loading (#909)
* feat: IW3 menu dumping

* fix: IW3 menu dumper preserve menu ownerdraw flag masks

* fix: IW3 menu dumper preserve numeric script arguments

Emit numeric tokens without quotes so the linker keeps colour arguments separate.

Before: `"0.1" "0.1" "0.12" "0.5"` becomes `"0.10.10.120.5"`
After: `0.1 0.1 0.12 0.5`

This fixes `mouseExit` colour commands failing to clear menu hover borders.

* fix: IW3 menu dumper preserve empty item text

Keep explicit empty text distinct from null text when dumping menu items.

This fixes CD-key values overflowing their input boxes.

* test: cover IW3 menu dumper material case

* test: cover IW3 menu list path precedence

* chore: clang format

* fix: reverse order of union to avoid edge case bug in zcg

* feat: IW3 menu loading

* fix: validate menu expression name table

* chore: explain numeric token quoting in comment

* refactor: simplify menu dump fallback path

* chore: add more dynamic window flags

* refactor: reuse IW3 menu window flag constants

* refactor: use explicit menu item feature lookup

* refactor: represent menu item text as optional

* refactor: clarify shared IW3 and IW4 menu constants

IW4 only extends the type enum so they can be shared

* refactor: clarify IW3 menu zone state naming

* fix: log IW3 menu conversion failures

* refactor: align IW3 menu list loader with IW4

* refactor: align IW3 menu dumpers with IW4

* refactor: align IW3 menu converter with IW4

* chore: use default enum numeration for operationEnum

* chore: small optimization on edit field capability initialization

* fix: iw3 menu optimizations for rect not considering relative position to parent

* chore: align iw3 menu converting closer to iw4

* chore: align iw3 menu dumping closer to iw4

* fix: not dumping menu flags properties correctly

* chore: adjust iw3 expression dumping to work similar to iw4

* chore: adjust iw3 expression converting to work similar to iw4

* chore: use unordered_map for MenuExpressionMatchers

---------

Co-authored-by: Jan Laupetin <[email protected]>
2026-08-31 00:04:01 +02:00
moandJan Laupetin 0c66d1838e feat: T4 add StringTable loader (#934)
* feat: T4 add string table loader

* chore: rename stringtable loaders to match style between games

* fix: make sure all games correctly interpret failed stringtable loading

---------

Co-authored-by: Jan Laupetin <[email protected]>
2026-07-26 00:40:02 +02:00
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
moandJan Laupetin ee63355fd2 feat: IW3 weapon loading and dumping (#867)
* feat: IW3 weapon loading and dumping

* chore: adjust weapon strings for iw3

* chore: use original capitalization for aifuseTime

* chore: remove unused alternative iw3 csp fields

* chore: add missing checks and style the code similar to t5

* chore: small code smells in t5 weapon loader

* feat: add iw3 gdt loader

* chore: adjust weapon loader file names to t5 style

* feat: add gdt dumper for iw3 weapons

---------

Co-authored-by: Jan Laupetin <[email protected]>
2026-06-30 22:25:06 +02:00
Jan 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
moandJan Laupetin 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
njohnson a905a6d161 feat: add iw3 gfxlight dumper and loader 2026-05-16 09:54:22 +02:00
njohnson 3136a03754 Add dumper and loader call to parents. 2026-05-02 12:04:45 +02:00
Paging Red 759a3ccf0e Merge pull request #753 from pagingred/iw5_physpreset_dumper
feat: phys presets dumping and loading for IW3, IW5, T5
2026-05-02 12:01:59 +02:00
Jan Laupetin daa891a922 feat: add techset compiling for IW3 2026-03-14 20:54:59 +01:00
Jan Laupetin 4cdccba016 feat: add embedded image loader for every supported game 2026-01-05 09:50:21 +00:00
Jan Laupetin 33584f6f7b feat: add external image loader for every supported game 2026-01-05 09:50:20 +00:00
Jan Laupetin 8eb79da8a2 chore: adjust asset data when taking from global asset pools 2025-12-23 15:40:52 +01:00
Jan Laupetin 46fb919a52 refactor: do not nest asset namespaces in game namespaces
* Duplicated namespace names are kind of annoying
2025-08-06 00:50:35 +02:00
Jan Laupetin 95a6a028ab refactor: streamline IW3 asset loading 2025-08-05 01:22:39 +02:00
Jan Laupetin 250556ab61 refactor: streamline namespaces of xmodel dumping and loading 2025-08-03 17:47:21 +02:00
Jan 65c8cd6198 feat: add json material loading/writing for iw3 2025-07-05 13:27:49 +02:00
Jan 8b85cadb77 refactor: make memory from zone a reference instead of ptr 2025-05-02 22:08:06 +01:00
Jan 56c4eeb5cd fix: set clipmap asset name of non-pvs clipmap to clipmap_unused in IW3,IW4,T5 2025-03-27 17:16:28 +01:00
Jan a5873a301f chore: adjust IW3 asset loaders to fit IW4 format 2025-01-01 18:14:41 +01:00
Jan f9456101e6 chore: enable all currently implemented loaders for iw3 2025-01-01 18:14:41 +01:00
Jan 4f585c6aa7 chore: add generic default asset constructors for all games 2025-01-01 18:14:40 +01:00
Jan 9ebea5034a chore: generalize default asset creators 2025-01-01 18:14:40 +01:00
Jan c524cb007a chore: implement obj loading skeleton with localize asset 2025-01-01 18:14:40 +01:00
Jan 4f0a405bdc chore: adjust asset creation process to use separated AssetCreators 2025-01-01 18:14:40 +01:00
Jan 4c9a84777f chore: use IObjLoader directly instead of indirection of ObjLoading 2024-10-19 13:46:47 +01:00
Jan 5cc52c42cd refactor: image and obj data loading 2024-09-26 07:22:35 +02:00
Jan a166878f7d refactor: use template based asset structs for AssetLoaders 2024-05-25 11:17:04 +02:00
Jan bcdde6a244 feat: add localize entry loading for IW3 2024-01-20 11:37:41 +01:00
Jan cd53c3cbe4 Move D3DFormat definition into separate namespace to make it compatible to existing definitions 2024-01-06 20:35:00 +01:00
Clang Format 6b4f5d94a8 Reformat code with clang format 2023-11-19 21:07:21 +00:00
Jan 5e31be9bac Finalize menu assets after loading all assets 2021-12-29 00:20:54 +01:00
Jan 775bf01752 Add Image loading for dds textures for iw3 2021-04-28 15:29:56 +02:00
Jan 12ac569bfa Dump images from GfxImageLoadDef 2021-04-28 00:05:56 +02:00
Jan 6b72ac080f Finish iw3 zone code generation 2021-04-14 18:39:54 +02:00
Jan 1267b8aa7b iw3 basis 2021-04-12 19:18:55 +02:00