2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-05-12 21:31:43 +00:00

fix: iw5 uses isFrictionInfinity as well

This commit is contained in:
Jan Laupetin
2026-05-03 16:00:30 +02:00
parent a31d3c4b88
commit 2d2ea30b45
4 changed files with 20 additions and 2 deletions
+1
View File
@@ -206,6 +206,7 @@ namespace IW5
float mass; float mass;
float bounce; float bounce;
float friction; float friction;
int isFrictionInfinity;
float bulletForceScale; float bulletForceScale;
float explosiveForceScale; float explosiveForceScale;
const char* sndAliasPrefix; const char* sndAliasPrefix;
@@ -8,6 +8,7 @@ namespace IW5
{"mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT }, {"mass", offsetof(PhysPresetInfo, mass), CSPFT_FLOAT },
{"bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT }, {"bounce", offsetof(PhysPresetInfo, bounce), CSPFT_FLOAT },
{"friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT }, {"friction", offsetof(PhysPresetInfo, friction), CSPFT_FLOAT },
{"isFrictionInfinity", offsetof(PhysPresetInfo, isFrictionInfinity), CSPFT_QBOOLEAN},
{"bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT }, {"bulletForceScale", offsetof(PhysPresetInfo, bulletForceScale), CSPFT_FLOAT },
{"explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT }, {"explosiveForceScale", offsetof(PhysPresetInfo, explosiveForceScale), CSPFT_FLOAT },
{"sndAliasPrefix", offsetof(PhysPresetInfo, sndAliasPrefix), CSPFT_STRING }, {"sndAliasPrefix", offsetof(PhysPresetInfo, sndAliasPrefix), CSPFT_STRING },
@@ -48,7 +48,12 @@ namespace
{ {
physPreset.mass = physPresetInfo.mass; physPreset.mass = physPresetInfo.mass;
physPreset.bounce = physPresetInfo.bounce; physPreset.bounce = physPresetInfo.bounce;
physPreset.friction = physPresetInfo.friction;
if (physPresetInfo.isFrictionInfinity != 0)
physPreset.friction = std::numeric_limits<float>::max();
else
physPreset.friction = physPresetInfo.friction;
physPreset.bulletForceScale = physPresetInfo.bulletForceScale; physPreset.bulletForceScale = physPresetInfo.bulletForceScale;
physPreset.explosiveForceScale = physPresetInfo.explosiveForceScale; physPreset.explosiveForceScale = physPresetInfo.explosiveForceScale;
physPreset.sndAliasPrefix = physPresetInfo.sndAliasPrefix; physPreset.sndAliasPrefix = physPresetInfo.sndAliasPrefix;
@@ -47,7 +47,18 @@ namespace
{ {
physPresetInfo->mass = physPreset->mass; physPresetInfo->mass = physPreset->mass;
physPresetInfo->bounce = physPreset->bounce; physPresetInfo->bounce = physPreset->bounce;
physPresetInfo->friction = physPreset->friction;
if (physPreset->friction >= std::numeric_limits<float>::max())
{
physPresetInfo->isFrictionInfinity = 1;
physPresetInfo->friction = 0;
}
else
{
physPresetInfo->isFrictionInfinity = 0;
physPresetInfo->friction = physPreset->friction;
}
physPresetInfo->bulletForceScale = physPreset->bulletForceScale; physPresetInfo->bulletForceScale = physPreset->bulletForceScale;
physPresetInfo->explosiveForceScale = physPreset->explosiveForceScale; physPresetInfo->explosiveForceScale = physPreset->explosiveForceScale;
physPresetInfo->sndAliasPrefix = physPreset->sndAliasPrefix; physPresetInfo->sndAliasPrefix = physPreset->sndAliasPrefix;