Lightdef Asset
The lightdef asset contains information pertaining to individual lights (not global lights). This asset is very simple and hasn't changed very much from the Call of Duty 4 Alpha to Ghosts.
Call of Duty 4 & World at War & Modern Warfare 2 & Black Ops 1 & 2
#pragma pack(push, 4)
struct GfxLightImage
{
GfxImage *image;
char samplerState;
};
#pragma pack(pop)
struct GfxLightDef
{
const char *name;
GfxLightImage attenuation;
int lmapLookupStart;
};
lmapLookupStart is a constant value for all lightdefs. Only name and the attenuation change.
Modern Warfare 3 & Ghosts
#pragma pack(push, 4)
struct GfxLightImage
{
GfxImage *image;
char samplerState;
};
#pragma pack(pop)
struct GfxLightDef
{
const char *name;
GfxLightImage attenuation[2];
int lmapLookupStart;
};
The MW3 lightdef uses 2 attenuations, so the current source format will not work.
Source Format
The lightdef source files are essentially extensionless text files located at "raw/lights". There is 1 char for the samplerState and a null terminated string for the name of the image asset to use. For example, here is the "candle" asset from Call of Duty 4.
bfalloff_candle
Keep in mind that the file does contain a null character on the end that cannot be represented. The "b" is the samplerState.