2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-05-13 21:51:42 +00:00

Merge pull request #753 from pagingred/iw5_physpreset_dumper

feat: phys presets dumping and loading for IW3, IW5, T5
This commit is contained in:
Paging Red
2026-05-02 06:01:59 -04:00
committed by GitHub
parent 704b191b97
commit 759a3ccf0e
41 changed files with 1698 additions and 12 deletions
@@ -0,0 +1,9 @@
#pragma once
namespace IW5
{
inline const char* szPhysPresetScalingNames[]{
"linear",
"quadratic",
};
} // namespace IW5
@@ -0,0 +1,25 @@
#pragma once
#include "Game/IW5/IW5.h"
namespace IW5
{
inline cspField_t phys_preset_fields[]{
{"mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT },
{"bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT },
{"friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT },
{"bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT },
{"explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT },
{"sndAliasPrefix", offsetof(PhysPresetInfo, sndAliasPrefix), CSPFT_STRING },
{"piecesSpreadFraction", offsetof(PhysPresetInfo, piecesSpreadFraction), CSPFT_FLOAT },
{"piecesUpwardVelocity", offsetof(PhysPresetInfo, piecesUpwardVelocity), CSPFT_FLOAT },
{"minMomentum", offsetof(PhysPresetInfo, minMomentum), CSPFT_FLOAT },
{"maxMomentum", offsetof(PhysPresetInfo, maxMomentum), CSPFT_FLOAT },
{"minPitch", offsetof(PhysPresetInfo, minPitch), CSPFT_FLOAT },
{"maxPitch", offsetof(PhysPresetInfo, maxPitch), CSPFT_FLOAT },
{"volumeType", offsetof(PhysPresetInfo, volumeType), PPFT_SCALING },
{"pitchType", offsetof(PhysPresetInfo, pitchType), PPFT_SCALING },
{"tempDefaultToCylinder", offsetof(PhysPresetInfo, tempDefaultToCylinder), CSPFT_QBOOLEAN},
{"perSurfaceSndAlias", offsetof(PhysPresetInfo, perSurfaceSndAlias), CSPFT_QBOOLEAN},
};
}
+10
View File
@@ -0,0 +1,10 @@
#pragma once
namespace T5
{
static constexpr auto INFO_STRING_PREFIX_PHYS_PRESET = "PHYSIC";
static constexpr auto GDF_FILENAME_PHYS_PRESET = "physpreset.gdf";
static constexpr float MAX_FRICTION = 1e+10;
} // namespace T5
@@ -0,0 +1,27 @@
#pragma once
#include "Game/T5/T5.h"
namespace T5
{
inline cspField_t phys_preset_fields[]{
{"mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT },
{"bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT },
{"friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT },
{"isFrictionInfinity", offsetof(PhysPresetInfo, isFrictionInfinity), CSPFT_QBOOLEAN},
{"bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT },
{"explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT },
{"piecesSpreadFraction", offsetof(PhysPresetInfo, piecesSpreadFraction), CSPFT_FLOAT },
{"piecesUpwardVelocity", offsetof(PhysPresetInfo, piecesUpwardVelocity), CSPFT_FLOAT },
{"canFloat", offsetof(PhysPresetInfo, canFloat), CSPFT_QBOOLEAN},
{"gravityScale", offsetof(PhysPresetInfo, gravityScale), CSPFT_FLOAT },
{"massOffsetX", offsetof(PhysPresetInfo, centerOfMassOffset.x), CSPFT_FLOAT },
{"massOffsetY", offsetof(PhysPresetInfo, centerOfMassOffset.y), CSPFT_FLOAT },
{"massOffsetZ", offsetof(PhysPresetInfo, centerOfMassOffset.z), CSPFT_FLOAT },
{"buoyancyMinX", offsetof(PhysPresetInfo, buoyancyBoxMin.x), CSPFT_FLOAT },
{"buoyancyMinY", offsetof(PhysPresetInfo, buoyancyBoxMin.y), CSPFT_FLOAT },
{"buoyancyMinZ", offsetof(PhysPresetInfo, buoyancyBoxMin.z), CSPFT_FLOAT },
{"buoyancyMaxX", offsetof(PhysPresetInfo, buoyancyBoxMax.x), CSPFT_FLOAT },
{"buoyancyMaxY", offsetof(PhysPresetInfo, buoyancyBoxMax.y), CSPFT_FLOAT },
{"buoyancyMaxZ", offsetof(PhysPresetInfo, buoyancyBoxMax.z), CSPFT_FLOAT },
};
}