Vehicle Asset (MW3)

From COD Engine Research
Jump to: navigation, search

The vehicle asset is a was added on Modern Warfare 2 and has been on every Call of Duty game since except for Black Ops 1. The purpose of this asset is to declare vehicles, mostly used for killstreaks.

enum VehicleAxleType
{
  VEH_AXLE_FRONT = 0x0,
  VEH_AXLE_REAR = 0x1,
  VEH_AXLE_ALL = 0x2,
  VEH_AXLE_COUNT = 0x3,
};
 
struct VehiclePhysDef 
{
  int physicsEnabled;
  const char *physPresetName;
  PhysPreset *physPreset;
  const char *accelGraphName;
  VehicleAxleType steeringAxle;
  VehicleAxleType powerAxle;
  VehicleAxleType brakingAxle;
  float topSpeed;
  float reverseSpeed;
  float maxVelocity;
  float maxPitch;
  float maxRoll;
  float suspensionTravelFront;
  float suspensionTravelRear;
  float suspensionStrengthFront;
  float suspensionDampingFront;
  float suspensionStrengthRear;
  float suspensionDampingRear;
  float frictionBraking;
  float frictionCoasting;
  float frictionTopSpeed;
  float frictionSide;
  float frictionSideRear;
  float velocityDependentSlip;
  float rollStability;
  float rollResistance;
  float pitchResistance;
  float yawResistance;
  float uprightStrengthPitch;
  float uprightStrengthRoll;
  float targetAirPitch;
  float airYawTorque;
  float airPitchTorque;
  float minimumMomentumForCollision;
  float collisionLaunchForceScale;
  float wreckedMassScale;
  float wreckedBodyFriction;
  float minimumJoltForNotify;
  float slipThreshholdFront;
  float slipThreshholdRear;
  float slipFricScaleFront;
  float slipFricScaleRear;
  float slipFricRateFront;
  float slipFricRateRear;
  float slipYawTorque;
};
 
enum VehicleType : int
{
  VEH_WHEELS_4 = 0x0,
  VEH_TANK = 0x1,
  VEH_PLANE = 0x2,
  VEH_BOAT = 0x3,
  VEH_ARTILLERY = 0x4,
  VEH_HELICOPTER = 0x5,
  VEH_SNOWMOBILE = 0x6,
  VEH_TYPE_COUNT = 0x7,
};
 
enum VehicleTurretFireType
{
  VEH_TURRET_SINGLE_FIRE = 0x0,
  VEH_TURRET_DUAL_FIRE = 0x1,
  VEH_TURRET_ALT_FIRE = 0x2,
  VEH_TURRET_FIRE_TYPE_COUNT = 0x3,
};
 
struct VehicleDef
{
  const char *name;
  int type;
  const char *useHintString;
  int health;
  int quadBarrel;
  int hitClientScriptables;
  float texScrollScale;
  float topSpeed;
  float accel;
  float rotRate;
  float rotAccel;
  float maxBodyPitch;
  float maxBodyRoll;
  float fakeBodyAccelPitch;
  float fakeBodyAccelRoll;
  float fakeBodyVelPitch;
  float fakeBodyVelRoll;
  float fakeBodySideVelPitch;
  float fakeBodySidePitchStrength;
  float fakeBodyRollStrength;
  float fakeBodyPitchDampening;
  float fakeBodyRollDampening;
  float fakeBodyBoatRockingAmplitude;
  float fakeBodyBoatRockingPeriod;
  float fakeBodyBoatRockingRotationPeriod;
  float fakeBodyBoatRockingFadeoutSpeed;
  float boatBouncingMinForce;
  float boatBouncingMaxForce;
  float boatBouncingRate;
  float boatBouncingFadeinSpeed;
  float boatBouncingFadeoutSteeringAngle;
  float collisionDamage;
  float collisionSpeed;
  float killcamOffset[3];
  int playerProtected;
  int bulletDamage;
  int armorPiercingDamage;
  int grenadeDamage;
  int projectileDamage;
  int projectileSplashDamage;
  int heavyExplosiveDamage;
  VehiclePhysDef vehPhysDef;
       char unknown2[0x120];
  const char * turretWeaponName;
  WeaponCompleteDef *turretWeapon;
  float turretHorizSpanLeft;
  float turretHorizSpanRight;
  float turretVertSpanUp;
  float turretVertSpanDown;
  float turretHorizResistLeft;
  float turretHorizResistRight;
  float turretVertResistUp;
  float turretVertResistDown;
  float turretRotRate;
  VehicleTurretFireType turretFireType;
  snd_alias_list_name turretSpinSnd;
  snd_alias_list_name turretStopSnd;
  int trophyEnabled;
  float trophyRadius;
  float trophyInactiveRadius;
  int trophyAmmoCount;
  float trophyReloadTime;
  ScriptString trophyTags[4];
  FxEffectDef* trophyExplodeFx;
  FxEffectDef* trophyFlashFx;
  Material *compassFriendlyIcon;
  Material *compassEnemyIcon;
  Material *compassFriendlyAltIcon;
  Material *compassEnemyAltIcon;
  int compassIconWidth;
  int compassIconHeight;
  snd_alias_list_name idleLowSound;
  snd_alias_list_name idleHighSound;
  snd_alias_list_name engineLowSound;
  snd_alias_list_name engineHighSound;
  float engineSndSpeed;
  ScriptString audioOriginTag;
  snd_alias_list_name idleLowSndAlt;
  snd_alias_list_name idleHighSndAlt;
  snd_alias_list_name engineLowSndAlt;
  snd_alias_list_name engineHighSndAlt;
  float engineSndSpeedAlt;
  ScriptString audioOriginTagAlt;
  snd_alias_list_name turretSpinSndAlt;
  snd_alias_list_name turretStopSndAlt;
  snd_alias_list_name engineStartUpSnd;
  int engineStartUpLength;
  snd_alias_list_name engineShutdownSnd;
  snd_alias_list_name engineIdleSnd;
  snd_alias_list_name engineSustainSnd;
  snd_alias_list_name engineRampUpSnd;
  int engineRampUpLength;
  snd_alias_list_name engineRampDownSnd;
  int engineRampDownLength;
  snd_alias_list_name suspensionSoftSnd;
  float suspensionSoftCompression;
  snd_alias_list_name suspensionHardSnd;
  float suspensionHardConpression;
  snd_alias_list_name collisionSnd;
  float collisionBlendSpeed;
  snd_alias_list_name speedSnd;
  float speedSndBlendSpeed;
  const char *surfaceSndPrefix;
  snd_alias_list_name surfaceSounds[0x1F];
  float surfaceSndBlendSpeed;
  float slideVolume;
  float slideBlendSpeed;
  float inAirPitch;
};

Source Format

The vehicle source files are raw text files with no extension, located at "raw/vehicles/". They use the same format as many other assets, with each setting name and value separated by a back-slash. The first setting identifies the file, and for vehicles the identifier string is "VEHICLEFILE".