Scriptable Asset

From COD Engine Research
Revision as of 18:14, 17 February 2014 by CraigChrist8239 (talk | contribs)

The scripttable asset was added in Ghosts and despite its name, does not contain a table of scriptfile assets. Instead it appears to be a format used to hold some scripting information for models and the collision map. Since it is so new, there is virtually nothing known about it.

struct unknownScriptTableStruct1Internal1Internal1UnionStruct6
{
  char * unknownString;
  char unknown[0x14];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct5
{
  char unknown1[0x10];
  char * unknownString;
  char unknown2[4];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct4
{
  XModel * unknownModel;
  char unknown[8];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct3
{
  char * unknownString;
  char unknown[0x10];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct2
{
  snd_alias_list_name unknownSound;
  char unknown[4];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct1
{
  FxEffectDef * unknownFx;
  ScriptString unknownString;
  char unknown[6];
};

union unknownScriptTableStruct1Internal1Internal1Union
{
  char (*unknown1)[6];  //If parent->type == 0xA
  XModel * unknownModel;//else if == 0
  unknownScriptTableStruct1Internal1Internal1UnionStruct1 * unknownStruct1; //else if == 1
  unknownScriptTableStruct1Internal1Internal1UnionStruct2 * unknownStruct2; //else if == 2
  unknownScriptTableStruct1Internal1Internal1UnionStruct3 * unknownStruct3; //else if == 3
  char (*unknown2)[0xC];  //else if == 4
  char (*unknown3)[8];  //else if == 5
  unknownScriptTableStruct1Internal1Internal1UnionStruct4 * unknownStruct4; //else if == 6
  unknownScriptTableStruct1Internal1Internal1UnionStruct5 * unknownStruct5; //else if == 7
  char (*unknown4)[0x16]; //else if == 8
  unknownScriptTableStruct1Internal1Internal1UnionStruct6 * unknownStruct6; //else if == 9

};

struct unknownScriptTableStruct1Internal1Internal1
{
  int type;
  unknownScriptTableStruct1Internal1Internal1Union unknownUnion;
};

struct unknownScriptTableStruct1Internal1
{
  ScriptString unknownScriptString1;
  ScriptString unknownScriptString2;
  unknownScriptTableStruct1Internal1Internal1 * unknownStructArray; //Count = unknownCount1;
  byte unknownCount1;
  char unknown[7];
};

struct unknownScriptTableStruct1
{
  unknownScriptTableStruct1Internal1 * unkownStructArray; //Count = unknownCount
  ScriptString unknownScriptString;
  unsigned short unknownCount;
  int unknown;
};

struct unknownScriptTableStruct2Internal1
{
  FxEffectDef * unknownFx;
  ScriptString unknownScriptString;
};

struct unknownScriptTableStruct2
{
  ScriptString unknownScriptString;
  int type;
  union {
       snd_alias_list_name unknownSound; //if type == 0
       unknownScriptTableSTruct2Internal1 unknownStruct; //else if == 1
  };
};

struct ScriptTable
{
  const char * name;
  XModel * unknownModel1;
  char * unknownString1;
  char * unknownString2;
  unknownScriptTableStruct1 * unknownStructArray1; //count = unknownCount1
  unknownScriptTableStruct2 * unknownStructArray2; //count = unknownCount2
  char unknown2[5];
  byte unknownCount1;
  char unknown1[2];
  byte unknownCount2;
};