COM Map Asset

From COD Engine Research
Revision as of 19:51, 25 January 2014 by CraigChrist8239 (talk | contribs) (Created page with "__NOTOC__ Category:Assets Category:CoD4 Category:WaW Category:MW2 Category:BO1 Category:MW3 Category:BO2 Category:Ghosts The com_map (believed ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The com_map (believed to be "common map") appears to be dedicated to holding light data for the primary lights around the map. This asset is part of the D3DBSP system produced by Radiant so it has existed on every Call of Duty game so far.

Call of Duty 4 & Modern Warfare 2 & 3 & Black Ops 2 & Ghosts

struct ComPrimaryLight
{
#ifdef MW3 || Ghosts
       char unknown[0x4C];
#elif defined(BO2)
       char unknown[0xC0];
#else
  char type;
  char canUseShadowMap;
  char exponent;
  char unused;
  float color[3];
  float dir[3];
  float origin[3];
  float radius;
  float cosHalfFovOuter;
  float cosHalfFovInner;
  float cosHalfFovExpanded;
  float rotationLimit;
  float translationLimit;
#endif
  const char *defName;
};

struct ComWorld
{
  const char *name;
  int isInUse;
  unsigned int primaryLightCount;
  ComPrimaryLight *primaryLights;
};

World at War & Black Ops 1

Note that "waterCells" and "burnableCells" were added in World at War and most likely left over in Black Ops 1, as they were subsequently removed in Black Ops 2. Also there is 0x10 unknown bytes before each cell entry, believed to be cell information.

struct ComPrimaryLight
{
#ifdef BO1
       char unknown[0xD8];
#else
       char unknown[0x44]; //WaW contains one more int/float from above
#endif
  const char *defName;
};

struct ComBurnableCell
{
       char unknown[8];
  char (*data[0x20]);
};

struct ComWorld
{
  const char *name;
  int isInUse;
  unsigned int primaryLightCount;
  ComPrimaryLight *primaryLights;
       char unknown1[0x10];
       unsigned int waterCellCount;
       char * waterCells; //Size = waterCellCount << 3
       char unknown3[0x10];
  unsigned int burnableCellCount;
  ComBurnableCell * burnableCells;
};