mo
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 <jan@laupetin.net >
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
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
bf9beb1458
chore: make sure TechsetCompilerT6 sets proper worldVertFormat
2026-03-02 22:08:55 +00:00
Jan Laupetin
aa47ffa629
refactor: introduce subasset loading
2026-02-05 18:17:15 +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
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
5cc52c42cd
refactor: image and obj data loading
2024-09-26 07:22:35 +02:00
Jan
1f5050befa
feat: first draft of loading gltf models for t6
2024-09-05 21:19:39 +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
3dad9d60da
chore: fix typo in structs
2024-04-07 10:54:04 +02:00
Jan
df7b25b854
feat: dump t6 materials as json
2024-02-18 10:16:43 +01:00
Clang Format
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
Jan
347c1b3d68
Fix material loading sortkeys and cameraRegion
2022-08-06 15:40:00 +02:00
Jan
5771044c08
Material dumping and loading stuff
2022-08-06 10:52:52 +02:00
Jan
92d808b7a4
Use constants for material sort key names
2022-07-23 13:05:37 +02:00
Jan
ea79e60856
Load material sortkeys v1
2022-07-23 12:22:59 +02:00
Jan
82349d3432
Material loading base
2022-07-15 11:21:54 +02:00
Jan
638b659a48
Example material stencil values and blendfunc
2022-05-08 12:44:34 +02:00
Jan
cc2f0ca487
Write Statebits data to gdt materials
2022-05-02 21:11:51 +02:00
Jan
b94c5b381d
Extract more info from techset name
2022-05-02 18:45:49 +02:00
Jan
01d9a4d912
Improve recognition of material types
2022-04-29 23:55:10 +02:00
Jan
2823a46b92
Add improvements from iw3 material dumping to iw4
2022-04-21 19:58:49 +02:00
Jan
ebb13e18da
Write additional details in iw4 material json
2022-04-18 18:23:30 +02:00
Jan
ce22a2fea6
Add more details about material semantic and samplerState
2022-04-18 15:26:24 +02:00
Jan
2114b761b0
Dump iw4 materials as json for data investigation purposes
2022-04-18 14:46:13 +02:00
Jan
6ff86ae5e7
Set technique flags based on used constants, samplers and technique names
2022-04-16 22:51:38 +02:00
Jan
4abb846ccd
fix iw4 enum not having a name
2022-04-16 15:44:57 +02:00
Jan
cb45bdaadc
Progress on reversing technique flags
2022-04-16 15:41:45 +02:00
Jan
9990338130
Handle custom samplers
2022-04-15 16:34:44 +02:00
Jan
65c9267b06
Correctly identify update frequencies for shader arguments
2022-04-15 16:01:39 +02:00
Jan
7d2ca46cb1
Dump known material argument hashes
2022-04-09 19:07:24 +02:00
Jan
eb5312899f
Parse techset files for IW4
2022-03-26 18:47:43 +01:00
Jan
ef936eba57
Dump IW4 techset code constant argument mappings
2022-03-24 23:04:35 +01:00
Jan
5f44d95770
TODO IW4 Shader arg dumping
2022-03-23 18:22:23 +01:00