#pragma once
#include "Game/IW4/IW4.h"

namespace IW4
{
    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},
        {"texureScrollScale", 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},
        {"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},
        {"camLookEnabled", offsetof(VehicleDef, camLookEnabled), CSPFT_QBOOLEAN},
        {"camLerp", offsetof(VehicleDef, camLerp), CSPFT_FLOAT},
        {"camPitchInfluence", offsetof(VehicleDef, camPitchInfluence), 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},
        {"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},
        {"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},
        {"compassFriendlyIcon", offsetof(VehicleDef, compassFriendlyIcon), CSPFT_MATERIAL},
        {"compassEnemyIcon", offsetof(VehicleDef, compassEnemyIcon), 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},
        {"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},
    };
}
