AIPaths Asset
The aipaths asset was added on Modern Warfare 3 and clearly holds pathing information for AI to follow around the map. This is part of the D3DBSP system produced by radiant. When compared to the vehicle_track asset, the pathing information in this asset is much more dynamic.
Modern Warfare 3
struct unknownAIPathsStruct1Internal1
{
char unknown1[6];
ScriptString unknownScriptString1;
ScriptString unknownScriptString2;
ScriptString unknownScriptString3;
ScriptString unknownScriptString4;
ScriptString unknownScriptString5;
char unknown2[0x28];
unsigned short unknownCount;
char * unknown3; //Size ((unknownCount << 1) + unknownCount) << 2
};
struct unknownAIPathsStruct1
{
unknownAIPathsStruct1Internal1 unknownEmbeddedStruct;
char unknown[0x48];
};
struct unknownAIPathsUnion1Struct1
{
unsigned int unknownCount;
unsigned short * unknown; //Count = unknownCount
};
union unknownAIPathsUnion1;
{
unknownAIPathsUnion1Struct1 unknownStruct1;
unknownAIPathsUnion1 * repeater[2];
};
struct unknownAIPathsStruct2
{
unknownAIPathsUnion1 unknownUnion;
char unknown[8];
};
struct AIPaths
{
const char * name;
unsigned int unknownCount1;
unknownAIPathsStruct1 * unknownStructArray1;
char * unknown1; //Size = unknownCount1 << 4
int unknown2;
unsigned short * unknown3; //Count = unknownCount1;
unsigned short * unknown4; //Count = unknowncount1;
unsigned int unknownCount2;
byte * unknown5; //Size = unknownCount2
unsigned int unknownCount3;
unknownAIPathsStruct2 * unknownStructArray2; //Count = unknownCount3
};Ghosts
struct unknownAIPathsStruct1Internal1
{
char unknown1[8];
ScriptString unknownScriptString1;
ScriptString unknownScriptString2;
ScriptString unknownScriptString3;
ScriptString unknownScriptString4;
ScriptString unknownScriptString5;
char unknown2[0x1E];
union {
ScriptString unknownScriptString6;
unsigned short unknown35;
};
char unknown5[0xE];
unsigned short unknownCount;
char * unknown3; //Size ((unknownCount << 1) + unknownCount) << 2
};
struct unknownAIPathsStruct1
{
unknownAIPathsStruct1Internal1 unknownEmbeddedStruct;
char unknown[0x48];
};
struct unknownAIPathsUnion1Struct1
{
unsigned int unknownCount;
unsigned short * unknown; //Count = unknownCount
};
union unknownAIPathsUnion1;
{
unknownAIPathsUnion1Struct1 unknownStruct1;
unknownAIPathsUnion1 * repeater[2];
};
struct unknownAIPathsStruct2
{
unknownAIPathsUnion1 unknownUnion;
char unknown[8];
};
struct unknownAIPathsStruct3
{
int unknown;
unsigned int unknownCount;
unknownAIPathsStruct2 * unknownStructArray; //Count = unknownCount
};
struct AIPaths
{
const char * name;
unsigned int unknownCount1;
unknownAIPathsStruct1 * unknownStructArray1;
unsigned int unknownCount2;
byte * unknown1; //Size = unknownCount2
unsigned int unknownCount3;
unknownAIPathsStruct2 * unknownStructArray2; //Count = unknownCount3
unsigned int unknownCount4;
unknownAIPathsStruct3 * unknownStructArray3; //Count = unknownCount4
unsigned int unknownCount5;
byte * unknown2; //Size = unknownCount5
unsigned int unknownCount6;
byte * unknown3; //Size = unknownCount6
int unknown4;
unsigned int unknownCount7;
byte * unknown5; //Size = unknownCount7
unsigned int unknownCount8;
byte * unknown6; //Size = unknownCount8;
};