PhysPreset Asset

From COD Engine Research
Revision as of 01:50, 30 December 2013 by CraigChrist8239 (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


The PhysPreset asset controls the settings on dynamic objects. Any environmental object that moves from a gunshot or explosion has a physpreset to handle the force. The physpreset has existed in every CoD from the earliest Call of Duty 4 Alpha all the way to Ghosts, and it has changed very little.

Call of Duty 4 & Modern Warfare 2

#pragma pack(push, 4)
struct PhysPreset
{
  const char *name;
  int type;
  float mass;
  float bounce;
  float friction;
  float bulletForceScale;
  float explosiveForceScale;
  const char *sndAliasPrefix;
  float piecesSpreadFraction;
  float piecesUpwardVelocity;
  bool tempDefaultToCylinder;
};
#pragma pack(pop)

Type

The type has never been identified. Changing it appears to alter nothing, and there are no instances of it being used.

Black Ops 2

#pragma pack(push, 4)
struct PhysPreset
{	
  const char *name;	
  int type;	
  float mass;
  float bounce;
  float friction;	
  float bulletForceScale;	
  float explosiveForceScale;	
  const char *sndAliasPrefix;	
  float piecesSpreadFraction;	
  float piecesUpwardVelocity;	
  int bCanFloat;	
  float gravityScale;	
  float massOffset[3];	
  float buoyancyMin[3]; 
  float buoyancyMax[3];
};
#pragma pack(pop)

Source Format

The physpreset source files are raw text files with no extension, located at "raw/physic/". 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 physpreset the identifier string is "PHYSIC". PhysPresets are unique because they're the only asset found so far with a setting in the source that doesn't have a setting in the asset. The physpreset source files include an extra setting, "isFrictionInfinity", a bool. If it is 1, then the source file's friction will say it is 0.5, but once compiled the actual friction will be 340282346638528860000000000000000000000. For example, here is the CoD4 source for "brick" found at "raw/physic/brick".

PHYSIC\sndAliasPrefix\physics_brick\mass\5\friction\0.5\isFrictionInfinity\0\bounce\0.3\bulletForceScale\0.6\explosiveForceScale\0.12\piecesSpreadFraction\0\piecesUpwardVelocity\0\tempDefaultToCylinder\0