iw4x-client/src/Game/Structs.hpp

4637 lines
90 KiB
C++
Raw Normal View History

#pragma once
2017-06-29 17:03:25 -04:00
#define PROTOCOL 0x95
#define NUM_CUSTOM_CLASSES 15
2018-05-09 08:33:52 -04:00
#define SEMANTIC_WATER_MAP 11
#define FX_ELEM_FIELD_COUNT 90
2017-01-19 16:23:59 -05:00
// This allows us to compile our structures in IDA, for easier reversing :3
2017-04-22 15:47:04 -04:00
#ifndef __cplusplus
#define IDA
#endif
#ifndef IDA
2017-01-19 16:23:59 -05:00
namespace Game
{
#endif
typedef float vec_t;
typedef vec_t vec2_t[2];
typedef vec_t vec3_t[3];
typedef vec_t vec4_t[4];
2017-05-14 14:14:52 -04:00
typedef unsigned int scr_entref_t;
typedef void(__cdecl * scr_function_t)(scr_entref_t);
2018-05-09 06:04:20 -04:00
enum XAssetType
2018-05-09 05:50:46 -04:00
{
ASSET_TYPE_PHYSPRESET = 0x0,
ASSET_TYPE_PHYSCOLLMAP = 0x1,
ASSET_TYPE_XANIMPARTS = 0x2,
ASSET_TYPE_XMODEL_SURFS = 0x3,
ASSET_TYPE_XMODEL = 0x4,
ASSET_TYPE_MATERIAL = 0x5,
ASSET_TYPE_PIXELSHADER = 0x6,
ASSET_TYPE_VERTEXSHADER = 0x7,
ASSET_TYPE_VERTEXDECL = 0x8,
ASSET_TYPE_TECHNIQUE_SET = 0x9,
ASSET_TYPE_IMAGE = 0xA,
ASSET_TYPE_SOUND = 0xB,
ASSET_TYPE_SOUND_CURVE = 0xC,
ASSET_TYPE_LOADED_SOUND = 0xD,
ASSET_TYPE_CLIPMAP_SP = 0xE,
ASSET_TYPE_CLIPMAP_MP = 0xF,
ASSET_TYPE_COMWORLD = 0x10,
ASSET_TYPE_GAMEWORLD_SP = 0x11,
ASSET_TYPE_GAMEWORLD_MP = 0x12,
ASSET_TYPE_MAP_ENTS = 0x13,
ASSET_TYPE_FXWORLD = 0x14,
ASSET_TYPE_GFXWORLD = 0x15,
ASSET_TYPE_LIGHT_DEF = 0x16,
ASSET_TYPE_UI_MAP = 0x17,
ASSET_TYPE_FONT = 0x18,
ASSET_TYPE_MENULIST = 0x19,
ASSET_TYPE_MENU = 0x1A,
ASSET_TYPE_LOCALIZE_ENTRY = 0x1B,
ASSET_TYPE_WEAPON = 0x1C,
ASSET_TYPE_SNDDRIVER_GLOBALS = 0x1D,
ASSET_TYPE_FX = 0x1E,
ASSET_TYPE_IMPACT_FX = 0x1F,
ASSET_TYPE_AITYPE = 0x20,
ASSET_TYPE_MPTYPE = 0x21,
ASSET_TYPE_CHARACTER = 0x22,
ASSET_TYPE_XMODELALIAS = 0x23,
ASSET_TYPE_RAWFILE = 0x24,
ASSET_TYPE_STRINGTABLE = 0x25,
ASSET_TYPE_LEADERBOARD = 0x26,
ASSET_TYPE_STRUCTURED_DATA_DEF = 0x27,
ASSET_TYPE_TRACER = 0x28,
ASSET_TYPE_VEHICLE = 0x29,
ASSET_TYPE_ADDON_MAP_ENTS = 0x2A,
ASSET_TYPE_COUNT = 0x2B,
ASSET_TYPE_STRING = 0x2B,
ASSET_TYPE_ASSETLIST = 0x2C,
2017-01-19 16:23:59 -05:00
ASSET_TYPE_INVALID = -1,
2018-05-09 06:04:20 -04:00
};
2017-01-19 16:23:59 -05:00
typedef enum
{
DVAR_FLAG_NONE = 0x0, //no flags
DVAR_FLAG_SAVED = 0x1, //saves in config_mp.cfg for clients
DVAR_FLAG_LATCHED = 0x2, //no changing apart from initial value (although it might apply on a map reload, I think)
DVAR_FLAG_CHEAT = 0x4, //cheat
DVAR_FLAG_REPLICATED = 0x8, //on change, this is sent to all clients (if you are host)
DVAR_FLAG_UNKNOWN10 = 0x10, //unknown
DVAR_FLAG_UNKNOWN20 = 0x20, //unknown
DVAR_FLAG_UNKNOWN40 = 0x40, //unknown
DVAR_FLAG_UNKNOWN80 = 0x80, //unknown
DVAR_FLAG_USERCREATED = 0x100, //a 'set' type command created it
DVAR_FLAG_USERINFO = 0x200, //userinfo?
DVAR_FLAG_SERVERINFO = 0x400, //in the getstatus oob
DVAR_FLAG_WRITEPROTECTED = 0x800, //write protected
DVAR_FLAG_UNKNOWN1000 = 0x1000, //unknown
DVAR_FLAG_READONLY = 0x2000, //read only (same as 0x800?)
DVAR_FLAG_UNKNOWN4000 = 0x4000, //unknown
DVAR_FLAG_UNKNOWN8000 = 0x8000, //unknown
DVAR_FLAG_UNKNOWN10000 = 0x10000, //unknown
DVAR_FLAG_DEDISAVED = 0x1000000, //unknown
DVAR_FLAG_NONEXISTENT = 0xFFFFFFFF //no such dvar
} dvar_flag;
enum DvarSetSource
{
DVAR_SOURCE_INTERNAL = 0x0,
DVAR_SOURCE_EXTERNAL = 0x1,
DVAR_SOURCE_SCRIPT = 0x2,
DVAR_SOURCE_DEVGUI = 0x3,
};
2017-01-19 16:23:59 -05:00
typedef enum
{
2018-05-09 05:50:46 -04:00
DVAR_TYPE_BOOL = 0x0,
DVAR_TYPE_FLOAT = 0x1,
DVAR_TYPE_FLOAT_2 = 0x2,
DVAR_TYPE_FLOAT_3 = 0x3,
DVAR_TYPE_FLOAT_4 = 0x4,
DVAR_TYPE_INT = 0x5,
DVAR_TYPE_ENUM = 0x6,
DVAR_TYPE_STRING = 0x7,
DVAR_TYPE_COLOR = 0x8,
DVAR_TYPE_FLOAT_3_COLOR = 0x9,
DVAR_TYPE_COUNT = 0xA,
2017-01-19 16:23:59 -05:00
} dvar_type;
2018-05-09 05:50:46 -04:00
2018-05-09 08:33:52 -04:00
struct FxEffectDef;
struct pathnode_t;
struct pathnode_tree_t;
struct GfxPortal;
struct Statement_s;
struct MenuEventHandlerSet;
struct menuDef_t;
2017-01-19 16:23:59 -05:00
typedef struct cmd_function_s
{
cmd_function_s *next;
const char *name;
const char *autoCompleteDir;
const char *autoCompleteExt;
void(__cdecl *function)();
2018-05-09 05:50:46 -04:00
int flags;
2017-01-19 16:23:59 -05:00
} cmd_function_t;
#pragma pack(push, 4)
struct kbutton_t
{
int down[2];
unsigned int downtime;
unsigned int msec;
bool active;
bool wasPressed;
};
#pragma pack(pop)
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) PhysPreset
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int type;
float mass;
float bounce;
float friction;
float bulletForceScale;
float explosiveForceScale;
const char *sndAliasPrefix;
float piecesSpreadFraction;
float piecesUpwardVelocity;
bool tempDefaultToCylinder;
bool perSurfaceSndAlias;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct Bounds
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float midPoint[3];
float halfSize[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct cplane_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float normal[3];
float dist;
char type;
char pad[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct cbrushside_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
cplane_s *plane;
unsigned __int16 materialNum;
char firstAdjacentSideOffset;
char edgeCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct cbrush_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 numsides;
unsigned __int16 glassPieceIndex;
cbrushside_t *sides;
char *baseAdjacentSide;
__int16 axialMaterialNum[2][3];
char firstAdjacentSideOffsets[2][3];
char edgeCount[2][3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct BrushWrapper
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
cbrush_t brush;
int totalEdgeCount;
cplane_s *planes;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct PhysGeomInfo
{
2018-05-09 08:33:52 -04:00
BrushWrapper *brushWrapper;
int type;
float orientation[3][3];
Bounds bounds;
};
2018-05-09 08:33:52 -04:00
struct PhysMass
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float centerOfMass[3];
float momentsOfInertia[3];
float productsOfInertia[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct PhysCollmap
2017-01-19 16:23:59 -05:00
{
const char *name;
2018-05-09 08:33:52 -04:00
unsigned int count;
PhysGeomInfo *geoms;
PhysMass mass;
Bounds bounds;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union XAnimIndices
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char *_1;
unsigned __int16 *_2;
void *data;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XAnimNotifyInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 name;
float time;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union XAnimDynamicFrames
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char(*_1)[3];
unsigned __int16(*_2)[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union XAnimDynamicIndices
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char _1[1];
unsigned __int16 _2[1];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) XAnimPartTransFrames
{
2018-05-09 08:33:52 -04:00
float mins[3];
float size[3];
XAnimDynamicFrames frames;
XAnimDynamicIndices indices;
};
2018-05-09 08:33:52 -04:00
union XAnimPartTransData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XAnimPartTransFrames frames;
float frame0[3];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct XAnimPartTrans
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 size;
char smallTrans;
XAnimPartTransData u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) XAnimDeltaPartQuatDataFrames2
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
__int16(*frames)[2];
XAnimDynamicIndices indices;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union XAnimDeltaPartQuatData2
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XAnimDeltaPartQuatDataFrames2 frames;
__int16 frame0[2];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XAnimDeltaPartQuat2
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 size;
XAnimDeltaPartQuatData2 u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) XAnimDeltaPartQuatDataFrames
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
__int16(*frames)[4];
XAnimDynamicIndices indices;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union XAnimDeltaPartQuatData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XAnimDeltaPartQuatDataFrames frames;
__int16 frame0[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XAnimDeltaPartQuat
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 size;
XAnimDeltaPartQuatData u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XAnimDeltaPart
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XAnimPartTrans *trans;
XAnimDeltaPartQuat2 *quat2;
XAnimDeltaPartQuat *quat;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XAnimParts
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
unsigned __int16 dataByteCount;
unsigned __int16 dataShortCount;
unsigned __int16 dataIntCount;
unsigned __int16 randomDataByteCount;
unsigned __int16 randomDataIntCount;
unsigned __int16 numframes;
char flags;
char boneCount[10];
char notifyCount;
char assetType;
bool isDefault;
unsigned int randomDataShortCount;
unsigned int indexCount;
float framerate;
float frequency;
unsigned __int16 *names;
char *dataByte;
__int16 *dataShort;
int *dataInt;
__int16 *randomDataShort;
char *randomDataByte;
int *randomDataInt;
XAnimIndices indices;
XAnimNotifyInfo *notify;
XAnimDeltaPart *deltaPart;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XSurfaceVertexInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
__int16 vertCount[4];
unsigned __int16 *vertsBlend;
2017-04-22 15:47:04 -04:00
};
2018-05-09 08:33:52 -04:00
union GfxColor
2017-04-22 15:47:04 -04:00
{
2018-05-09 08:33:52 -04:00
unsigned int packed;
char array[4];
2017-04-22 15:47:04 -04:00
};
2018-05-09 08:33:52 -04:00
union PackedTexCoords
2017-04-22 15:47:04 -04:00
{
2018-05-09 08:33:52 -04:00
unsigned int packed;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union PackedUnitVec
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int packed;
char array[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxPackedVertex
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float xyz[3];
float binormalSign;
GfxColor color;
PackedTexCoords texCoord;
PackedUnitVec normal;
PackedUnitVec tangent;
2017-04-22 15:47:04 -04:00
};
2018-05-09 08:33:52 -04:00
struct XSurfaceCollisionAabb
2017-04-22 15:47:04 -04:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 mins[3];
unsigned __int16 maxs[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XSurfaceCollisionNode
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XSurfaceCollisionAabb aabb;
unsigned __int16 childBeginIndex;
unsigned __int16 childCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XSurfaceCollisionLeaf
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 triangleBeginIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XSurfaceCollisionTree
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float trans[3];
float scale[3];
unsigned int nodeCount;
XSurfaceCollisionNode *nodes;
unsigned int leafCount;
XSurfaceCollisionLeaf *leafs;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XRigidVertList
2017-04-22 15:47:04 -04:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 boneOffset;
unsigned __int16 vertCount;
unsigned __int16 triOffset;
unsigned __int16 triCount;
XSurfaceCollisionTree *collisionTree;
2017-04-22 15:47:04 -04:00
};
2018-05-09 08:33:52 -04:00
struct XSurface
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char tileMode;
bool deformed;
unsigned __int16 vertCount;
unsigned __int16 triCount;
char zoneHandle;
unsigned __int16 baseTriIndex;
unsigned __int16 baseVertIndex;
unsigned __int16 *triIndices;
XSurfaceVertexInfo vertInfo;
GfxPackedVertex *verts0;
unsigned int vertListCount;
XRigidVertList *vertList;
int partBits[6];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XModelSurfs
2017-01-19 16:23:59 -05:00
{
2017-04-22 15:47:04 -04:00
const char *name;
2018-05-09 08:33:52 -04:00
XSurface *surfs;
unsigned __int16 numsurfs;
int partBits[6];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct DObjAnimMat
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float quat[4];
float trans[3];
float transWeight;
2017-01-19 16:23:59 -05:00
};
struct GfxDrawSurfFields
{
unsigned __int64 objectId : 16;
unsigned __int64 reflectionProbeIndex : 8;
unsigned __int64 hasGfxEntIndex : 1;
unsigned __int64 customIndex : 5;
unsigned __int64 materialSortedIndex : 12;
unsigned __int64 prepass : 2;
unsigned __int64 useHeroLighting : 1;
unsigned __int64 sceneLightIndex : 8;
unsigned __int64 surfType : 4;
unsigned __int64 primarySortKey : 6;
unsigned __int64 unused : 1;
2017-01-19 16:23:59 -05:00
};
union GfxDrawSurf
{
GfxDrawSurfFields fields;
unsigned __int64 packed;
};
2018-05-09 08:33:52 -04:00
struct /*__declspec(align(4))*/ MaterialInfo
2017-01-19 16:23:59 -05:00
{
const char *name;
char gameFlags;
char sortKey;
char textureAtlasRowCount;
char textureAtlasColumnCount;
GfxDrawSurf drawSurf;
2018-05-09 08:33:52 -04:00
unsigned int surfaceTypeBits;
2017-01-19 16:23:59 -05:00
unsigned __int16 hashIndex;
};
2018-05-09 08:33:52 -04:00
struct MaterialStreamRouting
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char source;
char dest;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialVertexStreamRouting
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
MaterialStreamRouting data[13];
IDirect3DVertexDeclaration9 *decl[16];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialVertexDeclaration
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
char streamCount;
bool hasOptionalSource;
MaterialVertexStreamRouting routing;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxVertexShaderLoadDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int *program;
unsigned __int16 programSize;
unsigned __int16 loadForRenderer;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialVertexShaderProgram
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
IDirect3DVertexShader9 *vs;
GfxVertexShaderLoadDef loadDef;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialVertexShader
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
MaterialVertexShaderProgram prog;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxPixelShaderLoadDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int *program;
unsigned __int16 programSize;
unsigned __int16 loadForRenderer;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialPixelShaderProgram
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
IDirect3DPixelShader9 *ps;
GfxPixelShaderLoadDef loadDef;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialPixelShader
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
MaterialPixelShaderProgram prog;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialArgumentCodeConst
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 index;
char firstRow;
char rowCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union MaterialArgumentDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const float *literalConst;
MaterialArgumentCodeConst codeConst;
unsigned int codeSampler;
unsigned int nameHash;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialShaderArgument
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 type;
unsigned __int16 dest;
MaterialArgumentDef u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialPass
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
MaterialVertexDeclaration *vertexDecl;
MaterialVertexShader *vertexShader;
MaterialPixelShader *pixelShader;
char perPrimArgCount;
char perObjArgCount;
char stableArgCount;
char customSamplerFlags;
MaterialShaderArgument *args;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialTechnique
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
unsigned __int16 flags;
unsigned __int16 passCount;
MaterialPass passArray[1];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialTechniqueSet
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
char worldVertFormat;
bool hasBeenUploaded;
char unused[1];
MaterialTechniqueSet *remappedTechniqueSet;
MaterialTechnique *techniques[48];
2017-01-19 16:23:59 -05:00
};
2018-05-09 09:14:25 -04:00
struct GfxImageLoadDefIW3
{
char levelCount;
char flags;
__int16 dimensions[3];
int format;
int resourceSize;
char data[1];
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) GfxImageLoadDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char levelCount;
char pad[3];
int flags;
int format;
int resourceSize;
char data[1];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union GfxTexture
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
IDirect3DBaseTexture9 *basemap;
IDirect3DTexture9 *map;
IDirect3DVolumeTexture9 *volmap;
IDirect3DCubeTexture9 *cubemap;
GfxImageLoadDef *loadDef;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct Picmip
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char platform[2];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct CardMemory
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int platform[2];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxImage
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxTexture texture;
char mapType;
char semantic;
char category;
bool useSrgbReads;
Picmip picmip;
bool noPicmip;
char track;
CardMemory cardMemory;
unsigned __int16 width;
unsigned __int16 height;
unsigned __int16 depth;
bool delayLoadPixels;
const char *name;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct WaterWritable
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float floatTime;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct complex_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float real;
float imag;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct water_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WaterWritable writable;
complex_s *H0;
float *wTerm;
int M;
int N;
float Lx;
float Lz;
float gravity;
float windvel;
float winddir[2];
float amplitude;
float codeConstant[4];
GfxImage *image;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union MaterialTextureDefInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxImage *image;
water_t *water;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialTextureDef
{
unsigned int nameHash;
char nameStart;
char nameEnd;
char samplerState;
char semantic;
MaterialTextureDefInfo u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialConstantDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int nameHash;
char name[12];
float literal[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxStateBits
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int loadBits[2];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct Material
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
MaterialInfo info;
char stateBitsEntry[48];
char textureCount;
char constantCount;
char stateBitsCount;
char stateFlags;
char cameraRegion;
MaterialTechniqueSet *techniqueSet;
MaterialTextureDef *textureTable;
MaterialConstantDef *constantTable;
GfxStateBits *stateBitsTable;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XModelLodInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float dist;
unsigned __int16 numsurfs;
unsigned __int16 surfIndex;
XModelSurfs *modelSurfs;
int partBits[6];
XSurface *surfs;
char lod;
char smcBaseIndexPlusOne;
char smcSubIndexMask;
char smcBucket;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XModelCollTri_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float plane[4];
float svec[4];
float tvec[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XModelCollSurf_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XModelCollTri_s *collTris;
int numCollTris;
Bounds bounds;
int boneIdx;
int contents;
int surfFlags;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XBoneInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
float radiusSquared;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XModel
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
char numBones;
char numRootBones;
char numsurfs;
char lodRampType;
float scale;
unsigned int noScalePartBits[6];
unsigned __int16 *boneNames;
char *parentList;
__int16 *quats;
float *trans;
char *partClassification;
DObjAnimMat *baseMat;
Material **materialHandles;
XModelLodInfo lodInfo[4];
char maxLoadedLod;
char numLods;
char collLod;
char flags;
XModelCollSurf_s *collSurfs;
int numCollSurfs;
int contents;
XBoneInfo *boneInfo;
float radius;
Bounds bounds;
int memUsage;
bool bad;
PhysPreset *physPreset;
PhysCollmap *physCollmap;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct _AILSOUNDINFO
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int format;
const void *data_ptr;
unsigned int data_len;
unsigned int rate;
int bits;
int channels;
unsigned int samples;
unsigned int block_size;
const void *initial_ptr;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MssSound
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
_AILSOUNDINFO info;
char *data;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct LoadedSound
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
MssSound sound;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StreamFileNameRaw
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *dir;
const char *name;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union StreamFileInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
StreamFileNameRaw raw;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StreamFileName
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
StreamFileInfo info;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct StreamedSound
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
StreamFileName filename;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
union SoundFileRef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
LoadedSound *loadSnd;
StreamedSound streamSnd;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
enum snd_alias_type_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
SAT_UNKNOWN = 0x0,
SAT_LOADED = 0x1,
SAT_STREAMED = 0x2,
SAT_VOICED = 0x3,
SAT_COUNT = 0x4,
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct SoundFile
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char type;
char exists;
SoundFileRef u;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
union $C8D87EB0090687D323381DFB7A82089C
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float slavePercentage;
float masterPercentage;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct SndCurve
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *filename;
unsigned __int16 knotCount;
float knots[16][2];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct MSSSpeakerLevels
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int speaker;
int numLevels;
float levels[2];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct MSSChannelMap
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int speakerCount;
MSSSpeakerLevels speakers[6];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct SpeakerMap
{
bool isDefault;
const char *name;
MSSChannelMap channelMaps[2][2];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
const struct snd_alias_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *aliasName;
const char *subtitle;
const char *secondaryAliasName;
const char *chainAliasName;
const char *mixerGroup;
SoundFile *soundFile;
int sequence;
float volMin;
float volMax;
float pitchMin;
float pitchMax;
float distMin;
float distMax;
float velocityMin;
int flags;
$C8D87EB0090687D323381DFB7A82089C ___u15;
float probability;
float lfePercentage;
float centerPercentage;
int startDelay;
SndCurve *volumeFalloffCurve;
float envelopMin;
float envelopMax;
float envelopPercentage;
SpeakerMap *speakerMap;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct snd_alias_list_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *aliasName;
snd_alias_t *head;
int count;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct cStaticModel_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XModel *xmodel;
float origin[3];
float invScaledAxis[3][3];
Bounds absBounds;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct ClipMaterial
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int surfaceFlags;
int contents;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct cNode_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
cplane_s *plane;
__int16 children[2];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct cLeaf_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 firstCollAabbIndex;
unsigned __int16 collAabbCount;
int brushContents;
int terrainContents;
Bounds bounds;
int leafBrushNode;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct cLeafBrushNodeLeaf_t
{
unsigned __int16 *brushes;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct cLeafBrushNodeChildren_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float dist;
float range;
unsigned __int16 childOffset[2];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
union cLeafBrushNodeData_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
cLeafBrushNodeLeaf_t leaf;
cLeafBrushNodeChildren_t children;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct cLeafBrushNode_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char axis;
__int16 leafBrushCount;
int contents;
cLeafBrushNodeData_t data;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct CollisionBorder
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float distEq[3];
float zBase;
float zSlope;
float start;
float length;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct CollisionPartition
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char triCount;
char borderCount;
char firstVertSegment;
int firstTri;
CollisionBorder *borders;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union CollisionAabbTreeIndex
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int firstChildIndex;
int partitionIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct CollisionAabbTree
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float midPoint[3];
unsigned __int16 materialIndex;
unsigned __int16 childCount;
float halfSize[3];
CollisionAabbTreeIndex u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct cmodel_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
float radius;
cLeaf_t leaf;
2017-01-19 16:23:59 -05:00
};
struct TriggerModel
{
int contents;
2018-05-09 08:33:52 -04:00
unsigned __int16 hullCount;
unsigned __int16 firstHull;
2017-01-19 16:23:59 -05:00
};
struct TriggerHull
{
Bounds bounds;
int contents;
2018-05-09 08:33:52 -04:00
unsigned __int16 slabCount;
unsigned __int16 firstSlab;
2017-01-19 16:23:59 -05:00
};
struct TriggerSlab
{
2018-05-09 08:33:52 -04:00
float dir[3];
2017-01-19 16:23:59 -05:00
float midPoint;
float halfSize;
};
struct MapTriggers
{
2018-05-09 08:33:52 -04:00
unsigned int count;
TriggerModel *models;
unsigned int hullCount;
TriggerHull *hulls;
unsigned int slabCount;
TriggerSlab *slabs;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct /*__declspec(align(2))*/ Stage
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
float origin[3];
unsigned __int16 triggerIndex;
char sunPrimaryLightIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) MapEnts
2017-01-19 16:23:59 -05:00
{
const char *name;
char *entityString;
int numEntityChars;
MapTriggers trigger;
2018-05-09 08:33:52 -04:00
Stage *stages;
2017-01-19 16:23:59 -05:00
char stageCount;
};
2018-05-09 08:33:52 -04:00
struct SModelAabbNode
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
unsigned __int16 firstChild;
unsigned __int16 childCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum DynEntityType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
DYNENT_TYPE_INVALID = 0x0,
DYNENT_TYPE_CLUTTER = 0x1,
DYNENT_TYPE_DESTRUCT = 0x2,
DYNENT_TYPE_COUNT = 0x3,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxPlacement
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float quat[4];
float origin[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxSpawnDefLooping
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int intervalMsec;
int count;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxIntRange
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int base;
int amplitude;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct FxSpawnDefOneShot
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxIntRange count;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
union FxSpawnDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxSpawnDefLooping looping;
FxSpawnDefOneShot oneShot;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct FxFloatRange
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float base;
float amplitude;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct FxElemAtlas
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char behavior;
char index;
char fps;
char loopCount;
char colIndexBits;
char rowIndexBits;
__int16 entryCount;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct FxElemVec3Range
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float base[3];
float amplitude[3];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct FxElemVelStateInFrame
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxElemVec3Range velocity;
FxElemVec3Range totalDelta;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
const struct FxElemVelStateSample
{
2018-05-09 08:33:52 -04:00
FxElemVelStateInFrame local;
FxElemVelStateInFrame world;
};
2018-05-09 08:33:52 -04:00
struct FxElemVisualState
{
2018-05-09 08:33:52 -04:00
char color[4];
float rotationDelta;
float rotationTotal;
float size[2];
float scale;
};
2018-05-09 08:33:52 -04:00
const struct FxElemVisStateSample
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxElemVisualState base;
FxElemVisualState amplitude;
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct FxElemMarkVisuals
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Material *materials[2];
};
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
union FxEffectDefRef
{
2018-05-09 08:33:52 -04:00
FxEffectDef *handle;
const char *name;
};
2018-05-09 08:33:52 -04:00
union FxElemVisuals
{
2018-05-09 08:33:52 -04:00
const void *anonymous;
Material *material;
XModel *model;
FxEffectDefRef effectDef;
const char *soundName;
};
2018-05-09 08:33:52 -04:00
union FxElemDefVisuals
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxElemMarkVisuals *markArray;
FxElemVisuals *array;
FxElemVisuals instance;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxTrailVertex
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float pos[2];
float normal[2];
float texCoord;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxTrailDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int scrollTimeMsec;
int repeatDist;
float invSplitDist;
float invSplitArcDist;
float invSplitTime;
int vertCount;
FxTrailVertex *verts;
int indCount;
unsigned __int16 *inds;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxSparkFountainDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float gravity;
float bounceFrac;
float bounceRand;
float sparkSpacing;
float sparkLength;
int sparkCount;
float loopTime;
float velMin;
float velMax;
float velConeFrac;
float restSpeed;
float boostTime;
float boostFactor;
};
union FxElemExtendedDefPtr
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxTrailDef *trailDef;
FxSparkFountainDef *sparkFountainDef;
void *unknownDef;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
const struct FxElemDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int flags;
FxSpawnDef spawn;
FxFloatRange spawnRange;
FxFloatRange fadeInRange;
FxFloatRange fadeOutRange;
float spawnFrustumCullRadius;
FxIntRange spawnDelayMsec;
FxIntRange lifeSpanMsec;
FxFloatRange spawnOrigin[3];
FxFloatRange spawnOffsetRadius;
FxFloatRange spawnOffsetHeight;
FxFloatRange spawnAngles[3];
FxFloatRange angularVelocity[3];
FxFloatRange initialRotation;
FxFloatRange gravity;
FxFloatRange reflectionFactor;
FxElemAtlas atlas;
char elemType;
char visualCount;
char velIntervalCount;
char visStateIntervalCount;
FxElemVelStateSample *velSamples;
FxElemVisStateSample *visSamples;
FxElemDefVisuals visuals;
Bounds collBounds;
FxEffectDefRef effectOnImpact;
FxEffectDefRef effectOnDeath;
FxEffectDefRef effectEmitted;
FxFloatRange emitDist;
FxFloatRange emitDistVariance;
FxElemExtendedDefPtr extended;
char sortOrder;
char lightingFrac;
char useItemClip;
char fadeInfo;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxEffectDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int flags;
int totalSize;
int msecLoopingLife;
int elemDefCountLooping;
int elemDefCountOneShot;
int elemDefCountEmission;
FxElemDef *elemDefs;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct DynEntityDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
DynEntityType type;
GfxPlacement pose;
XModel *xModel;
unsigned __int16 brushModel;
unsigned __int16 physicsBrushModel;
FxEffectDef *destroyFx;
PhysPreset *physPreset;
int health;
PhysMass mass;
int contents;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct DynEntityPose
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxPlacement pose;
float radius;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct DynEntityClient
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int physObjId;
unsigned __int16 flags;
unsigned __int16 lightingHandle;
int health;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct DynEntityColl
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 sector;
unsigned __int16 nextEntInSector;
float linkMins[2];
float linkMaxs[2];
};
#pragma warning(push)
#pragma warning(disable: 4324)
struct __declspec(align(64)) clipMap_t
{
const char *name;
int isInUse;
int planeCount;
cplane_s *planes;
unsigned int numStaticModels;
cStaticModel_s *staticModelList;
unsigned int numMaterials;
ClipMaterial *materials;
unsigned int numBrushSides;
cbrushside_t *brushsides;
unsigned int numBrushEdges;
char *brushEdges;
unsigned int numNodes;
cNode_t *nodes;
unsigned int numLeafs;
cLeaf_t *leafs;
unsigned int leafbrushNodesCount;
cLeafBrushNode_s *leafbrushNodes;
unsigned int numLeafBrushes;
unsigned __int16 *leafbrushes;
unsigned int numLeafSurfaces;
unsigned int *leafsurfaces;
unsigned int vertCount;
float(*verts)[3];
int triCount;
2017-01-19 16:23:59 -05:00
unsigned __int16 *triIndices;
2018-05-09 08:33:52 -04:00
char *triEdgeIsWalkable;
int borderCount;
CollisionBorder *borders;
int partitionCount;
CollisionPartition *partitions;
int aabbTreeCount;
CollisionAabbTree *aabbTrees;
unsigned int numSubModels;
cmodel_t *cmodels;
unsigned __int16 numBrushes;
cbrush_t *brushes;
Bounds *brushBounds;
int *brushContents;
MapEnts *mapEnts;
unsigned __int16 smodelNodeCount;
SModelAabbNode *smodelNodes;
unsigned __int16 dynEntCount[2];
DynEntityDef *dynEntDefList[2];
DynEntityPose *dynEntPoseList[2];
DynEntityClient *dynEntClientList[2];
DynEntityColl *dynEntCollList[2];
unsigned int checksum;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
#pragma warning(pop)
2017-01-19 16:23:59 -05:00
2018-05-09 08:33:52 -04:00
struct ComPrimaryLight
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
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;
const char *defName;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct ComWorld
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int isInUse;
unsigned int primaryLightCount;
ComPrimaryLight *primaryLights;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum nodeType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
NODE_ERROR = 0x0,
NODE_PATHNODE = 0x1,
NODE_COVER_STAND = 0x2,
NODE_COVER_CROUCH = 0x3,
NODE_COVER_CROUCH_WINDOW = 0x4,
NODE_COVER_PRONE = 0x5,
NODE_COVER_RIGHT = 0x6,
NODE_COVER_LEFT = 0x7,
NODE_AMBUSH = 0x8,
NODE_EXPOSED = 0x9,
NODE_CONCEALMENT_STAND = 0xA,
NODE_CONCEALMENT_CROUCH = 0xB,
NODE_CONCEALMENT_PRONE = 0xC,
NODE_DOOR = 0xD,
NODE_DOOR_INTERIOR = 0xE,
NODE_SCRIPTED = 0xF,
NODE_NEGOTIATION_BEGIN = 0x10,
NODE_NEGOTIATION_END = 0x11,
NODE_TURRET = 0x12,
NODE_GUARD = 0x13,
NODE_NUMTYPES = 0x14,
NODE_DONTLINK = 0x14,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum PathNodeErrorCode
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
PNERR_NONE = 0x0,
PNERR_INSOLID = 0x1,
PNERR_FLOATING = 0x2,
PNERR_NOLINK = 0x3,
PNERR_DUPLICATE = 0x4,
PNERR_NOSTANCE = 0x5,
PNERR_INVALIDDOOR = 0x6,
PNERR_NOANGLES = 0x7,
PNERR_BADPLACEMENT = 0x8,
NUM_PATH_NODE_ERRORS = 0x9,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union $23305223CFD097B6F79557BDD2047E6C
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float minUseDistSq;
PathNodeErrorCode error;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathlink_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float fDist;
unsigned __int16 nodeNum;
char disconnectCount;
char negotiationLink;
char flags;
char ubBadPlaceCount[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathnode_constant_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
nodeType type;
unsigned __int16 spawnflags;
unsigned __int16 targetname;
unsigned __int16 script_linkName;
unsigned __int16 script_noteworthy;
unsigned __int16 target;
unsigned __int16 animscript;
int animscriptfunc;
float vOrigin[3];
float fAngle;
float forward[2];
float fRadius;
$23305223CFD097B6F79557BDD2047E6C ___u12;
__int16 wOverlapNode[2];
unsigned __int16 totalLinkCount;
pathlink_s *Links;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathnode_dynamic_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
void *pOwner;
int iFreeTime;
int iValidTime[3];
int dangerousNodeTime[3];
int inPlayerLOSTime;
__int16 wLinkCount;
__int16 wOverlapCount;
__int16 turretEntNumber;
char userCount;
bool hasBadPlaceLink;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union $73F238679C0419BE2C31C6559E8604FC
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float nodeCost;
int linkIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathnode_transient_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int iSearchFrame;
pathnode_t *pNextOpen;
pathnode_t *pPrevOpen;
pathnode_t *pParent;
float fCost;
float fHeuristic;
$73F238679C0419BE2C31C6559E8604FC ___u6;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathnode_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
pathnode_constant_t constant;
pathnode_dynamic_t dynamic;
pathnode_transient_t transient;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathbasenode_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float vOrigin[3];
unsigned int type;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathnode_tree_nodes_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int nodeCount;
unsigned __int16 *nodes;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union pathnode_tree_info_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
pathnode_tree_t *child[2];
pathnode_tree_nodes_t s;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct pathnode_tree_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int axis;
float dist;
pathnode_tree_info_t u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct PathData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int nodeCount;
pathnode_t *nodes;
pathbasenode_t *basenodes;
unsigned int chainNodeCount;
unsigned __int16 *chainNodeForNode;
unsigned __int16 *nodeForChainNode;
int visBytes;
char *pathVis;
int nodeTreeCount;
pathnode_tree_t *nodeTree;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct VehicleTrackObstacle
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float origin[2];
float radius;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct VehicleTrackSector
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float startEdgeDir[2];
float startEdgeDist;
float leftEdgeDir[2];
float leftEdgeDist;
float rightEdgeDir[2];
float rightEdgeDist;
float sectorLength;
float sectorWidth;
float totalPriorLength;
float totalFollowingLength;
VehicleTrackObstacle *obstacles;
unsigned int obstacleCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct VehicleTrackSegment
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *targetName;
VehicleTrackSector *sectors;
unsigned int sectorCount;
VehicleTrackSegment **nextBranches;
unsigned int nextBranchesCount;
VehicleTrackSegment **prevBranches;
unsigned int prevBranchesCount;
float endEdgeDir[2];
float endEdgeDist;
float totalLength;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct VehicleTrack
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
VehicleTrackSegment *segments;
unsigned int segmentCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct /*__declspec(align(2))*/ G_GlassPiece
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 damageTaken;
unsigned __int16 collapseTime;
int lastStateChangeTime;
char impactDir;
char impactPos[2];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct G_GlassName
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char *nameStr;
unsigned __int16 name;
unsigned __int16 pieceCount;
unsigned __int16 *pieceIndices;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct G_GlassData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
G_GlassPiece *glassPieces;
unsigned int pieceCount;
unsigned __int16 damageToWeaken;
unsigned __int16 damageToDestroy;
unsigned int glassNameCount;
G_GlassName *glassNames;
char pad[108];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GameWorldSp
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
PathData path;
VehicleTrack vehicleTrack;
G_GlassData *g_glassData;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GameWorldMp
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
G_GlassData *g_glassData;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float halfThickness;
float texVecs[2][2];
GfxColor color;
Material *material;
Material *materialShattered;
PhysPreset *physPreset;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxSpatialFrame
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float quat[4];
float origin[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct $E43DBA5037697D705289B74D87E76C70
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxSpatialFrame frame;
float radius;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union FxGlassPiecePlace
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
$E43DBA5037697D705289B74D87E76C70 __s0;
unsigned int nextFree;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassPieceState
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float texCoordOrigin[2];
unsigned int supportMask;
unsigned __int16 initIndex;
unsigned __int16 geoDataStart;
char defIndex;
char pad[5];
char vertCount;
char holeDataCount;
char crackDataCount;
char fanDataCount;
unsigned __int16 flags;
float areaX2;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassPieceDynamics
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int fallTime;
int physObjId;
int physJointId;
float vel[3];
float avel[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassVertex
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
__int16 x;
__int16 y;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassHoleHeader
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 uniqueVertCount;
char touchVert;
char pad[1];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassCrackHeader
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 uniqueVertCount;
char beginVertIndex;
char endVertIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union FxGlassGeometryData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxGlassVertex vert;
FxGlassHoleHeader hole;
FxGlassCrackHeader crack;
char asBytes[4];
__int16 anonymous[2];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassInitPieceState
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxSpatialFrame frame;
float radius;
float texCoordOrigin[2];
unsigned int supportMask;
float areaX2;
char defIndex;
char vertCount;
char fanDataCount;
char pad[1];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxGlassSystem
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int time;
int prevTime;
unsigned int defCount;
unsigned int pieceLimit;
unsigned int pieceWordCount;
unsigned int initPieceCount;
unsigned int cellCount;
unsigned int activePieceCount;
unsigned int firstFreePiece;
unsigned int geoDataLimit;
unsigned int geoDataCount;
unsigned int initGeoDataCount;
FxGlassDef *defs;
FxGlassPiecePlace *piecePlaces;
FxGlassPieceState *pieceStates;
FxGlassPieceDynamics *pieceDynamics;
FxGlassGeometryData *geoData;
unsigned int *isInUse;
unsigned int *cellBits;
char *visData;
float(*linkOrg)[3];
float *halfThickness;
unsigned __int16 *lightingHandles;
FxGlassInitPieceState *initPieceStates;
FxGlassGeometryData *initGeoData;
bool needToCompactData;
char initCount;
float effectChanceAccum;
int lastPieceDeletionTime;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxWorld
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
FxGlassSystem glassSys;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) GfxSky
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int skySurfCount;
int *skyStartSurfs;
GfxImage *skyImage;
char skySamplerState;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxWorldDpvsPlanes
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int cellCount;
cplane_s *planes;
unsigned __int16 *nodes;
unsigned int *sceneEntCellBits;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxCellTreeCount
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int aabbTreeCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxAabbTree
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
unsigned __int16 childCount;
unsigned __int16 surfaceCount;
unsigned __int16 startSurfIndex;
unsigned __int16 surfaceCountNoDecal;
unsigned __int16 startSurfIndexNoDecal;
unsigned __int16 smodelIndexCount;
unsigned __int16 *smodelIndexes;
int childrenOffset;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxCellTree
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxAabbTree *aabbTree;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxPortalWritable
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
bool isQueued;
bool isAncestor;
char recursionDepth;
char hullPointCount;
float(*hullPoints)[2];
GfxPortal *queuedParent;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct DpvsPlane
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float coeffs[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxPortal
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxPortalWritable writable;
DpvsPlane plane;
float(*vertices)[3];
unsigned __int16 cellIndex;
char vertexCount;
float hullAxis[2][3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxCell
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
int portalCount;
GfxPortal *portals;
char reflectionProbeCount;
char *reflectionProbes;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxReflectionProbe
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float origin[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightmapArray
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxImage *primary;
GfxImage *secondary;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxWorldVertex
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float xyz[3];
float binormalSign;
GfxColor color;
float texCoord[2];
float lmapCoord[2];
PackedUnitVec normal;
PackedUnitVec tangent;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxWorldVertexData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxWorldVertex *vertices;
IDirect3DVertexBuffer9 *worldVb;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxWorldVertexLayerData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char *data;
IDirect3DVertexBuffer9 *layerVb;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxWorldDraw
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int reflectionProbeCount;
GfxImage **reflectionProbes;
GfxReflectionProbe *reflectionProbeOrigins;
GfxTexture *reflectionProbeTextures;
int lightmapCount;
GfxLightmapArray *lightmaps;
GfxTexture *lightmapPrimaryTextures;
GfxTexture *lightmapSecondaryTextures;
GfxImage *lightmapOverridePrimary;
GfxImage *lightmapOverrideSecondary;
unsigned int vertexCount;
GfxWorldVertexData vd;
unsigned int vertexLayerDataSize;
GfxWorldVertexLayerData vld;
unsigned int indexCount;
unsigned __int16 *indices;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightGridEntry
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 colorsIndex;
char primaryLightIndex;
char needsTrace;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightGridColors
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char rgb[56][3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightGrid
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
bool hasLightRegions;
unsigned int lastSunPrimaryLightIndex;
unsigned __int16 mins[3];
unsigned __int16 maxs[3];
unsigned int rowAxis;
unsigned int colAxis;
unsigned __int16 *rowDataStart;
unsigned int rawRowDataSize;
char *rawRowData;
unsigned int entryCount;
GfxLightGridEntry *entries;
unsigned int colorCount;
GfxLightGridColors *colors;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxBrushModelWritable
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) GfxBrushModel
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxBrushModelWritable writable;
Bounds bounds;
float radius;
unsigned __int16 surfaceCount;
unsigned __int16 startSurfIndex;
unsigned __int16 surfaceCountNoDecal;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MaterialMemory
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Material *material;
int memory;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct sunflare_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
bool hasValidData;
Material *spriteMaterial;
Material *flareMaterial;
float spriteSize;
float flareMinSize;
float flareMinDot;
float flareMaxSize;
float flareMaxDot;
float flareMaxAlpha;
int flareFadeInTime;
int flareFadeOutTime;
float blindMinDot;
float blindMaxDot;
float blindMaxDarken;
int blindFadeInTime;
int blindFadeOutTime;
float glareMinDot;
float glareMaxDot;
float glareMaxLighten;
int glareFadeInTime;
int glareFadeOutTime;
float sunFxPosition[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct XModelDrawInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char hasGfxEntIndex;
char lod;
unsigned __int16 surfId;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxSceneDynModel
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
XModelDrawInfo info;
unsigned __int16 dynEntId;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct BModelDrawInfo
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 surfId;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxSceneDynBrush
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
BModelDrawInfo info;
unsigned __int16 dynEntId;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxShadowGeometry
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 surfaceCount;
unsigned __int16 smodelCount;
unsigned __int16 *sortedSurfIndex;
unsigned __int16 *smodelIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightRegionAxis
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float dir[3];
float midPoint;
float halfSize;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightRegionHull
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float kdopMidPoint[9];
float kdopHalfSize[9];
unsigned int axisCount;
GfxLightRegionAxis *axis;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightRegion
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int hullCount;
GfxLightRegionHull *hulls;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxStaticModelInst
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
float lightingOrigin[3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct srfTriangles_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int vertexLayerData;
unsigned int firstVertex;
unsigned __int16 vertexCount;
unsigned __int16 triCount;
unsigned int baseIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxSurfaceLightingAndFlagsFields
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char lightmapIndex;
char reflectionProbeIndex;
char primaryLightIndex;
char flags;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union GfxSurfaceLightingAndFlags
{
2018-05-09 08:33:52 -04:00
GfxSurfaceLightingAndFlagsFields fields;
unsigned int packed;
};
2018-05-09 08:33:52 -04:00
struct GfxSurface
{
2018-05-09 08:33:52 -04:00
srfTriangles_t tris;
Material *material;
GfxSurfaceLightingAndFlags laf;
};
2018-05-09 08:33:52 -04:00
struct GfxSurfaceBounds
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
Bounds bounds;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxPackedPlacement
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float origin[3];
float axis[3][3];
float scale;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxStaticModelDrawInst
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxPackedPlacement placement;
XModel *model;
unsigned __int16 cullDist;
unsigned __int16 lightingHandle;
char reflectionProbeIndex;
char primaryLightIndex;
char flags;
char firstMtlSkinIndex;
GfxColor groundLighting;
unsigned __int16 cacheId[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxWorldDpvsStatic
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int smodelCount;
unsigned int staticSurfaceCount;
unsigned int staticSurfaceCountNoDecal;
unsigned int litOpaqueSurfsBegin;
unsigned int litOpaqueSurfsEnd;
unsigned int litTransSurfsBegin;
unsigned int litTransSurfsEnd;
unsigned int shadowCasterSurfsBegin;
unsigned int shadowCasterSurfsEnd;
unsigned int emissiveSurfsBegin;
unsigned int emissiveSurfsEnd;
unsigned int smodelVisDataCount;
unsigned int surfaceVisDataCount;
char *smodelVisData[3];
char *surfaceVisData[3];
unsigned __int16 *sortedSurfIndex;
GfxStaticModelInst *smodelInsts;
GfxSurface *surfaces;
GfxSurfaceBounds *surfacesBounds;
GfxStaticModelDrawInst *smodelDrawInsts;
GfxDrawSurf *surfaceMaterials;
unsigned int *surfaceCastsSunShadow;
volatile int usageCount;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxWorldDpvsDynamic
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int dynEntClientWordCount[2];
unsigned int dynEntClientCount[2];
unsigned int *dynEntCellBits[2];
char *dynEntVisData[2][3];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxHeroOnlyLight
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char type;
char unused[3];
float color[3];
float dir[3];
float origin[3];
2017-01-19 16:23:59 -05:00
float radius;
2018-05-09 08:33:52 -04:00
float cosHalfFovOuter;
float cosHalfFovInner;
int exponent;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) GfxWorld
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
const char *baseName;
int planeCount;
int nodeCount;
unsigned int surfaceCount;
int skyCount;
GfxSky *skies;
unsigned int lastSunPrimaryLightIndex;
unsigned int primaryLightCount;
unsigned int sortKeyLitDecal;
unsigned int sortKeyEffectDecal;
unsigned int sortKeyEffectAuto;
unsigned int sortKeyDistortion;
GfxWorldDpvsPlanes dpvsPlanes;
GfxCellTreeCount *aabbTreeCounts;
GfxCellTree *aabbTrees;
GfxCell *cells;
GfxWorldDraw draw;
GfxLightGrid lightGrid;
int modelCount;
GfxBrushModel *models;
Bounds bounds;
unsigned int checksum;
int materialMemoryCount;
MaterialMemory *materialMemory;
sunflare_t sun;
float outdoorLookupMatrix[4][4];
GfxImage *outdoorImage;
unsigned int *cellCasterBits;
unsigned int *cellHasSunLitSurfsBits;
GfxSceneDynModel *sceneDynModel;
GfxSceneDynBrush *sceneDynBrush;
unsigned int *primaryLightEntityShadowVis;
unsigned int *primaryLightDynEntShadowVis[2];
char *nonSunPrimaryLightForModelDynEnt;
GfxShadowGeometry *shadowGeom;
GfxLightRegion *lightRegion;
GfxWorldDpvsStatic dpvs;
GfxWorldDpvsDynamic dpvsDyn;
unsigned int mapVtxChecksum;
unsigned int heroOnlyLightCount;
GfxHeroOnlyLight *heroOnlyLights;
char fogTypesAllowed;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) GfxLightImage
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
GfxImage *image;
char samplerState;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct GfxLightDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
GfxLightImage attenuation;
int lmapLookupStart;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct Glyph
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned __int16 letter;
char x0;
char y0;
char dx;
char pixelWidth;
char pixelHeight;
float s0;
float t0;
float s1;
float t1;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct Font_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *fontName;
int pixelHeight;
int glyphCount;
Material *material;
Material *glowMaterial;
Glyph *glyphs;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) rectDef_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float x;
float y;
float w;
float h;
char horzAlign;
char vertAlign;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct windowDef_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
rectDef_s rect;
rectDef_s rectClient;
const char *group;
int style;
int border;
int ownerDraw;
int ownerDrawFlags;
float borderSize;
int staticFlags;
int dynamicFlags[1];
int nextTime;
float foreColor[4];
float backColor[4];
float borderColor[4];
float outlineColor[4];
float disableColor[4];
Material *background;
};
enum expDataType
{
VAL_INT = 0x0,
VAL_FLOAT = 0x1,
VAL_STRING = 0x2,
NUM_INTERNAL_DATATYPES = 0x3,
VAL_FUNCTION = 0x3,
NUM_DATATYPES = 0x4,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct ExpressionString
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *string;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union operandInternalDataUnion
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int intVal;
float floatVal;
ExpressionString stringVal;
Statement_s *function;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct Operand
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
expDataType dataType;
operandInternalDataUnion internals;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
// This enum is unknown
enum operationEnum
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
BLUB
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union entryInternalData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
operationEnum op;
Operand operand;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct expressionEntry
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int type;
entryInternalData data;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct UIFunctionList
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int totalFunctions;
Statement_s **functions;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union DvarValue
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
bool enabled;
int integer;
unsigned int unsignedInt;
float value;
float vector[4];
const char *string;
char color[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct $BFBB53559BEAC4289F32B924847E59CB
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int stringCount;
const char **strings;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct $9CA192F9DB66A3CB7E01DE78A0DEA53D
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int min;
int max;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct $251C2428A496074035CACA7AAF3D55BD
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float min;
float max;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union DvarLimits
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
$BFBB53559BEAC4289F32B924847E59CB enumeration;
$9CA192F9DB66A3CB7E01DE78A0DEA53D integer;
$251C2428A496074035CACA7AAF3D55BD value;
$251C2428A496074035CACA7AAF3D55BD vector;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct dvar_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
const char *description;
unsigned int flags;
char type;
bool modified;
DvarValue current;
DvarValue latched;
DvarValue reset;
DvarLimits domain;
bool(__cdecl *domainFunc)(dvar_t *, DvarValue);
dvar_t *hashNext;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StaticDvar
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
dvar_t *dvar;
char *dvarName;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StaticDvarList
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int numStaticDvars;
StaticDvar **staticDvars;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StringList
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int totalStrings;
const char **strings;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct ExpressionSupportingData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
UIFunctionList uifunctions;
StaticDvarList staticDvarList;
StringList uiStrings;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct Statement_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int numEntries;
expressionEntry *entries;
ExpressionSupportingData *supportingData;
int lastExecuteTime;
Operand lastResult;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct ConditionalScript
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
MenuEventHandlerSet *eventHandlerSet;
Statement_s *eventExpression;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct SetLocalVarData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *localVarName;
Statement_s *expression;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union EventData
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *unconditionalScript;
ConditionalScript *conditionalScript;
MenuEventHandlerSet *elseScript;
SetLocalVarData *setLocalVarData;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) MenuEventHandler
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
EventData eventData;
char eventType;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MenuEventHandlerSet
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int eventHandlerCount;
MenuEventHandler **eventHandlers;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct ItemKeyHandler
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int key;
MenuEventHandlerSet *action;
ItemKeyHandler *next;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct columnInfo_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int pos;
int width;
int maxChars;
int alignment;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct listBoxDef_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int mousePos;
int startPos[1];
int endPos[1];
int drawPadding;
float elementWidth;
float elementHeight;
int elementStyle;
int numColumns;
columnInfo_s columnInfo[16];
MenuEventHandlerSet *onDoubleClick;
int notselectable;
int noScrollBars;
int usePaging;
float selectBorder[4];
Material *selectIcon;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct editFieldDef_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
float minVal;
float maxVal;
float defVal;
float range;
int maxChars;
int maxCharsGotoNext;
int maxPaintChars;
int paintOffset;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct multiDef_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *dvarList[32];
const char *dvarStr[32];
float dvarValue[32];
int count;
int strDef;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct newsTickerDef_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int feedId;
int speed;
int spacing;
int lastTime;
int start;
int end;
float x;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct textScrollDef_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int startTime;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union itemDefData_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
listBoxDef_s *listBox;
editFieldDef_s *editField;
multiDef_s *multi;
const char *enumDvarName;
newsTickerDef_s *ticker;
textScrollDef_s *scroll;
void *data;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct ItemFloatExpression
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int target;
Statement_s *expression;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct itemDef_s
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
windowDef_t window;
rectDef_s textRect[1];
int type;
int dataType;
int alignment;
int fontEnum;
int textAlignMode;
float textalignx;
float textaligny;
float textscale;
int textStyle;
int gameMsgWindowIndex;
int gameMsgWindowMode;
const char *text;
int itemFlags;
menuDef_t *parent;
MenuEventHandlerSet *mouseEnterText;
MenuEventHandlerSet *mouseExitText;
MenuEventHandlerSet *mouseEnter;
MenuEventHandlerSet *mouseExit;
MenuEventHandlerSet *action;
MenuEventHandlerSet *accept;
MenuEventHandlerSet *onFocus;
MenuEventHandlerSet *leaveFocus;
const char *dvar;
const char *dvarTest;
ItemKeyHandler *onKey;
const char *enableDvar;
const char *localVar;
int dvarFlags;
snd_alias_list_t *focusSound;
float special;
int cursorPos[1];
itemDefData_t typeData;
int imageTrack;
int floatExpressionCount;
ItemFloatExpression *floatExpressions;
Statement_s *visibleExp;
Statement_s *disabledExp;
Statement_s *textExp;
Statement_s *materialExp;
float glowColor[4];
bool decayActive;
int fxBirthTime;
int fxLetterTime;
int fxDecayStartTime;
int fxDecayDuration;
int lastSoundPlayedTime;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct menuTransition
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int transitionType;
int targetField;
int startTime;
float startVal;
float endVal;
float time;
int endTriggerType;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct menuDef_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
windowDef_t window;
const char *font;
int fullScreen;
int itemCount;
int fontIndex;
int cursorItem[1];
int fadeCycle;
float fadeClamp;
float fadeAmount;
float fadeInAmount;
float blurRadius;
MenuEventHandlerSet *onOpen;
MenuEventHandlerSet *onCloseRequest;
MenuEventHandlerSet *onClose;
MenuEventHandlerSet *onESC;
ItemKeyHandler *onKey;
Statement_s *visibleExp;
const char *allowedBinding;
const char *soundName;
int imageTrack;
float focusColor[4];
Statement_s *rectXExp;
Statement_s *rectYExp;
Statement_s *rectWExp;
Statement_s *rectHExp;
Statement_s *openSoundExp;
Statement_s *closeSoundExp;
itemDef_s **items;
menuTransition scaleTransition[1];
menuTransition alphaTransition[1];
menuTransition xTransition[1];
menuTransition yTransition[1];
ExpressionSupportingData *expressionData;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct MenuList
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int menuCount;
menuDef_t **menus;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct LocalizeEntry
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *value;
const char *name;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weapType_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WEAPTYPE_BULLET = 0x0,
WEAPTYPE_GRENADE = 0x1,
WEAPTYPE_PROJECTILE = 0x2,
WEAPTYPE_RIOTSHIELD = 0x3,
WEAPTYPE_NUM = 0x4,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weapClass_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WEAPCLASS_RIFLE = 0x0,
WEAPCLASS_SNIPER = 0x1,
WEAPCLASS_MG = 0x2,
WEAPCLASS_SMG = 0x3,
WEAPCLASS_SPREAD = 0x4,
WEAPCLASS_PISTOL = 0x5,
WEAPCLASS_GRENADE = 0x6,
WEAPCLASS_ROCKETLAUNCHER = 0x7,
WEAPCLASS_TURRET = 0x8,
WEAPCLASS_THROWINGKNIFE = 0x9,
WEAPCLASS_NON_PLAYER = 0xA,
WEAPCLASS_ITEM = 0xB,
WEAPCLASS_NUM = 0xC,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum PenetrateType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
PENETRATE_TYPE_NONE = 0x0,
PENETRATE_TYPE_SMALL = 0x1,
PENETRATE_TYPE_MEDIUM = 0x2,
PENETRATE_TYPE_LARGE = 0x3,
PENETRATE_TYPE_COUNT = 0x4,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weapInventoryType_t
{
WEAPINVENTORY_PRIMARY = 0x0,
WEAPINVENTORY_OFFHAND = 0x1,
WEAPINVENTORY_ITEM = 0x2,
WEAPINVENTORY_ALTMODE = 0x3,
WEAPINVENTORY_EXCLUSIVE = 0x4,
WEAPINVENTORY_SCAVENGER = 0x5,
WEAPINVENTORYCOUNT = 0x6,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weapFireType_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WEAPON_FIRETYPE_FULLAUTO = 0x0,
WEAPON_FIRETYPE_SINGLESHOT = 0x1,
WEAPON_FIRETYPE_BURSTFIRE2 = 0x2,
WEAPON_FIRETYPE_BURSTFIRE3 = 0x3,
WEAPON_FIRETYPE_BURSTFIRE4 = 0x4,
WEAPON_FIRETYPE_DOUBLEBARREL = 0x5,
WEAPON_FIRETYPECOUNT = 0x6,
WEAPON_FIRETYPE_BURSTFIRE_FIRST = 0x2,
WEAPON_FIRETYPE_BURSTFIRE_LAST = 0x4,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum OffhandClass
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
OFFHAND_CLASS_NONE = 0x0,
OFFHAND_CLASS_FRAG_GRENADE = 0x1,
OFFHAND_CLASS_SMOKE_GRENADE = 0x2,
OFFHAND_CLASS_FLASH_GRENADE = 0x3,
OFFHAND_CLASS_THROWINGKNIFE = 0x4,
OFFHAND_CLASS_OTHER = 0x5,
OFFHAND_CLASS_COUNT = 0x6,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weapStance_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WEAPSTANCE_STAND = 0x0,
WEAPSTANCE_DUCK = 0x1,
WEAPSTANCE_PRONE = 0x2,
WEAPSTANCE_NUM = 0x3,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum activeReticleType_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
VEH_ACTIVE_RETICLE_NONE = 0x0,
VEH_ACTIVE_RETICLE_PIP_ON_A_STICK = 0x1,
VEH_ACTIVE_RETICLE_BOUNCING_DIAMOND = 0x2,
VEH_ACTIVE_RETICLE_COUNT = 0x3,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weaponIconRatioType_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WEAPON_ICON_RATIO_1TO1 = 0x0,
WEAPON_ICON_RATIO_2TO1 = 0x1,
WEAPON_ICON_RATIO_4TO1 = 0x2,
WEAPON_ICON_RATIO_COUNT = 0x3,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum ammoCounterClipType_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
AMMO_COUNTER_CLIP_NONE = 0x0,
AMMO_COUNTER_CLIP_MAGAZINE = 0x1,
AMMO_COUNTER_CLIP_SHORTMAGAZINE = 0x2,
AMMO_COUNTER_CLIP_SHOTGUN = 0x3,
AMMO_COUNTER_CLIP_ROCKET = 0x4,
AMMO_COUNTER_CLIP_BELTFED = 0x5,
AMMO_COUNTER_CLIP_ALTWEAPON = 0x6,
AMMO_COUNTER_CLIP_COUNT = 0x7,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weapOverlayReticle_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WEAPOVERLAYRETICLE_NONE = 0x0,
WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
WEAPOVERLAYRETICLE_NUM = 0x2,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum WeapOverlayInteface_t
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
WEAPOVERLAYINTERFACE_NONE = 0x0,
WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
WEAPOVERLAYINTERFACECOUNT = 0x3,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum weapProjExposion_t
2017-03-29 10:44:05 -04:00
{
2018-05-09 08:33:52 -04:00
WEAPPROJEXP_GRENADE = 0x0,
WEAPPROJEXP_ROCKET = 0x1,
WEAPPROJEXP_FLASHBANG = 0x2,
WEAPPROJEXP_NONE = 0x3,
WEAPPROJEXP_DUD = 0x4,
WEAPPROJEXP_SMOKE = 0x5,
WEAPPROJEXP_HEAVY = 0x6,
WEAPPROJEXP_NUM = 0x7,
2017-03-29 10:44:05 -04:00
};
2018-05-09 08:33:52 -04:00
enum WeapStickinessType
2017-04-03 16:07:49 -04:00
{
2018-05-09 08:33:52 -04:00
WEAPSTICKINESS_NONE = 0x0,
WEAPSTICKINESS_ALL = 0x1,
WEAPSTICKINESS_ALL_ORIENT = 0x2,
WEAPSTICKINESS_GROUND = 0x3,
WEAPSTICKINESS_GROUND_WITH_YAW = 0x4,
WEAPSTICKINESS_KNIFE = 0x5,
WEAPSTICKINESS_COUNT = 0x6,
2017-04-03 16:07:49 -04:00
};
2018-05-09 08:33:52 -04:00
enum guidedMissileType_t
2017-04-03 16:07:49 -04:00
{
2018-05-09 08:33:52 -04:00
MISSILE_GUIDANCE_NONE = 0x0,
MISSILE_GUIDANCE_SIDEWINDER = 0x1,
MISSILE_GUIDANCE_HELLFIRE = 0x2,
MISSILE_GUIDANCE_JAVELIN = 0x3,
MISSILE_GUIDANCE_COUNT = 0x4,
2017-04-03 16:07:49 -04:00
};
2018-05-09 08:33:52 -04:00
struct TracerDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
Material *material;
unsigned int drawInterval;
float speed;
float beamLength;
float beamWidth;
float screwRadius;
float screwDist;
float colors[5][4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) WeaponDef
{
const char *szOverlayName;
XModel **gunXModel;
XModel *handXModel;
const char **szXAnimsRightHanded;
const char **szXAnimsLeftHanded;
const char *szModeName;
unsigned __int16 *notetrackSoundMapKeys;
unsigned __int16 *notetrackSoundMapValues;
unsigned __int16 *notetrackRumbleMapKeys;
unsigned __int16 *notetrackRumbleMapValues;
int playerAnimType;
weapType_t weapType;
weapClass_t weapClass;
PenetrateType penetrateType;
weapInventoryType_t inventoryType;
weapFireType_t fireType;
OffhandClass offhandClass;
weapStance_t stance;
FxEffectDef *viewFlashEffect;
FxEffectDef *worldFlashEffect;
snd_alias_list_t *pickupSound;
snd_alias_list_t *pickupSoundPlayer;
snd_alias_list_t *ammoPickupSound;
snd_alias_list_t *ammoPickupSoundPlayer;
snd_alias_list_t *projectileSound;
snd_alias_list_t *pullbackSound;
snd_alias_list_t *pullbackSoundPlayer;
snd_alias_list_t *fireSound;
snd_alias_list_t *fireSoundPlayer;
snd_alias_list_t *fireSoundPlayerAkimbo;
snd_alias_list_t *fireLoopSound;
snd_alias_list_t *fireLoopSoundPlayer;
snd_alias_list_t *fireStopSound;
snd_alias_list_t *fireStopSoundPlayer;
snd_alias_list_t *fireLastSound;
snd_alias_list_t *fireLastSoundPlayer;
snd_alias_list_t *emptyFireSound;
snd_alias_list_t *emptyFireSoundPlayer;
snd_alias_list_t *meleeSwipeSound;
snd_alias_list_t *meleeSwipeSoundPlayer;
snd_alias_list_t *meleeHitSound;
snd_alias_list_t *meleeMissSound;
snd_alias_list_t *rechamberSound;
snd_alias_list_t *rechamberSoundPlayer;
snd_alias_list_t *reloadSound;
snd_alias_list_t *reloadSoundPlayer;
snd_alias_list_t *reloadEmptySound;
snd_alias_list_t *reloadEmptySoundPlayer;
snd_alias_list_t *reloadStartSound;
snd_alias_list_t *reloadStartSoundPlayer;
snd_alias_list_t *reloadEndSound;
snd_alias_list_t *reloadEndSoundPlayer;
snd_alias_list_t *detonateSound;
snd_alias_list_t *detonateSoundPlayer;
snd_alias_list_t *nightVisionWearSound;
snd_alias_list_t *nightVisionWearSoundPlayer;
snd_alias_list_t *nightVisionRemoveSound;
snd_alias_list_t *nightVisionRemoveSoundPlayer;
snd_alias_list_t *altSwitchSound;
snd_alias_list_t *altSwitchSoundPlayer;
snd_alias_list_t *raiseSound;
snd_alias_list_t *raiseSoundPlayer;
snd_alias_list_t *firstRaiseSound;
snd_alias_list_t *firstRaiseSoundPlayer;
snd_alias_list_t *putawaySound;
snd_alias_list_t *putawaySoundPlayer;
snd_alias_list_t *scanSound;
snd_alias_list_t **bounceSound;
FxEffectDef *viewShellEjectEffect;
FxEffectDef *worldShellEjectEffect;
FxEffectDef *viewLastShotEjectEffect;
FxEffectDef *worldLastShotEjectEffect;
Material *reticleCenter;
Material *reticleSide;
int iReticleCenterSize;
int iReticleSideSize;
int iReticleMinOfs;
activeReticleType_t activeReticleType;
float vStandMove[3];
float vStandRot[3];
float strafeMove[3];
float strafeRot[3];
float vDuckedOfs[3];
float vDuckedMove[3];
float vDuckedRot[3];
float vProneOfs[3];
float vProneMove[3];
float vProneRot[3];
float fPosMoveRate;
float fPosProneMoveRate;
float fStandMoveMinSpeed;
float fDuckedMoveMinSpeed;
float fProneMoveMinSpeed;
float fPosRotRate;
float fPosProneRotRate;
float fStandRotMinSpeed;
float fDuckedRotMinSpeed;
float fProneRotMinSpeed;
XModel **worldModel;
XModel *worldClipModel;
XModel *rocketModel;
XModel *knifeModel;
XModel *worldKnifeModel;
Material *hudIcon;
weaponIconRatioType_t hudIconRatio;
Material *pickupIcon;
weaponIconRatioType_t pickupIconRatio;
Material *ammoCounterIcon;
weaponIconRatioType_t ammoCounterIconRatio;
ammoCounterClipType_t ammoCounterClip;
int iStartAmmo;
const char *szAmmoName;
int iAmmoIndex;
const char *szClipName;
int iClipIndex;
int iMaxAmmo;
int shotCount;
const char *szSharedAmmoCapName;
int iSharedAmmoCapIndex;
int iSharedAmmoCap;
int damage;
int playerDamage;
int iMeleeDamage;
int iDamageType;
int iFireDelay;
int iMeleeDelay;
int meleeChargeDelay;
int iDetonateDelay;
int iRechamberTime;
int rechamberTimeOneHanded;
int iRechamberBoltTime;
int iHoldFireTime;
int iDetonateTime;
int iMeleeTime;
int meleeChargeTime;
int iReloadTime;
int reloadShowRocketTime;
int iReloadEmptyTime;
int iReloadAddTime;
int iReloadStartTime;
int iReloadStartAddTime;
int iReloadEndTime;
int iDropTime;
int iRaiseTime;
int iAltDropTime;
int quickDropTime;
int quickRaiseTime;
int iBreachRaiseTime;
int iEmptyRaiseTime;
int iEmptyDropTime;
int sprintInTime;
int sprintLoopTime;
int sprintOutTime;
int stunnedTimeBegin;
int stunnedTimeLoop;
int stunnedTimeEnd;
int nightVisionWearTime;
int nightVisionWearTimeFadeOutEnd;
int nightVisionWearTimePowerUp;
int nightVisionRemoveTime;
int nightVisionRemoveTimePowerDown;
int nightVisionRemoveTimeFadeInStart;
int fuseTime;
int aiFuseTime;
float autoAimRange;
float aimAssistRange;
float aimAssistRangeAds;
float aimPadding;
float enemyCrosshairRange;
float moveSpeedScale;
float adsMoveSpeedScale;
float sprintDurationScale;
float fAdsZoomInFrac;
float fAdsZoomOutFrac;
Material *overlayMaterial;
Material *overlayMaterialLowRes;
Material *overlayMaterialEMP;
Material *overlayMaterialEMPLowRes;
weapOverlayReticle_t overlayReticle;
WeapOverlayInteface_t overlayInterface;
float overlayWidth;
float overlayHeight;
float overlayWidthSplitscreen;
float overlayHeightSplitscreen;
float fAdsBobFactor;
float fAdsViewBobMult;
float fHipSpreadStandMin;
float fHipSpreadDuckedMin;
float fHipSpreadProneMin;
float hipSpreadStandMax;
float hipSpreadDuckedMax;
float hipSpreadProneMax;
float fHipSpreadDecayRate;
float fHipSpreadFireAdd;
float fHipSpreadTurnAdd;
float fHipSpreadMoveAdd;
float fHipSpreadDuckedDecay;
float fHipSpreadProneDecay;
float fHipReticleSidePos;
float fAdsIdleAmount;
float fHipIdleAmount;
float adsIdleSpeed;
float hipIdleSpeed;
float fIdleCrouchFactor;
float fIdleProneFactor;
float fGunMaxPitch;
float fGunMaxYaw;
float swayMaxAngle;
float swayLerpSpeed;
float swayPitchScale;
float swayYawScale;
float swayHorizScale;
float swayVertScale;
float swayShellShockScale;
float adsSwayMaxAngle;
float adsSwayLerpSpeed;
float adsSwayPitchScale;
float adsSwayYawScale;
float adsSwayHorizScale;
float adsSwayVertScale;
float adsViewErrorMin;
float adsViewErrorMax;
PhysCollmap *physCollmap;
float dualWieldViewModelOffset;
weaponIconRatioType_t killIconRatio;
int iReloadAmmoAdd;
int iReloadStartAdd;
int ammoDropStockMin;
int ammoDropClipPercentMin;
int ammoDropClipPercentMax;
int iExplosionRadius;
int iExplosionRadiusMin;
int iExplosionInnerDamage;
int iExplosionOuterDamage;
float damageConeAngle;
float bulletExplDmgMult;
float bulletExplRadiusMult;
int iProjectileSpeed;
int iProjectileSpeedUp;
int iProjectileSpeedForward;
int iProjectileActivateDist;
float projLifetime;
float timeToAccelerate;
float projectileCurvature;
XModel *projectileModel;
weapProjExposion_t projExplosion;
FxEffectDef *projExplosionEffect;
FxEffectDef *projDudEffect;
snd_alias_list_t *projExplosionSound;
snd_alias_list_t *projDudSound;
WeapStickinessType stickiness;
float lowAmmoWarningThreshold;
float ricochetChance;
float *parallelBounce;
float *perpendicularBounce;
FxEffectDef *projTrailEffect;
FxEffectDef *projBeaconEffect;
float vProjectileColor[3];
guidedMissileType_t guidedMissileType;
float maxSteeringAccel;
int projIgnitionDelay;
FxEffectDef *projIgnitionEffect;
snd_alias_list_t *projIgnitionSound;
float fAdsAimPitch;
float fAdsCrosshairInFrac;
float fAdsCrosshairOutFrac;
int adsGunKickReducedKickBullets;
float adsGunKickReducedKickPercent;
float fAdsGunKickPitchMin;
float fAdsGunKickPitchMax;
float fAdsGunKickYawMin;
float fAdsGunKickYawMax;
float fAdsGunKickAccel;
float fAdsGunKickSpeedMax;
float fAdsGunKickSpeedDecay;
float fAdsGunKickStaticDecay;
float fAdsViewKickPitchMin;
float fAdsViewKickPitchMax;
float fAdsViewKickYawMin;
float fAdsViewKickYawMax;
float fAdsViewScatterMin;
float fAdsViewScatterMax;
float fAdsSpread;
int hipGunKickReducedKickBullets;
float hipGunKickReducedKickPercent;
float fHipGunKickPitchMin;
float fHipGunKickPitchMax;
float fHipGunKickYawMin;
float fHipGunKickYawMax;
float fHipGunKickAccel;
float fHipGunKickSpeedMax;
float fHipGunKickSpeedDecay;
float fHipGunKickStaticDecay;
float fHipViewKickPitchMin;
float fHipViewKickPitchMax;
float fHipViewKickYawMin;
float fHipViewKickYawMax;
float fHipViewScatterMin;
float fHipViewScatterMax;
float fightDist;
float maxDist;
const char *accuracyGraphName[2];
float(*originalAccuracyGraphKnots[2])[2];
unsigned __int16 originalAccuracyGraphKnotCount[2];
int iPositionReloadTransTime;
float leftArc;
float rightArc;
float topArc;
float bottomArc;
float accuracy;
float aiSpread;
float playerSpread;
float minTurnSpeed[2];
float maxTurnSpeed[2];
float pitchConvergenceTime;
float yawConvergenceTime;
float suppressTime;
float maxRange;
float fAnimHorRotateInc;
float fPlayerPositionDist;
const char *szUseHintString;
const char *dropHintString;
int iUseHintStringIndex;
int dropHintStringIndex;
float horizViewJitter;
float vertViewJitter;
float scanSpeed;
float scanAccel;
int scanPauseTime;
const char *szScript;
float fOOPosAnimLength[2];
int minDamage;
int minPlayerDamage;
float fMaxDamageRange;
float fMinDamageRange;
float destabilizationRateTime;
float destabilizationCurvatureMax;
int destabilizeDistance;
float *locationDamageMultipliers;
const char *fireRumble;
const char *meleeImpactRumble;
TracerDef *tracerType;
float turretScopeZoomRate;
float turretScopeZoomMin;
float turretScopeZoomMax;
float turretOverheatUpRate;
float turretOverheatDownRate;
float turretOverheatPenalty;
snd_alias_list_t *turretOverheatSound;
FxEffectDef *turretOverheatEffect;
const char *turretBarrelSpinRumble;
float turretBarrelSpinSpeed;
float turretBarrelSpinUpTime;
float turretBarrelSpinDownTime;
snd_alias_list_t *turretBarrelSpinMaxSnd;
snd_alias_list_t *turretBarrelSpinUpSnd[4];
snd_alias_list_t *turretBarrelSpinDownSnd[4];
snd_alias_list_t *missileConeSoundAlias;
snd_alias_list_t *missileConeSoundAliasAtBase;
float missileConeSoundRadiusAtTop;
float missileConeSoundRadiusAtBase;
float missileConeSoundHeight;
float missileConeSoundOriginOffset;
float missileConeSoundVolumescaleAtCore;
float missileConeSoundVolumescaleAtEdge;
float missileConeSoundVolumescaleCoreSize;
float missileConeSoundPitchAtTop;
float missileConeSoundPitchAtBottom;
float missileConeSoundPitchTopSize;
float missileConeSoundPitchBottomSize;
float missileConeSoundCrossfadeTopSize;
float missileConeSoundCrossfadeBottomSize;
bool sharedAmmo;
bool lockonSupported;
bool requireLockonToFire;
bool bigExplosion;
bool noAdsWhenMagEmpty;
bool avoidDropCleanup;
bool inheritsPerks;
bool crosshairColorChange;
bool bRifleBullet;
bool armorPiercing;
bool bBoltAction;
bool aimDownSight;
bool bRechamberWhileAds;
bool bBulletExplosiveDamage;
bool bCookOffHold;
bool bClipOnly;
bool noAmmoPickup;
bool adsFireOnly;
bool cancelAutoHolsterWhenEmpty;
bool disableSwitchToWhenEmpty;
bool suppressAmmoReserveDisplay;
bool laserSightDuringNightvision;
bool markableViewmodel;
bool noDualWield;
bool flipKillIcon;
bool bNoPartialReload;
bool bSegmentedReload;
bool blocksProne;
bool silenced;
bool isRollingGrenade;
bool projExplosionEffectForceNormalUp;
bool bProjImpactExplode;
bool stickToPlayers;
bool hasDetonator;
bool disableFiring;
bool timedDetonation;
bool rotate;
bool holdButtonToThrow;
bool freezeMovementWhenFiring;
bool thermalScope;
bool altModeSameWeapon;
bool turretBarrelSpinEnabled;
bool missileConeSoundEnabled;
bool missileConeSoundPitchshiftEnabled;
bool missileConeSoundCrossfadeEnabled;
bool offhandHoldIsCancelable;
};
enum ImpactType
{
IMPACT_TYPE_NONE = 0x0,
IMPACT_TYPE_BULLET_SMALL = 0x1,
IMPACT_TYPE_BULLET_LARGE = 0x2,
IMPACT_TYPE_BULLET_AP = 0x3,
IMPACT_TYPE_BULLET_EXPLODE = 0x4,
IMPACT_TYPE_SHOTGUN = 0x5,
IMPACT_TYPE_SHOTGUN_EXPLODE = 0x6,
IMPACT_TYPE_GRENADE_BOUNCE = 0x7,
IMPACT_TYPE_GRENADE_EXPLODE = 0x8,
IMPACT_TYPE_ROCKET_EXPLODE = 0x9,
IMPACT_TYPE_PROJECTILE_DUD = 0xA,
IMPACT_TYPE_COUNT = 0xB,
};
struct /*__declspec(align(2))*/ WeaponCompleteDef
{
const char *szInternalName;
WeaponDef *weapDef;
const char *szDisplayName;
unsigned __int16 *hideTags;
const char **szXAnims;
float fAdsZoomFov;
int iAdsTransInTime;
int iAdsTransOutTime;
int iClipSize;
ImpactType impactType;
int iFireTime;
weaponIconRatioType_t dpadIconRatio;
float penetrateMultiplier;
float fAdsViewKickCenterSpeed;
float fHipViewKickCenterSpeed;
const char *szAltWeaponName;
unsigned int altWeaponIndex;
int iAltRaiseTime;
Material *killIcon;
Material *dpadIcon;
int fireAnimLength;
int iFirstRaiseTime;
int ammoDropStockMax;
float adsDofStart;
float adsDofEnd;
unsigned __int16 accuracyGraphKnotCount[2];
float(*accuracyGraphKnots[2])[2];
bool motionTracker;
bool enhanced;
bool dpadIconShowsAmmo;
};
struct SndDriverGlobals
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxImpactEntry
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
FxEffectDef *nonflesh[31];
FxEffectDef *flesh[4];
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct FxImpactTable
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
FxImpactEntry *table;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct RawFile
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int compressedLen;
int len;
const char *buffer;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StringTableCell
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *string;
int hash;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StringTable
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int columnCount;
int rowCount;
StringTableCell *values;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum LbColType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
LBCOL_TYPE_NUMBER = 0x0,
LBCOL_TYPE_TIME = 0x1,
LBCOL_TYPE_LEVELXP = 0x2,
LBCOL_TYPE_PRESTIGE = 0x3,
LBCOL_TYPE_BIGNUMBER = 0x4,
LBCOL_TYPE_PERCENT = 0x5,
LBCOL_TYPE_COUNT = 0x6,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum LbAggType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
LBAGG_TYPE_MIN = 0x0,
LBAGG_TYPE_MAX = 0x1,
LBAGG_TYPE_SUM = 0x2,
LBAGG_TYPE_LAST = 0x3,
LBAGG_TYPE_COUNT = 0x4,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct LbColumnDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int id;
int propertyId;
bool hidden;
const char *statName;
LbColType type;
int precision;
LbAggType agg;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct LeaderboardDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
int id;
int columnCount;
int xpColId;
int prestigeColId;
LbColumnDef *columns;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct __declspec(align(4)) StructuredDataEnumEntry
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *string;
unsigned __int16 index;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataEnum
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int entryCount;
int reservedEntryCount;
StructuredDataEnumEntry *entries;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum StructuredDataTypeCategory
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
DATA_INT = 0x0,
DATA_BYTE = 0x1,
DATA_BOOL = 0x2,
DATA_STRING = 0x3,
DATA_ENUM = 0x4,
DATA_STRUCT = 0x5,
DATA_INDEXED_ARRAY = 0x6,
DATA_ENUM_ARRAY = 0x7,
DATA_FLOAT = 0x8,
DATA_SHORT = 0x9,
DATA_COUNT = 0xA,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
union StructuredDataTypeUnion
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
unsigned int stringDataLength;
int enumIndex;
int structIndex;
int indexedArrayIndex;
int enumedArrayIndex;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
StructuredDataTypeCategory type;
StructuredDataTypeUnion u;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataStructProperty
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
StructuredDataType type;
unsigned int offset;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataStruct
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int propertyCount;
StructuredDataStructProperty *properties;
int size;
unsigned int bitOffset;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataIndexedArray
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int arraySize;
StructuredDataType elementType;
unsigned int elementSize;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataEnumedArray
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int enumIndex;
StructuredDataType elementType;
unsigned int elementSize;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int version;
unsigned int formatChecksum;
int enumCount;
StructuredDataEnum *enums;
int structCount;
StructuredDataStruct *structs;
int indexedArrayCount;
StructuredDataIndexedArray *indexedArrays;
int enumedArrayCount;
StructuredDataEnumedArray *enumedArrays;
StructuredDataType rootType;
unsigned int size;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataDefSet
2017-01-19 16:23:59 -05:00
{
2017-03-20 05:38:30 -04:00
const char *name;
2018-05-09 08:33:52 -04:00
unsigned int defCount;
StructuredDataDef *defs;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct StructuredDataBuffer
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
char *data;
unsigned int size;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum VehicleType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
VEH_WHEELS_4 = 0x0,
VEH_TANK = 0x1,
VEH_PLANE = 0x2,
VEH_BOAT = 0x3,
VEH_ARTILLERY = 0x4,
VEH_HELICOPTER = 0x5,
VEH_SNOWMOBILE = 0x6,
VEH_TYPE_COUNT = 0x7,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
enum VehicleAxleType
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
VEH_AXLE_FRONT = 0x0,
VEH_AXLE_REAR = 0x1,
VEH_AXLE_ALL = 0x2,
VEH_AXLE_COUNT = 0x3,
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct VehiclePhysDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
int physicsEnabled;
const char *physPresetName;
PhysPreset *physPreset;
const char *accelGraphName;
VehicleAxleType steeringAxle;
VehicleAxleType powerAxle;
VehicleAxleType brakingAxle;
float topSpeed;
float reverseSpeed;
float maxVelocity;
float maxPitch;
float maxRoll;
float suspensionTravelFront;
float suspensionTravelRear;
float suspensionStrengthFront;
float suspensionDampingFront;
float suspensionStrengthRear;
float suspensionDampingRear;
float frictionBraking;
float frictionCoasting;
float frictionTopSpeed;
float frictionSide;
float frictionSideRear;
float velocityDependentSlip;
float rollStability;
float rollResistance;
float pitchResistance;
float yawResistance;
float uprightStrengthPitch;
float uprightStrengthRoll;
float targetAirPitch;
float airYawTorque;
float airPitchTorque;
float minimumMomentumForCollision;
float collisionLaunchForceScale;
float wreckedMassScale;
float wreckedBodyFriction;
float minimumJoltForNotify;
float slipThresholdFront;
float slipThresholdRear;
float slipFricScaleFront;
float slipFricScaleRear;
float slipFricRateFront;
float slipFricRateRear;
float slipYawTorque;
2017-01-19 16:23:59 -05:00
};
2018-05-09 08:33:52 -04:00
struct VehicleDef
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
VehicleType type;
const char *useHintString;
int health;
int quadBarrel;
float texScrollScale;
float topSpeed;
float accel;
float rotRate;
float rotAccel;
float maxBodyPitch;
float maxBodyRoll;
float fakeBodyAccelPitch;
float fakeBodyAccelRoll;
float fakeBodyVelPitch;
float fakeBodyVelRoll;
float fakeBodySideVelPitch;
float fakeBodyPitchStrength;
float fakeBodyRollStrength;
float fakeBodyPitchDampening;
float fakeBodyRollDampening;
float fakeBodyBoatRockingAmplitude;
float fakeBodyBoatRockingPeriod;
float fakeBodyBoatRockingRotationPeriod;
float fakeBodyBoatRockingFadeoutSpeed;
float boatBouncingMinForce;
float boatBouncingMaxForce;
float boatBouncingRate;
float boatBouncingFadeinSpeed;
float boatBouncingFadeoutSteeringAngle;
float collisionDamage;
float collisionSpeed;
float killcamOffset[3];
int playerProtected;
int bulletDamage;
int armorPiercingDamage;
int grenadeDamage;
int projectileDamage;
int projectileSplashDamage;
int heavyExplosiveDamage;
VehiclePhysDef vehPhysDef;
float boostDuration;
float boostRechargeTime;
float boostAcceleration;
float suspensionTravel;
float maxSteeringAngle;
float steeringLerp;
float minSteeringScale;
float minSteeringSpeed;
int camLookEnabled;
float camLerp;
float camPitchInfluence;
float camRollInfluence;
float camFovIncrease;
float camFovOffset;
float camFovSpeed;
const char *turretWeaponName;
WeaponCompleteDef *turretWeapon;
float turretHorizSpanLeft;
float turretHorizSpanRight;
float turretVertSpanUp;
float turretVertSpanDown;
float turretRotRate;
snd_alias_list_t *turretSpinSnd;
snd_alias_list_t *turretStopSnd;
int trophyEnabled;
float trophyRadius;
float trophyInactiveRadius;
int trophyAmmoCount;
float trophyReloadTime;
unsigned __int16 trophyTags[4];
Material *compassFriendlyIcon;
Material *compassEnemyIcon;
int compassIconWidth;
int compassIconHeight;
snd_alias_list_t *idleLowSnd;
snd_alias_list_t *idleHighSnd;
snd_alias_list_t *engineLowSnd;
snd_alias_list_t *engineHighSnd;
float engineSndSpeed;
snd_alias_list_t *engineStartUpSnd;
int engineStartUpLength;
snd_alias_list_t *engineShutdownSnd;
snd_alias_list_t *engineIdleSnd;
snd_alias_list_t *engineSustainSnd;
snd_alias_list_t *engineRampUpSnd;
int engineRampUpLength;
snd_alias_list_t *engineRampDownSnd;
int engineRampDownLength;
snd_alias_list_t *suspensionSoftSnd;
float suspensionSoftCompression;
snd_alias_list_t *suspensionHardSnd;
float suspensionHardCompression;
snd_alias_list_t *collisionSnd;
float collisionBlendSpeed;
snd_alias_list_t *speedSnd;
float speedSndBlendSpeed;
const char *surfaceSndPrefix;
snd_alias_list_t *surfaceSnds[31];
float surfaceSndBlendSpeed;
float slideVolume;
float slideBlendSpeed;
float inAirPitch;
};
struct AddonMapEnts
2017-01-19 16:23:59 -05:00
{
2018-05-09 08:33:52 -04:00
const char *name;
char *entityString;
int numEntityChars;
MapTriggers trigger;
2017-01-19 16:23:59 -05:00
};
union XAssetHeader
{
void *data;
2018-05-09 08:33:52 -04:00
PhysPreset *physPreset;
PhysCollmap *physCollmap;
XAnimParts *parts;
XModelSurfs *modelSurfs;
XModel *model;
Material *material;
MaterialPixelShader *pixelShader;
MaterialVertexShader *vertexShader;
MaterialVertexDeclaration *vertexDecl;
MaterialTechniqueSet *techniqueSet;
GfxImage *image;
snd_alias_list_t *sound;
SndCurve *sndCurve;
LoadedSound *loadSnd;
clipMap_t *clipMap;
ComWorld *comWorld;
GameWorldSp *gameWorldSp;
GameWorldMp *gameWorldMp;
MapEnts *mapEnts;
FxWorld *fxWorld;
GfxWorld *gfxWorld;
GfxLightDef *lightDef;
Font_s *font;
2017-01-19 16:23:59 -05:00
MenuList *menuList;
menuDef_t *menu;
2018-05-09 08:33:52 -04:00
LocalizeEntry *localize;
WeaponCompleteDef *weapon;
SndDriverGlobals *sndDriverGlobals;
FxEffectDef *fx;
FxImpactTable *impactFx;
RawFile *rawfile;
StringTable *stringTable;
LeaderboardDef *leaderboardDef;
StructuredDataDefSet *structuredDataDefSet;
TracerDef *tracerDef;
VehicleDef *vehDef;
AddonMapEnts *addonMapEnts;
2017-01-19 16:23:59 -05:00
};
struct XAsset
{
XAssetType type;
XAssetHeader header;
};
struct XBlock
{
char *data;
unsigned int size;
};
struct XAssetEntry
{
XAsset asset;
char zoneIndex;
volatile char inuse;
2017-01-19 16:23:59 -05:00
unsigned __int16 nextHash;
unsigned __int16 nextOverride;
unsigned __int16 usageFrame;
};
enum XFileLanguage : unsigned char
{
XLANG_NONE = 0x00,
XLANG_ENGLISH = 0x01,
XLANG_FRENCH = 0x02,
XLANG_GERMAN = 0x03,
XLANG_ITALIAN = 0x04,
XLANG_SPANISH = 0x05,
XLANG_BRITISH = 0x06,
XLANG_RUSSIAN = 0x07,
XLANG_POLISH = 0x08,
XLANG_KOREAN = 0x09,
XLANG_TAIWANESE = 0x0A,
XLANG_JAPANESE = 0x0B,
XLANG_CHINESE = 0x0C,
XLANG_THAI = 0x0D,
XLANG_LEET = 0x0E, // Wat?
XLANG_CZECH = 0x0F,
};
#pragma pack(push, 1)
2017-01-21 12:34:29 -05:00
struct XFileHeader
2017-01-19 16:23:59 -05:00
{
unsigned __int64 magic;
unsigned int version;
XFileLanguage language;
DWORD highDateTime;
DWORD lowDateTime;
};
#pragma pack(pop)
enum XFILE_BLOCK_TYPES
{
XFILE_BLOCK_TEMP = 0x0,
XFILE_BLOCK_PHYSICAL = 0x1,
XFILE_BLOCK_RUNTIME = 0x2,
XFILE_BLOCK_VIRTUAL = 0x3,
XFILE_BLOCK_LARGE = 0x4,
// Those are probably incorrect
XFILE_BLOCK_CALLBACK,
XFILE_BLOCK_VERTEX,
XFILE_BLOCK_INDEX,
MAX_XFILE_COUNT,
XFILE_BLOCK_INVALID = -1
};
struct XFile
{
unsigned int size;
unsigned int externalSize;
unsigned int blockSize[MAX_XFILE_COUNT];
};
struct ScriptStringList
{
int count;
const char **strings;
};
struct XAssetList
{
ScriptStringList stringList;
int assetCount;
XAsset *assets;
};
struct ZoneHeader
{
XFile xFile;
XAssetList assetList;
};
struct XZoneMemory
{
XBlock blocks[MAX_XFILE_COUNT];
char *lockedVertexData;
char *lockedIndexData;
void *vertexBuffer;
void *indexBuffer;
};
struct XZone
{
int unk;
char name[64];
int flags;
int allocType;
XZoneMemory mem;
int fileSize;
char modZone;
};
2017-01-19 16:23:59 -05:00
struct XNKID
{
char ab[8];
};
struct XNADDR
{
in_addr ina;
in_addr inaOnline;
unsigned __int16 wPortOnline;
char abEnet[6];
char abOnline[20];
};
struct XNKEY
{
char ab[16];
};
struct _XSESSION_INFO
{
XNKID sessionID;
XNADDR hostAddress;
XNKEY keyExchangeKey;
};
struct mapArena_t
{
char uiName[32];
char mapName[16];
char description[32];
char mapimage[32];
char keys[32][16];
char values[32][64];
char pad[144];
};
struct newMapArena_t
{
char uiName[32];
char oldMapName[16];
char description[32];
char mapimage[32];
char keys[32][16];
char values[32][64];
char other[144];
char mapName[32];
};
struct gameTypeName_t
{
char gameType[12];
char uiName[32];
};
typedef struct party_s
{
unsigned char pad1[544];
int privateSlots;
int publicSlots;
} party_t;
typedef struct PartyData_s
{
DWORD unk;
} PartyData_t;
struct fileInIwd_s
{
unsigned int pos;
char *name;
fileInIwd_s *next;
};
struct iwd_t
{
char iwdFilename[256];
char iwdBasename[256];
char iwdGamename[256];
char *handle;
int checksum;
int pure_checksum;
volatile int hasOpenFile;
int numfiles;
char referenced;
unsigned int hashSize;
fileInIwd_s **hashTable;
fileInIwd_s *buildBuffer;
};
2017-04-22 15:47:04 -04:00
#ifdef IDA
2017-01-19 16:23:59 -05:00
typedef void _iobuf;
#endif
union qfile_gus
{
_iobuf *o;
char *z;
};
struct qfile_us
{
qfile_gus file;
int iwdIsClone;
};
struct fileHandleData_t
{
qfile_us handleFiles;
int handleSync;
int fileSize;
int zipFilePos;
iwd_t *zipFile;
int streamed;
char name[256];
};
typedef struct {
char path[256]; // c:\quake3
char gamedir[256]; // baseq3
} directory_t;
typedef struct searchpath_s
{
searchpath_s* next;
iwd_t *iwd;
directory_t* dir;
int bLocalized;
int ignore;
int ignorePureCheck;
int language;
} searchpath_t;
struct SafeArea
{
int fontHeight;
int textHeight;
int textWidth;
float left;
float top;
float right;
float bottom;
};
#pragma pack(push, 4)
struct SpawnVar
{
bool spawnVarsValid;
int numSpawnVars;
char *spawnVars[64][2];
int numSpawnVarChars;
char spawnVarChars[2048];
};
#pragma pack(pop)
#pragma pack(push, 4)
struct usercmd_s
{
int serverTime;
int buttons;
int angles[3];
2017-05-30 13:21:55 -04:00
unsigned __int16 weapon;
unsigned __int16 primaryWeaponForAltMode;
unsigned __int16 offHandIndex;
2017-01-19 16:23:59 -05:00
char forwardmove;
char rightmove;
float meleeChargeYaw;
char meleeChargeDist;
2017-05-30 13:21:55 -04:00
char selectedLoc[2];
char selectedLocAngle;
char remoteControlAngles[2];
2017-01-19 16:23:59 -05:00
};
#pragma pack(pop)
typedef char mapname_t[40];
struct traceWork_t
{
/*TraceExtents*/int extents;
float delta[3];
float deltaLen;
float deltaLenSq;
float delta2DLen;
float delta2DLenSq;
float size[3];
Bounds bounds;
int contents;
bool isPoint;
bool axialCullOnly;
float radius;
float offset[3];
float radiusOffset[3];
float boundingRadius;
/*TraceThreadInfo*/ int threadInfo;
/*CM_WorldTraceCallbacks*/ void *callbacks;
};
2017-02-05 05:22:08 -05:00
struct gameState_t
{
int stringOffsets[4139];
char stringData[131072];
int dataCount;
} gameState;
2017-01-19 16:23:59 -05:00
2017-04-29 17:08:41 -04:00
struct VariableStackBuffer
{
const char *pos;
unsigned __int16 size;
unsigned __int16 bufLen;
unsigned __int16 localId;
char time;
char buf[1];
};
enum VariableType
{
VAR_UNDEFINED = 0x0,
VAR_BEGIN_REF = 0x1,
VAR_POINTER = 0x1,
VAR_STRING = 0x2,
VAR_ISTRING = 0x3,
VAR_VECTOR = 0x4,
VAR_END_REF = 0x5,
VAR_FLOAT = 0x5,
VAR_INTEGER = 0x6,
VAR_CODEPOS = 0x7,
VAR_PRECODEPOS = 0x8,
VAR_FUNCTION = 0x9,
VAR_BUILTIN_FUNCTION = 0xA,
VAR_BUILTIN_METHOD = 0xB,
VAR_STACK = 0xC,
VAR_ANIMATION = 0xD,
VAR_PRE_ANIMATION = 0xE,
VAR_THREAD = 0xF,
VAR_NOTIFY_THREAD = 0x10,
VAR_TIME_THREAD = 0x11,
VAR_CHILD_THREAD = 0x12,
VAR_OBJECT = 0x13,
VAR_DEAD_ENTITY = 0x14,
VAR_ENTITY = 0x15,
VAR_ARRAY = 0x16,
VAR_DEAD_THREAD = 0x17,
VAR_COUNT = 0x18,
VAR_FREE = 0x18,
VAR_THREAD_LIST = 0x19,
VAR_ENDON_LIST = 0x1A,
VAR_TOTAL_COUNT = 0x1B,
};
union VariableUnion
{
int intValue;
unsigned int uintValue;
float floatValue;
unsigned int stringValue;
const float *vectorValue;
const char *codePosValue;
unsigned int pointerValue;
VariableStackBuffer *stackValue;
unsigned int entityOffset;
};
struct VariableValue
{
VariableUnion u;
int type;
};
2017-05-14 14:14:52 -04:00
struct ScriptContainer
{
VariableValue* stack;
2017-05-14 14:14:52 -04:00
char unk1;
char unk2;
char unk3;
char pad;
DWORD unk4;
int numParam;
};
2018-05-09 08:33:52 -04:00
enum UILocalVarType
{
UILOCALVAR_INT = 0x0,
UILOCALVAR_FLOAT = 0x1,
UILOCALVAR_STRING = 0x2,
};
union $B42A88463653BDCDFC5664844B4491DA
{
int integer;
float value;
const char *string;
};
struct UILocalVar
{
UILocalVarType type;
const char *name;
$B42A88463653BDCDFC5664844B4491DA u;
};
struct UILocalVarContext
{
UILocalVar table[256];
};
struct $1942E78D15753E2013144570239460A8
{
float x;
float y;
int lastMoveTime;
};
struct UiContext
{
int localClientNum;
float bias;
int realTime;
int frameTime;
$1942E78D15753E2013144570239460A8 cursor;
int isCursorVisible;
int paintFull;
int screenWidth;
int screenHeight;
float screenAspect;
float FPS;
float blurRadiusOut;
menuDef_t *Menus[640];
int menuCount;
menuDef_t *menuStack[16];
int openMenuCount;
UILocalVarContext localVars;
};
struct msg_t
{
int overflowed;
int readOnly;
char *data;
char *splitData;
int maxsize;
int cursize;
int splitSize;
int readcount;
int bit;
int lastEntityRef;
};
struct XZoneInfo
{
const char *name;
int allocFlags;
int freeFlags;
};
enum FsListBehavior_e
{
FS_LIST_PURE_ONLY = 0x0,
FS_LIST_ALL = 0x1,
};
enum netsrc_t
{
NS_CLIENT1 = 0x0,
NS_SERVER = 0x1,
NS_MAXCLIENTS = 0x1,
NS_PACKET = 0x2,
};
enum netadrtype_t
{
NA_BOT = 0x0,
NA_BAD = 0x1,
NA_LOOPBACK = 0x2,
NA_BROADCAST = 0x3,
NA_IP = 0x4,
NA_IPX = 0x5,
NA_BROADCAST_IPX = 0x6,
};
typedef union
{
unsigned char bytes[4];
DWORD full;
} netIP_t;
struct netadr_t
{
netadrtype_t type;
//char ip[4];
netIP_t ip;
unsigned __int16 port;
char ipx[10];
};
struct FxEditorElemAtlas
{
int behavior;
int index;
int fps;
int loopCount;
int colIndexBits;
int rowIndexBits;
int entryCount;
};
struct FxCurve
{
int dimensionCount;
int keyCount;
float keys[1];
};
union $81775853B5F1E1C6748A82ED93FC367C
{
FxElemVisuals visuals[32];
FxElemMarkVisuals markVisuals[16];
};
struct FxEditorTrailDef
{
FxTrailVertex verts[64];
int vertCount;
unsigned __int16 inds[128];
int indCount;
};
struct FxEditorElemDef
{
char name[48];
int editorFlags;
int flags;
FxFloatRange spawnRange;
FxFloatRange fadeInRange;
FxFloatRange fadeOutRange;
float spawnFrustumCullRadius;
FxSpawnDefLooping spawnLooping;
FxSpawnDefOneShot spawnOneShot;
FxIntRange spawnDelayMsec;
FxIntRange lifeSpanMsec;
FxFloatRange spawnOrigin[3];
FxFloatRange spawnOffsetRadius;
FxFloatRange spawnOffsetHeight;
FxFloatRange spawnAngles[3];
FxFloatRange angularVelocity[3];
FxFloatRange initialRotation;
FxFloatRange gravity;
FxFloatRange elasticity;
FxEditorElemAtlas atlas;
float velScale[2][3];
FxCurve *velShape[2][3][2];
float rotationScale;
FxCurve *rotationShape[2];
float sizeScale[2];
FxCurve *sizeShape[2][2];
float scaleScale;
FxCurve *scaleShape[2];
FxCurve *color[2];
FxCurve *alpha[2];
float lightingFrac;
float decalFadeInTime;
float collOffset[3];
float collRadius;
FxEffectDef *effectOnImpact;
FxEffectDef *effectOnDeath;
int sortOrder;
FxEffectDef *emission;
FxFloatRange emitDist;
FxFloatRange emitDistVariance;
char elemType;
int visualCount;
$81775853B5F1E1C6748A82ED93FC367C ___u42;
int trailSplitDist;
int trailSplitArcDist;
int trailSplitTime;
int trailRepeatDist;
float trailScrollTime;
FxEditorTrailDef trailDef;
float sparkFountainGravity;
float sparkFountainBounceFrac;
float sparkFountainBounceRand;
float sparkFountainSparkSpacing;
float sparkFountainSparkLength;
int sparkFountainSparkCount;
float sparkFountainLoopTime;
float sparkFountainVelMin;
float sparkFountainVelMax;
float sparkFountainVelConeAngle;
float sparkFountainRestSpeed;
float sparkFountainBoostTime;
float sparkFountainBoostFactor;
};
struct FxEditorEffectDef
{
char name[64];
int elemCount;
FxEditorElemDef elems[32];
};
struct FxElemField
{
const char *keyName;
bool(__cdecl *handler)(const char **, FxEditorElemDef *);
};
enum $18B36A54AD92993D0728595D3504B7CB
{
FX_ELEM_TYPE_SPRITE_BILLBOARD = 0x0,
FX_ELEM_TYPE_SPRITE_ORIENTED = 0x1,
FX_ELEM_TYPE_TAIL = 0x2,
FX_ELEM_TYPE_TRAIL = 0x3,
FX_ELEM_TYPE_CLOUD = 0x4,
FX_ELEM_TYPE_SPARK_CLOUD = 0x5,
FX_ELEM_TYPE_SPARK_FOUNTAIN = 0x6,
FX_ELEM_TYPE_MODEL = 0x7,
FX_ELEM_TYPE_OMNI_LIGHT = 0x8,
FX_ELEM_TYPE_SPOT_LIGHT = 0x9,
FX_ELEM_TYPE_SOUND = 0xA,
FX_ELEM_TYPE_DECAL = 0xB,
FX_ELEM_TYPE_RUNNER = 0xC,
FX_ELEM_TYPE_COUNT = 0xD,
FX_ELEM_TYPE_LAST_SPRITE = 0x3,
FX_ELEM_TYPE_LAST_DRAWN = 0x9,
};
struct infoParm_t
{
char *name;
int clearSolid;
int surfaceFlags;
int contents;
int toolFlags;
};
struct GfxImageFileHeader
{
char tag[3];
char version;
unsigned int flags;
char format;
char unused;
__int16 dimensions[3];
int fileSizeForPicmip[4];
};
enum $1FA877C9772E9F0892A93F52A91453E9
{
MAPTYPE_NONE = 0x0,
MAPTYPE_INVALID1 = 0x1,
MAPTYPE_1D = 0x2,
MAPTYPE_2D = 0x3,
MAPTYPE_3D = 0x4,
MAPTYPE_CUBE = 0x5,
MAPTYPE_COUNT = 0x6,
};
enum GfxImageFileFormat
{
IMG_FORMAT_INVALID = 0x0,
IMG_FORMAT_BITMAP_RGBA = 0x1,
IMG_FORMAT_BITMAP_RGB = 0x2,
IMG_FORMAT_BITMAP_LUMINANCE_ALPHA = 0x3,
IMG_FORMAT_BITMAP_LUMINANCE = 0x4,
IMG_FORMAT_BITMAP_ALPHA = 0x5,
IMG_FORMAT_WAVELET_RGBA = 0x6,
IMG_FORMAT_WAVELET_RGB = 0x7,
IMG_FORMAT_WAVELET_LUMINANCE_ALPHA = 0x8,
IMG_FORMAT_WAVELET_LUMINANCE = 0x9,
IMG_FORMAT_WAVELET_ALPHA = 0xA,
IMG_FORMAT_DXT1 = 0xB,
IMG_FORMAT_DXT3 = 0xC,
IMG_FORMAT_DXT5 = 0xD,
IMG_FORMAT_DXN = 0xE,
IMG_FORMAT_DXT3A_AS_LUMINANCE = 0xF,
IMG_FORMAT_DXT5A_AS_LUMINANCE = 0x10,
IMG_FORMAT_DXT3A_AS_ALPHA = 0x11,
IMG_FORMAT_DXT5A_AS_ALPHA = 0x12,
IMG_FORMAT_DXT1_AS_LUMINANCE_ALPHA = 0x13,
IMG_FORMAT_DXN_AS_LUMINANCE_ALPHA = 0x14,
IMG_FORMAT_DXT1_AS_LUMINANCE = 0x15,
IMG_FORMAT_DXT1_AS_ALPHA = 0x16,
IMG_FORMAT_COUNT = 0x17,
};
enum $25EF9448C800B18F0C83DB367159AFD6
{
PART_TYPE_NO_QUAT = 0x0,
PART_TYPE_HALF_QUAT = 0x1,
PART_TYPE_FULL_QUAT = 0x2,
PART_TYPE_HALF_QUAT_NO_SIZE = 0x3,
PART_TYPE_FULL_QUAT_NO_SIZE = 0x4,
PART_TYPE_SMALL_TRANS = 0x5,
PART_TYPE_TRANS = 0x6,
PART_TYPE_TRANS_NO_SIZE = 0x7,
PART_TYPE_NO_TRANS = 0x8,
PART_TYPE_ALL = 0x9,
PART_TYPE_COUNT = 0xA,
};
enum $EDD38D6A57EF43793B1F773859FC039A
{
FS_SEEK_CUR = 0x0,
FS_SEEK_END = 0x1,
FS_SEEK_SET = 0x2,
};
#pragma region CUSTOM
enum itemTextStyle
{
ITEM_TEXTSTYLE_NORMAL = 0, // normal text
ITEM_TEXTSTYLE_SHADOWED = 3, // drop shadow ( need a color for this )
ITEM_TEXTSTYLE_SHADOWEDMORE = 6, // drop shadow ( need a color for this )
ITEM_TEXTSTYLE_BORDERED = 7, // border (stroke)
ITEM_TEXTSTYLE_BORDEREDMORE = 8, // more border :P
ITEM_TEXTSTYLE_MONOSPACE = 128,
ITEM_TEXTSTYLE_MONOSPACESHADOWED = 132,
};
enum $53C66D4FC2874B6934A17E4ED449BCEB
{
// DB_ZONE_COMMON = 0x1,
// DB_ZONE_UI = 0x2,
// DB_ZONE_GAME = 0x4,
// DB_ZONE_LOAD = 0x8,
// DB_ZONE_DEV = 0x10,
// DB_ZONE_TRANSIENT = 0x20,
DB_ZONE_CODE_LOC = 0x0,
DB_ZONE_COMMON_LOC = 0x1,
DB_ZONE_CODE = 0x2,
DB_ZONE_COMMON = 0x4,
DB_ZONE_GAME = 0x8,
DB_ZONE_MOD = 0x10,
DB_ZONE_LOAD = 0x20,
DB_ZONE_DEV = 0x40
};
enum playerFlag
{
PLAYER_FLAG_NOCLIP = 1 << 0,
PLAYER_FLAG_UFO = 1 << 1,
PLAYER_FLAG_FROZEN = 1 << 2,
};
typedef struct gclient_s
{
unsigned char pad[12764];
unsigned int team;
char pad2[436];
int flags;
char pad3[724];
} gclient_t;
typedef struct gentity_s
{
int number;
unsigned char pad[308]; // 4
float origin[3]; // 312
float angles[3]; // 324
char pad2[8];
gclient_t* client; // 344
unsigned char pad3[28];
short classname;
short pad4;
unsigned char pad5[248];
} gentity_t;
#pragma pack(push, 1)
typedef struct client_s
{
// 0
int state;
// 4
char pad[36];
// 40
netadr_t addr;
// 60
char pad1[1568];
// 1628
char connectInfoString[1024];
// 2652
char pad2[133192];
// 135844
char name[16];
// 135860
char pad3[12];
// 135872
int snapNum;
// 135876
int pad4;
// 135880
short ping;
// 135882
//char pad5[142390];
char pad5[133158];
// 269040
int isBot;
// 269044
char pad6[9228];
// 278272
unsigned __int64 steamid;
// 278280
char pad7[403592];
} client_t;
#pragma pack(pop)
struct CModelAllocData
{
void* mainArray;
void* vertexBuffer;
void* indexBuffer;
};
struct CModelSectionHeader
{
int size;
int offset;
int fixupStart;
int fixupCount;
void* buffer;
};
enum CModelSection
{
SECTION_MAIN = 0,
SECTION_INDEX = 1,
SECTION_VERTEX = 2,
SECTION_FIXUP = 3,
};
struct CModelHeader
{
int version;
unsigned int signature;
CModelSectionHeader sectionHeader[4];
};
typedef struct punctuation_s
{
char *p; //punctuation character(s)
int n; //punctuation indication
struct punctuation_s *next; //next punctuation
} punctuation_t;
#define MAX_TOKEN 1024
#define MAX_TOKENLENGTH 1024
typedef struct token_s
{
char string[MAX_TOKEN]; //available token
int type; //last read token type
int subtype; //last read token sub type
unsigned long int intvalue; //integer value
long double floatvalue; //floating point value
char *whitespace_p; //start of white space before token
char *endwhitespace_p; //start of white space before token
int line; //line the token was on
int linescrossed; //lines crossed in white space
struct token_s *next; //next token in chain
} token_t;
typedef struct script_s
{
char filename[64]; //file name of the script
char *buffer; //buffer containing the script
char *script_p; //current pointer in the script
char *end_p; //pointer to the end of the script
char *lastscript_p; //script pointer before reading token
char *whitespace_p; //begin of the white space
char *endwhitespace_p; //end of the white space
int length; //length of the script in bytes
int line; //current line in script
int lastline; //line before reading token
int tokenavailable; //set by UnreadLastToken
int flags; //several script flags
punctuation_t *punctuations; //the punctuations used in the script
punctuation_t **punctuationtable;
token_t token; //available token
struct script_s *next; //next script in a chain
} script_t;
typedef struct define_s
{
char *name; //define name
int flags; //define flags
int builtin; // > 0 if builtin define
int numparms; //number of define parameters
token_t *parms; //define parameters
token_t *tokens; //macro tokens (possibly containing parm tokens)
struct define_s *next; //next defined macro in a list
struct define_s *hashnext; //next define in the hash chain
} define_t;
typedef struct indent_s
{
int type; //indent type
int skip; //true if skipping current indent
script_t *script; //script the indent was in
struct indent_s *next; //next indent on the indent stack
} indent_t;
typedef struct source_s
{
char filename[64]; //file name of the script
char includepath[64]; //path to include files
punctuation_t *punctuations; //punctuations to use
script_t *scriptstack; //stack with scripts of the source
token_t *tokens; //tokens to read first
define_t *defines; //list with macro definitions
define_t **definehash; //hash chain with defines
indent_t *indentstack; //stack with indents
int skip; // > 0 if skipping conditional code
token_t token; //last read token
} source_t;
typedef struct pc_token_s
{
int type;
int subtype;
int intvalue;
float floatvalue;
char string[MAX_TOKENLENGTH];
} pc_token_t;
typedef struct keywordHash_s
{
char *keyword;
bool(*func)(menuDef_t *item, int handle);
//struct keywordHash_s *next;
} keywordHash_t;
#pragma endregion
2017-04-22 15:47:04 -04:00
#ifndef IDA
2017-01-19 16:23:59 -05:00
}
#endif