2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-06-03 07:12:33 +00:00
Files
OpenAssetTools/test/SystemTests.lua
T
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

67 lines
1.4 KiB
Lua

SystemTests = {}
function SystemTests:include(includes)
if includes:handle(self:name()) then
includedirs {
path.join(TestFolder(), "SystemTests")
}
end
end
function SystemTests:link(links)
end
function SystemTests:use()
end
function SystemTests:name()
return "SystemTests"
end
function SystemTests:project()
local folder = TestFolder()
local includes = Includes:create()
local links = Links:create()
project(self:name())
targetdir(TargetDirectoryTest)
location "%{wks.location}/test/%{prj.name}"
kind "ConsoleApp"
language "C++"
files {
path.join(folder, "SystemTests/**.h"),
path.join(folder, "SystemTests/**.cpp")
}
self:include(includes)
Catch2Common:include(includes)
Utils:include(includes)
ZoneLoading:include(includes)
ZoneWriting:include(includes)
ObjCommonTestUtils:include(includes)
ObjLoading:include(includes)
ObjCompiling:include(includes)
ObjWriting:include(includes)
Linking:include(includes)
Unlinking:include(includes)
catch2:include(includes)
Raw:use()
links:linkto(Utils)
links:linkto(ZoneLoading)
links:linkto(ZoneWriting)
links:linkto(ObjCommonTestUtils)
links:linkto(ObjLoading)
links:linkto(ObjCompiling)
links:linkto(ObjWriting)
links:linkto(catch2)
links:linkto(Catch2Common)
links:linkto(Linking)
links:linkto(Unlinking)
links:linkall()
end