Attachment Asset (Ghosts)
The attachment asset was added on Modern Warfare 3 and has been on every Call of Duty since (Black Ops 2 and Ghosts). This asset saves alot of space as previously a different weapon asset was required for each combination of attachments on each weapon.
struct unknownAttachmentStruct1
{
char unknown1[0x10];
Tracer * tracer;
int unknown2;
};
struct unknownAttachmentStruct2
{
int unknown1[2];
Material * unknownMaterials[2];
char unknown2[0x10];
};
struct unknownAttachmentStruct3
{
AdsOverlayStruct unknownStruct;
int unknown;
};
struct unknownAttachmentStruct4
{
Material * unknownMaterials[2];
char unknown[0xC];
};
struct unknownAttachmentStruct5
{
char * unknownStrings[2];
};
struct unknownAttachmentStruct6
{
char unknown1[0x20];
char * unknownString;
XModel * unknownModel;
int unknown2;
FxEffectDef * unknownFx1;
int unknown3;
[[:Category:Utilities#snd_alias_list_name|snd_alias_list_name]] unknownSound1;
FxEffectDef * unknownFx2;
[[:Category:Utilities#snd_alias_list_name|snd_alias_list_name]] unknownSound2;
char unknown4[0x10];
FxEffectDef * unknownFx3;
char unknown5[4];
FxEffectDef * unknownFx4;
[[:Category:Utilities#snd_alias_list_name|snd_alias_list_name]] unknownSound3;
};
struct AttachmentDef
{
const char * name;
const char * displayName;
char unknown1[0xC];
XModel * * worldModel;
XModel * *gunXModel;
XModel * *reticleXModel;
unknownAttachmentStruct1 * unknownStruct1;
char (*unknown2)[9];
char (*unknown3)[2];
char (*unknown4)[3];
unknownAttachmentStruct2 * unknownStruct2;
char (*unknown5)[0xC];
char (*unknown6)[0x18];
char (*unknown7)[0x1C];
char (*unknown8)[0x4C];
char (*unknown9)[0x18];
char (*unknownA)[0x40];
char (*unknownB)[0x40];
char (*unknownC)[0x18];
char (*unknownD)[0x18];
char (*unknownE)[0x30];
char (*unknownF)[0x58];
char (*unknown10)[0x30];
unknownAttachmentStruct3 * unknownStruct3;
unknownAttachmentStruct4 * unknownStruct4;
char unknown11[0x38];
};Source Format
There is currently no known source format for the attachment asset. The currently accepted one is extensionless raw text files located at "raw/attachment/" that contain the setting names and new values seperated by backslashes. The first entry identifies the file and for attachments, "ATTACHMENTFILE" is used.