feat: templated vehicle loading and dumping for IW4 and IW5 (#929)

* feat: templated vehicle loading and dumping for IW4 and IW5

* chore: restructure vehicle tests into separate files

---------

Co-authored-by: Jan Laupetin <[email protected]>
This commit is contained in:
mo
2026-07-26 00:28:44 +02:00
committed by GitHub
co-authored by Jan Laupetin
parent f8415e33cc
commit 76e5bb17a2
26 changed files with 1741 additions and 65 deletions
@@ -0,0 +1,226 @@
#pragma once
#include "Game/IW5/IW5.h"
namespace IW5
{
inline cspField_t vehicle_fields[]{
{"type", offsetof(VehicleDef, type), VFT_TYPE },
{"useHintString", offsetof(VehicleDef, useHintString), CSPFT_STRING },
{"health", offsetof(VehicleDef, health), CSPFT_INT },
{"quadBarrel", offsetof(VehicleDef, quadBarrel), CSPFT_QBOOLEAN },
{"textureScrollScale", offsetof(VehicleDef, texScrollScale), CSPFT_FLOAT },
{"topSpeed", offsetof(VehicleDef, topSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"accel", offsetof(VehicleDef, accel), CSPFT_MPH_TO_INCHES_PER_SEC},
{"rotRate", offsetof(VehicleDef, rotRate), CSPFT_FLOAT },
{"rotAccel", offsetof(VehicleDef, rotAccel), CSPFT_FLOAT },
{"maxBodyPitch", offsetof(VehicleDef, maxBodyPitch), CSPFT_FLOAT },
{"maxBodyRoll", offsetof(VehicleDef, maxBodyRoll), CSPFT_FLOAT },
{"fakeBodyStabilizer", offsetof(VehicleDef, fakeBodyStabilizer), CSPFT_QBOOLEAN },
{"fakeBodyAccelPitch", offsetof(VehicleDef, fakeBodyAccelPitch), CSPFT_FLOAT },
{"fakeBodyAccelRoll", offsetof(VehicleDef, fakeBodyAccelRoll), CSPFT_FLOAT },
{"fakeBodyVelPitch", offsetof(VehicleDef, fakeBodyVelPitch), CSPFT_FLOAT },
{"fakeBodyVelRoll", offsetof(VehicleDef, fakeBodyVelRoll), CSPFT_FLOAT },
{"fakeBodySideVelPitch", offsetof(VehicleDef, fakeBodySideVelPitch), CSPFT_FLOAT },
{"fakeBodyPitchStrength", offsetof(VehicleDef, fakeBodyPitchStrength), CSPFT_FLOAT },
{"fakeBodyRollStrength", offsetof(VehicleDef, fakeBodyRollStrength), CSPFT_FLOAT },
{"fakeBodyPitchDampening", offsetof(VehicleDef, fakeBodyPitchDampening), CSPFT_FLOAT },
{"fakeBodyRollDampening", offsetof(VehicleDef, fakeBodyRollDampening), CSPFT_FLOAT },
{"fakeBodyBoatRockingAmplitude", offsetof(VehicleDef, fakeBodyBoatRockingAmplitude), CSPFT_FLOAT },
{"fakeBodyBoatRockingPeriod", offsetof(VehicleDef, fakeBodyBoatRockingPeriod), CSPFT_FLOAT },
{"fakeBodyBoatRockingRotationPeriod", offsetof(VehicleDef, fakeBodyBoatRockingRotationPeriod), CSPFT_FLOAT },
{"fakeBodyBoatRockingFadeoutSpeed", offsetof(VehicleDef, fakeBodyBoatRockingFadeoutSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingMinForce", offsetof(VehicleDef, boatBouncingMinForce), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingMaxForce", offsetof(VehicleDef, boatBouncingMaxForce), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingRate", offsetof(VehicleDef, boatBouncingRate), CSPFT_FLOAT },
{"boatBouncingFadeinSpeed", offsetof(VehicleDef, boatBouncingFadeinSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boatBouncingFadeoutSteeringAngle", offsetof(VehicleDef, boatBouncingFadeoutSteeringAngle), CSPFT_FLOAT },
{"collisionDamage", offsetof(VehicleDef, collisionDamage), CSPFT_FLOAT },
{"collisionSpeed", offsetof(VehicleDef, collisionSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"killcamZDist", offsetof(VehicleDef, killcamOffset[0]), CSPFT_FLOAT },
{"killcamBackDist", offsetof(VehicleDef, killcamOffset[1]), CSPFT_FLOAT },
{"killcamUpDist", offsetof(VehicleDef, killcamOffset[2]), CSPFT_FLOAT },
{"playerProtected", offsetof(VehicleDef, playerProtected), CSPFT_QBOOLEAN },
{"bulletDamage", offsetof(VehicleDef, bulletDamage), CSPFT_QBOOLEAN },
{"armorPiercingDamage", offsetof(VehicleDef, armorPiercingDamage), CSPFT_QBOOLEAN },
{"grenadeDamage", offsetof(VehicleDef, grenadeDamage), CSPFT_QBOOLEAN },
{"projectileDamage", offsetof(VehicleDef, projectileDamage), CSPFT_QBOOLEAN },
{"projectileSplashDamage", offsetof(VehicleDef, projectileSplashDamage), CSPFT_QBOOLEAN },
{"heavyExplosiveDamage", offsetof(VehicleDef, heavyExplosiveDamage), CSPFT_QBOOLEAN },
{"physicsEnabled", offsetof(VehicleDef, vehPhysDef.physicsEnabled), CSPFT_QBOOLEAN },
{"physicsPreset", offsetof(VehicleDef, vehPhysDef.physPresetName), CSPFT_STRING },
{"accelerationGraph", offsetof(VehicleDef, vehPhysDef.accelGraphName), CSPFT_STRING },
{"steeringAxle", offsetof(VehicleDef, vehPhysDef.steeringAxle), VFT_AXLE_STEERING },
{"powerAxle", offsetof(VehicleDef, vehPhysDef.powerAxle), VFT_AXLE_POWER },
{"brakingAxle", offsetof(VehicleDef, vehPhysDef.brakingAxle), VFT_AXLE_BRAKING },
{"reverseSpeed", offsetof(VehicleDef, vehPhysDef.reverseSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"maxVelocity", offsetof(VehicleDef, vehPhysDef.maxVelocity), CSPFT_MPH_TO_INCHES_PER_SEC},
{"maxPitch", offsetof(VehicleDef, vehPhysDef.maxPitch), CSPFT_FLOAT },
{"maxRoll", offsetof(VehicleDef, vehPhysDef.maxRoll), CSPFT_FLOAT },
{"suspensionTravelRear", offsetof(VehicleDef, vehPhysDef.suspensionTravelRear), CSPFT_FLOAT },
{"suspensionStrengthFront", offsetof(VehicleDef, vehPhysDef.suspensionStrengthFront), CSPFT_FLOAT },
{"suspensionDampingFront", offsetof(VehicleDef, vehPhysDef.suspensionDampingFront), CSPFT_FLOAT },
{"suspensionStrengthRear", offsetof(VehicleDef, vehPhysDef.suspensionStrengthRear), CSPFT_FLOAT },
{"suspensionDampingRear", offsetof(VehicleDef, vehPhysDef.suspensionDampingRear), CSPFT_FLOAT },
{"frictionBraking", offsetof(VehicleDef, vehPhysDef.frictionBraking), CSPFT_FLOAT },
{"frictionCoasting", offsetof(VehicleDef, vehPhysDef.frictionCoasting), CSPFT_FLOAT },
{"frictionTopSpeed", offsetof(VehicleDef, vehPhysDef.frictionTopSpeed), CSPFT_FLOAT },
{"frictionSide", offsetof(VehicleDef, vehPhysDef.frictionSide), CSPFT_FLOAT },
{"frictionSideRear", offsetof(VehicleDef, vehPhysDef.frictionSideRear), CSPFT_FLOAT },
{"velocityDependentSlip", offsetof(VehicleDef, vehPhysDef.velocityDependentSlip), CSPFT_FLOAT },
{"rollStability", offsetof(VehicleDef, vehPhysDef.rollStability), CSPFT_FLOAT },
{"rollResistance", offsetof(VehicleDef, vehPhysDef.rollResistance), CSPFT_MPH_TO_INCHES_PER_SEC},
{"pitchResistance", offsetof(VehicleDef, vehPhysDef.pitchResistance), CSPFT_MPH_TO_INCHES_PER_SEC},
{"yawResistance", offsetof(VehicleDef, vehPhysDef.yawResistance), CSPFT_MPH_TO_INCHES_PER_SEC},
{"uprightStrengthPitch", offsetof(VehicleDef, vehPhysDef.uprightStrengthPitch), CSPFT_MPH_TO_INCHES_PER_SEC},
{"uprightStrengthRoll", offsetof(VehicleDef, vehPhysDef.uprightStrengthRoll), CSPFT_MPH_TO_INCHES_PER_SEC},
{"targetAirPitch", offsetof(VehicleDef, vehPhysDef.targetAirPitch), CSPFT_FLOAT },
{"airYawTorque", offsetof(VehicleDef, vehPhysDef.airYawTorque), CSPFT_MPH_TO_INCHES_PER_SEC},
{"airPitchTorque", offsetof(VehicleDef, vehPhysDef.airPitchTorque), CSPFT_MPH_TO_INCHES_PER_SEC},
{"minimumMomentumForCollision", offsetof(VehicleDef, vehPhysDef.minimumMomentumForCollision), CSPFT_MPH_TO_INCHES_PER_SEC},
{"collisionLaunchForceScale", offsetof(VehicleDef, vehPhysDef.collisionLaunchForceScale), CSPFT_FLOAT },
{"wreckedMassScale", offsetof(VehicleDef, vehPhysDef.wreckedMassScale), CSPFT_FLOAT },
{"wreckedBodyFriction", offsetof(VehicleDef, vehPhysDef.wreckedBodyFriction), CSPFT_FLOAT },
{"minimumJoltForNotify", offsetof(VehicleDef, vehPhysDef.minimumJoltForNotify), CSPFT_MPH_TO_INCHES_PER_SEC},
{"slipThresholdFront", offsetof(VehicleDef, vehPhysDef.slipThresholdFront), CSPFT_FLOAT },
{"slipThresholdRear", offsetof(VehicleDef, vehPhysDef.slipThresholdRear), CSPFT_FLOAT },
{"slipFricScaleFront", offsetof(VehicleDef, vehPhysDef.slipFricScaleFront), CSPFT_FLOAT },
{"slipFricScaleRear", offsetof(VehicleDef, vehPhysDef.slipFricScaleRear), CSPFT_FLOAT },
{"slipFricRateFront", offsetof(VehicleDef, vehPhysDef.slipFricRateFront), CSPFT_FLOAT },
{"slipFricRateRear", offsetof(VehicleDef, vehPhysDef.slipFricRateRear), CSPFT_FLOAT },
{"slipYawTorque", offsetof(VehicleDef, vehPhysDef.slipYawTorque), CSPFT_MPH_TO_INCHES_PER_SEC},
{"boostDuration", offsetof(VehicleDef, boostDuration), CSPFT_FLOAT },
{"boostRechargeTime", offsetof(VehicleDef, boostRechargeTime), CSPFT_FLOAT },
{"boostAcceleration", offsetof(VehicleDef, boostAcceleration), CSPFT_MPH_TO_INCHES_PER_SEC},
{"suspensionTravel", offsetof(VehicleDef, suspensionTravel), CSPFT_FLOAT },
{"maxSteeringAngle", offsetof(VehicleDef, maxSteeringAngle), CSPFT_FLOAT },
{"steeringLerp", offsetof(VehicleDef, steeringLerp), CSPFT_FLOAT },
{"minSteeringScale", offsetof(VehicleDef, minSteeringScale), CSPFT_FLOAT },
{"minSteeringSpeed", offsetof(VehicleDef, minSteeringSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"vehHelicopterBoundsRadius", offsetof(VehicleDef, vehHelicopterBoundsRadius), CSPFT_FLOAT },
{"vehHelicopterMaxSpeed", offsetof(VehicleDef, vehHelicopterMaxSpeed), CSPFT_FLOAT },
{"vehHelicopterMaxSpeedVertical", offsetof(VehicleDef, vehHelicopterMaxSpeedVertical), CSPFT_FLOAT },
{"vehHelicopterMaxAccel", offsetof(VehicleDef, vehHelicopterMaxAccel), CSPFT_FLOAT },
{"vehHelicopterMaxAccelVertical", offsetof(VehicleDef, vehHelicopterMaxAccelVertical), CSPFT_FLOAT },
{"vehHelicopterDecelerationFwd", offsetof(VehicleDef, vehHelicopterDecelerationFwd), CSPFT_FLOAT },
{"vehHelicopterDecelerationSide", offsetof(VehicleDef, vehHelicopterDecelerationSide), CSPFT_FLOAT },
{"vehHelicopterDecelerationUp", offsetof(VehicleDef, vehHelicopterDecelerationUp), CSPFT_FLOAT },
{"vehHelicopterMaxYawRate", offsetof(VehicleDef, vehHelicopterMaxYawRate), CSPFT_FLOAT },
{"vehHelicopterMaxYawAccel", offsetof(VehicleDef, vehHelicopterMaxYawAccel), CSPFT_FLOAT },
{"vehHelicopterTiltFromVelocity", offsetof(VehicleDef, vehHelicopterTiltFromVelocity), CSPFT_FLOAT },
{"vehHelicopterTiltFromControllerAxes", offsetof(VehicleDef, vehHelicopterTiltFromControllerAxes), CSPFT_FLOAT },
{"vehHelicopterTiltFromAcceleration", offsetof(VehicleDef, vehHelicopterTiltFromAcceleration), CSPFT_FLOAT },
{"vehHelicopterTiltFromDeceleration", offsetof(VehicleDef, vehHelicopterTiltFromDeceleration), CSPFT_FLOAT },
{"vehHelicopterTiltFromFwdAndYaw_VelAtMaxTilt", offsetof(VehicleDef, vehHelicopterTiltFromFwdAndYaw_VelAtMaxTilt), CSPFT_FLOAT },
{"vehHelicopterTiltFromFwdAndYaw", offsetof(VehicleDef, vehHelicopterTiltFromFwdAndYaw), CSPFT_FLOAT },
{"vehHelicopterTiltMomentum", offsetof(VehicleDef, vehHelicopterTiltMomentum), CSPFT_FLOAT },
{"vehHelicopterTiltSpeed", offsetof(VehicleDef, vehHelicopterTiltSpeed), CSPFT_FLOAT },
{"vehHelicopterMaxPitch", offsetof(VehicleDef, vehHelicopterMaxPitch), CSPFT_FLOAT },
{"vehHelicopterMaxRoll", offsetof(VehicleDef, vehHelicopterMaxRoll), CSPFT_FLOAT },
{"vehHelicopterHoverSpeedThreshold", offsetof(VehicleDef, vehHelicopterHoverSpeedThreshold), CSPFT_FLOAT },
{"vehHelicopterJitterJerkyness", offsetof(VehicleDef, vehHelicopterJitterJerkyness), CSPFT_FLOAT },
{"vehHelicopterLookaheadTime", offsetof(VehicleDef, vehHelicopterLookaheadTime), CSPFT_FLOAT },
{"vehHelicopterSoftCollisions", offsetof(VehicleDef, vehHelicopterSoftCollisions), CSPFT_QBOOLEAN },
{"camLookEnabled", offsetof(VehicleDef, camLookEnabled), CSPFT_QBOOLEAN },
{"camRelativeControl", offsetof(VehicleDef, camRelativeControl), CSPFT_QBOOLEAN },
{"camLerp", offsetof(VehicleDef, camLerp), CSPFT_FLOAT },
{"camHeight", offsetof(VehicleDef, camHeight), CSPFT_FLOAT },
{"camRadius", offsetof(VehicleDef, camRadius), CSPFT_FLOAT },
{"camPitchInfluence", offsetof(VehicleDef, camPitchInfluence), CSPFT_FLOAT },
{"camYawInfluence", offsetof(VehicleDef, camYawInfluence), CSPFT_FLOAT },
{"camRollInfluence", offsetof(VehicleDef, camRollInfluence), CSPFT_FLOAT },
{"camFovIncrease", offsetof(VehicleDef, camFovIncrease), CSPFT_FLOAT },
{"camFovOffset", offsetof(VehicleDef, camFovOffset), CSPFT_FLOAT },
{"camFovSpeed", offsetof(VehicleDef, camFovSpeed), CSPFT_FLOAT },
{"camReturnSpeed", offsetof(VehicleDef, camReturnSpeed), CSPFT_FLOAT },
{"camReturnLerp", offsetof(VehicleDef, camReturnLerp), CSPFT_FLOAT },
{"vehCam_UseGDT", offsetof(VehicleDef, vehCam_UseGDT), CSPFT_QBOOLEAN },
{"vehCam_anglesPitch", offsetof(VehicleDef, vehCam_anglesPitch), CSPFT_FLOAT },
{"vehCam_anglesYaw", offsetof(VehicleDef, vehCam_anglesYaw), CSPFT_FLOAT },
{"vehCam_anglesRoll", offsetof(VehicleDef, vehCam_anglesRoll), CSPFT_FLOAT },
{"vehCam_offsetX", offsetof(VehicleDef, vehCam_offsetX), CSPFT_FLOAT },
{"vehCam_offsetY", offsetof(VehicleDef, vehCam_offsetY), CSPFT_FLOAT },
{"vehCam_offsetZ", offsetof(VehicleDef, vehCam_offsetZ), CSPFT_FLOAT },
{"vehCam_radius", offsetof(VehicleDef, vehCam_radius), CSPFT_FLOAT },
{"vehCam_speedInfluence", offsetof(VehicleDef, vehCam_speedInfluence), CSPFT_FLOAT },
{"vehCam_pitchTurnRate", offsetof(VehicleDef, vehCam_pitchTurnRate), CSPFT_FLOAT },
{"vehCam_pitchClamp", offsetof(VehicleDef, vehCam_pitchClamp), CSPFT_FLOAT },
{"vehCam_yawTurnRate", offsetof(VehicleDef, vehCam_yawTurnRate), CSPFT_FLOAT },
{"vehCam_yawClamp", offsetof(VehicleDef, vehCam_yawClamp), CSPFT_FLOAT },
{"vehCam_zOffsetMode", offsetof(VehicleDef, vehCam_zOffsetMode), VFT_CAM_Z_OFFSET_MODE },
{"vehCam_anglesPitch3P", offsetof(VehicleDef, vehCam_anglesPitch3P), CSPFT_FLOAT },
{"vehCam_anglesYaw3P", offsetof(VehicleDef, vehCam_anglesYaw3P), CSPFT_FLOAT },
{"vehCam_anglesRoll3P", offsetof(VehicleDef, vehCam_anglesRoll3P), CSPFT_FLOAT },
{"vehCam_offsetX3P", offsetof(VehicleDef, vehCam_offsetX3P), CSPFT_FLOAT },
{"vehCam_offsetY3P", offsetof(VehicleDef, vehCam_offsetY3P), CSPFT_FLOAT },
{"vehCam_offsetZ3P", offsetof(VehicleDef, vehCam_offsetZ3P), CSPFT_FLOAT },
{"vehCam_radius3P", offsetof(VehicleDef, vehCam_radius3P), CSPFT_FLOAT },
{"vehCam_speedInfluence3P", offsetof(VehicleDef, vehCam_speedInfluence3P), CSPFT_FLOAT },
{"vehCam_pitchTurnRate3P", offsetof(VehicleDef, vehCam_pitchTurnRate3P), CSPFT_FLOAT },
{"vehCam_pitchClamp3P", offsetof(VehicleDef, vehCam_pitchClamp3P), CSPFT_FLOAT },
{"vehCam_yawTurnRate3P", offsetof(VehicleDef, vehCam_yawTurnRate3P), CSPFT_FLOAT },
{"vehCam_yawClamp3P", offsetof(VehicleDef, vehCam_yawClamp3P), CSPFT_FLOAT },
{"vehCam_zOffsetMode3P", offsetof(VehicleDef, vehCam_zOffsetMode3P), VFT_CAM_Z_OFFSET_MODE },
{"turretWeaponName", offsetof(VehicleDef, turretWeaponName), CSPFT_STRING },
{"turretHorizSpanLeft", offsetof(VehicleDef, turretHorizSpanLeft), CSPFT_FLOAT },
{"turretHorizSpanRight", offsetof(VehicleDef, turretHorizSpanRight), CSPFT_FLOAT },
{"turretVertSpanUp", offsetof(VehicleDef, turretVertSpanUp), CSPFT_FLOAT },
{"turretVertSpanDown", offsetof(VehicleDef, turretVertSpanDown), CSPFT_FLOAT },
{"turretHorizResistLeft", offsetof(VehicleDef, turretHorizResistLeft), CSPFT_FLOAT },
{"turretHorizResistRight", offsetof(VehicleDef, turretHorizResistRight), CSPFT_FLOAT },
{"turretVertResistUp", offsetof(VehicleDef, turretVertResistUp), CSPFT_FLOAT },
{"turretVertResistDown", offsetof(VehicleDef, turretVertResistDown), CSPFT_FLOAT },
{"turretRotRate", offsetof(VehicleDef, turretRotRate), CSPFT_FLOAT },
{"turretSpinSnd", offsetof(VehicleDef, turretSpinSnd), CSPFT_SOUND },
{"turretStopSnd", offsetof(VehicleDef, turretStopSnd), CSPFT_SOUND },
{"trophyEnabled", offsetof(VehicleDef, trophyEnabled), CSPFT_QBOOLEAN },
{"trophyRadius", offsetof(VehicleDef, trophyRadius), CSPFT_FLOAT },
{"trophyInactiveRadius", offsetof(VehicleDef, trophyInactiveRadius), CSPFT_FLOAT },
{"trophyAmmoCount", offsetof(VehicleDef, trophyAmmoCount), CSPFT_INT },
{"trophyReloadTime", offsetof(VehicleDef, trophyReloadTime), CSPFT_FLOAT },
{"trophyTags", offsetof(VehicleDef, trophyTags), VFT_TROPHY_TAGS },
{"trophyExplodeFx", offsetof(VehicleDef, trophyExplodeFx), CSPFT_FX },
{"trophyFlashFx", offsetof(VehicleDef, trophyFlashFx), CSPFT_FX },
{"compassFriendlyIcon", offsetof(VehicleDef, compassFriendlyIcon), CSPFT_MATERIAL },
{"compassEnemyIcon", offsetof(VehicleDef, compassEnemyIcon), CSPFT_MATERIAL },
{"compassFriendlyAltIcon", offsetof(VehicleDef, compassFriendlyAltIcon), CSPFT_MATERIAL },
{"compassEnemyAltIcon", offsetof(VehicleDef, compassEnemyAltIcon), CSPFT_MATERIAL },
{"compassIconWidth", offsetof(VehicleDef, compassIconWidth), CSPFT_INT },
{"compassIconHeight", offsetof(VehicleDef, compassIconHeight), CSPFT_INT },
{"lowIdleSnd", offsetof(VehicleDef, idleLowSnd), CSPFT_SOUND },
{"highIdleSnd", offsetof(VehicleDef, idleHighSnd), CSPFT_SOUND },
{"lowEngineSnd", offsetof(VehicleDef, engineLowSnd), CSPFT_SOUND },
{"highEngineSnd", offsetof(VehicleDef, engineHighSnd), CSPFT_SOUND },
{"engineSndSpeed", offsetof(VehicleDef, engineSndSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"audioOriginTag", offsetof(VehicleDef, audioOriginTag), CSPFT_SCRIPT_STRING },
{"lowIdleSndAlt", offsetof(VehicleDef, idleLowSndAlt), CSPFT_SOUND },
{"highIdleSndAlt", offsetof(VehicleDef, idleHighSndAlt), CSPFT_SOUND },
{"lowEngineSndAlt", offsetof(VehicleDef, engineLowSndAlt), CSPFT_SOUND },
{"highEngineSndAlt", offsetof(VehicleDef, engineHighSndAlt), CSPFT_SOUND },
{"engineSndSpeedAlt", offsetof(VehicleDef, engineSndSpeedAlt), CSPFT_MPH_TO_INCHES_PER_SEC},
{"audioOriginTagAlt", offsetof(VehicleDef, audioOriginTagAlt), CSPFT_SCRIPT_STRING },
{"turretSpinSndAlt", offsetof(VehicleDef, turretSpinSndAlt), CSPFT_SOUND },
{"turretStopSndAlt", offsetof(VehicleDef, turretStopSndAlt), CSPFT_SOUND },
{"engineStartUpSnd", offsetof(VehicleDef, engineStartUpSnd), CSPFT_SOUND },
{"engineStartUpLength", offsetof(VehicleDef, engineStartUpLength), CSPFT_MILLISECONDS },
{"engineShutdownSnd", offsetof(VehicleDef, engineShutdownSnd), CSPFT_SOUND },
{"engineIdleSnd", offsetof(VehicleDef, engineIdleSnd), CSPFT_SOUND },
{"engineSustainSnd", offsetof(VehicleDef, engineSustainSnd), CSPFT_SOUND },
{"engineRampUpSnd", offsetof(VehicleDef, engineRampUpSnd), CSPFT_SOUND },
{"engineRampUpLength", offsetof(VehicleDef, engineRampUpLength), CSPFT_MILLISECONDS },
{"engineRampDownSnd", offsetof(VehicleDef, engineRampDownSnd), CSPFT_SOUND },
{"engineRampDownLength", offsetof(VehicleDef, engineRampDownLength), CSPFT_MILLISECONDS },
{"suspensionSoftSnd", offsetof(VehicleDef, suspensionSoftSnd), CSPFT_SOUND },
{"suspensionSoftCompression", offsetof(VehicleDef, suspensionSoftCompression), CSPFT_FLOAT },
{"suspensionHardSnd", offsetof(VehicleDef, suspensionHardSnd), CSPFT_SOUND },
{"suspensionHardCompression", offsetof(VehicleDef, suspensionHardCompression), CSPFT_FLOAT },
{"collisionSnd", offsetof(VehicleDef, collisionSnd), CSPFT_SOUND },
{"collisionBlendSpeed", offsetof(VehicleDef, collisionBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"speedSnd", offsetof(VehicleDef, speedSnd), CSPFT_SOUND },
{"speedSndBlendSpeed", offsetof(VehicleDef, speedSndBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"surfaceSndPrefix", offsetof(VehicleDef, surfaceSndPrefix), CSPFT_STRING },
{"surfaceSndBlendSpeed", offsetof(VehicleDef, surfaceSndBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"slideVolume", offsetof(VehicleDef, slideVolume), CSPFT_FLOAT },
{"slideBlendSpeed", offsetof(VehicleDef, slideBlendSpeed), CSPFT_MPH_TO_INCHES_PER_SEC},
{"inAirPitch", offsetof(VehicleDef, inAirPitch), CSPFT_FLOAT },
};
} // namespace IW5
@@ -0,0 +1,33 @@
#pragma once
#include "Game/IW5/IW5.h"
namespace IW5
{
inline const char* s_vehicleClassNames[]{
"4 wheel",
"tank",
"plane",
"boat",
"artillery",
"helicopter",
"snowmobile",
"submarine",
"ugv",
};
static_assert(std::extent_v<decltype(s_vehicleClassNames)> == VEH_TYPE_COUNT);
inline const char* s_vehicleAxleTypeNames[]{
"front",
"rear",
"all",
};
static_assert(std::extent_v<decltype(s_vehicleAxleTypeNames)> == VEH_AXLE_COUNT);
inline const char* s_vehicleCameraZOffsetModeNames[]{
"world",
"vehicle",
"view",
};
static_assert(std::extent_v<decltype(s_vehicleCameraZOffsetModeNames)> == VEHCAM_ZMODE_COUNT);
} // namespace IW5
@@ -952,26 +952,6 @@ namespace IW5
};
static_assert(std::extent_v<decltype(weapIconRatioNames)> == WEAPON_ICON_RATIO_COUNT);
inline const char* s_vehicleClassNames[]{
"4 wheel",
"tank",
"plane",
"boat",
"artillery",
"helicopter",
"snowmobile",
"submarine",
"ugv",
};
static_assert(std::extent_v<decltype(s_vehicleClassNames)> == VEH_TYPE_COUNT);
inline const char* s_vehicleAxleTypeNames[]{
"front",
"rear",
"all",
};
static_assert(std::extent_v<decltype(s_vehicleAxleTypeNames)> == VEH_AXLE_COUNT);
inline const char* surfaceTypeSoundSuffixes[]{
"_default", "_bark", "_brick", "_carpet", "_cloth", "_concrete", "_dirt", "_flesh", "_foliage", "_glass", "_grass",
"_gravel", "_ice", "_metal", "_mud", "_paper", "_plaster", "_rock", "_sand", "_snow", "_water", "_wood",