XPlor/libs/assets/assets.h
2025-07-10 00:04:52 -04:00

3220 lines
78 KiB
C++

#ifndef ASSETS_H
#define ASSETS_H
#include "model.h"
#include <QDebug>
#include <QObject>
typedef quint32 _DWORD;
enum _D3DRESOURCETYPE : __int32
{
D3DRTYPE_NONE = 0x0,
D3DRTYPE_VERTEXBUFFER = 0x1,
D3DRTYPE_INDEXBUFFER = 0x2,
D3DRTYPE_TEXTURE = 0x3,
D3DRTYPE_SURFACE = 0x4,
D3DRTYPE_VERTEXDECLARATION = 0x5,
D3DRTYPE_VERTEXSHADER = 0x6,
D3DRTYPE_PIXELSHADER = 0x7,
D3DRTYPE_CONSTANTBUFFER = 0x8,
D3DRTYPE_COMMANDBUFFER = 0x9,
D3DRTYPE_VOLUME = 0x10,
D3DRTYPE_VOLUMETEXTURE = 0x11,
D3DRTYPE_CUBETEXTURE = 0x12,
D3DRTYPE_ARRAYTEXTURE = 0x13,
D3DRTYPE_LINETEXTURE = 0x14,
D3DRTYPE_FORCE_DWORD = 0x7FFFFFFF,
};
enum _D3DFORMAT : __int32
{
D3DFMT_DXT1 = 0x1A200152,
D3DFMT_LIN_DXT1 = 0x1A200052,
D3DFMT_DXT2 = 0x1A200153,
D3DFMT_LIN_DXT2 = 0x1A200053,
D3DFMT_DXT3 = 0x1A200153,
D3DFMT_LIN_DXT3 = 0x1A200053,
D3DFMT_DXT3A = 0x1A20017A,
D3DFMT_LIN_DXT3A = 0x1A20007A,
D3DFMT_DXT3A_1111 = 0x1A20017D,
D3DFMT_LIN_DXT3A_1111 = 0x1A20007D,
D3DFMT_DXT4 = 0x1A200154,
D3DFMT_LIN_DXT4 = 0x1A200054,
D3DFMT_DXT5 = 0x1A200154,
D3DFMT_LIN_DXT5 = 0x1A200054,
D3DFMT_DXT5A = 0x1A20017B,
D3DFMT_LIN_DXT5A = 0x1A20007B,
D3DFMT_DXN = 0x1A200171,
D3DFMT_LIN_DXN = 0x1A200071,
D3DFMT_CTX1 = 0x1A20017C,
D3DFMT_LIN_CTX1 = 0x1A20007C,
D3DFMT_A8 = 0x4900102,
D3DFMT_LIN_A8 = 0x4900002,
D3DFMT_L8 = 0x28000102,
D3DFMT_LIN_L8 = 0x28000002,
D3DFMT_R5G6B5 = 0x28280144,
D3DFMT_LIN_R5G6B5 = 0x28280044,
D3DFMT_R6G5B5 = 0x28280145,
D3DFMT_LIN_R6G5B5 = 0x28280045,
D3DFMT_L6V5U5 = 0x2A200B45,
D3DFMT_LIN_L6V5U5 = 0x2A200A45,
D3DFMT_X1R5G5B5 = 0x28280143,
D3DFMT_LIN_X1R5G5B5 = 0x28280043,
D3DFMT_A1R5G5B5 = 0x18280143,
D3DFMT_LIN_A1R5G5B5 = 0x18280043,
D3DFMT_A4R4G4B4 = 0x1828014F,
D3DFMT_LIN_A4R4G4B4 = 0x1828004F,
D3DFMT_X4R4G4B4 = 0x2828014F,
D3DFMT_LIN_X4R4G4B4 = 0x2828004F,
D3DFMT_Q4W4V4U4 = 0x1A20AB4F,
D3DFMT_LIN_Q4W4V4U4 = 0x1A20AA4F,
D3DFMT_A8L8 = 0x800014A,
D3DFMT_LIN_A8L8 = 0x800004A,
D3DFMT_G8R8 = 0x2D20014A,
D3DFMT_LIN_G8R8 = 0x2D20004A,
D3DFMT_V8U8 = 0x2D20AB4A,
D3DFMT_LIN_V8U8 = 0x2D20AA4A,
D3DFMT_D16 = 0x1A220158,
D3DFMT_LIN_D16 = 0x1A220058,
D3DFMT_L16 = 0x28000158,
D3DFMT_LIN_L16 = 0x28000058,
D3DFMT_R16F = 0x2DA2AB5E,
D3DFMT_LIN_R16F = 0x2DA2AA5E,
D3DFMT_R16F_EXPAND = 0x2DA2AB5B,
D3DFMT_LIN_R16F_EXPAND = 0x2DA2AA5B,
D3DFMT_UYVY = 0x1A20014C,
D3DFMT_LIN_UYVY = 0x1A20004C,
D3DFMT_LE_UYVY = 0x1A20010C,
D3DFMT_LE_LIN_UYVY = 0x1A20000C,
D3DFMT_G8R8_G8B8 = 0x1828014C,
D3DFMT_LIN_G8R8_G8B8 = 0x1828004C,
D3DFMT_R8G8_B8G8 = 0x1828014B,
D3DFMT_LIN_R8G8_B8G8 = 0x1828004B,
D3DFMT_YUY2 = 0x1A20014B,
D3DFMT_LIN_YUY2 = 0x1A20004B,
D3DFMT_LE_YUY2 = 0x1A20010B,
D3DFMT_LE_LIN_YUY2 = 0x1A20000B,
D3DFMT_A8R8G8B8 = 0x18280186,
D3DFMT_LIN_A8R8G8B8 = 0x18280086,
D3DFMT_X8R8G8B8 = 0x28280186,
D3DFMT_LIN_X8R8G8B8 = 0x28280086,
D3DFMT_A8B8G8R8 = 0x1A200186,
D3DFMT_LIN_A8B8G8R8 = 0x1A200086,
D3DFMT_X8B8G8R8 = 0x2A200186,
D3DFMT_LIN_X8B8G8R8 = 0x2A200086,
D3DFMT_X8L8V8U8 = 0x2A200B86,
D3DFMT_LIN_X8L8V8U8 = 0x2A200A86,
D3DFMT_Q8W8V8U8 = 0x1A20AB86,
D3DFMT_LIN_Q8W8V8U8 = 0x1A20AA86,
D3DFMT_A2R10G10B10 = 0x182801B6,
D3DFMT_LIN_A2R10G10B10 = 0x182800B6,
D3DFMT_X2R10G10B10 = 0x282801B6,
D3DFMT_LIN_X2R10G10B10 = 0x282800B6,
D3DFMT_A2B10G10R10 = 0x1A2001B6,
D3DFMT_LIN_A2B10G10R10 = 0x1A2000B6,
D3DFMT_A2W10V10U10 = 0x1A202BB6,
D3DFMT_LIN_A2W10V10U10 = 0x1A202AB6,
D3DFMT_A16L16 = 0x8000199,
D3DFMT_LIN_A16L16 = 0x8000099,
D3DFMT_G16R16 = 0x2D200199,
D3DFMT_LIN_G16R16 = 0x2D200099,
D3DFMT_V16U16 = 0x2D20AB99,
D3DFMT_LIN_V16U16 = 0x2D20AA99,
D3DFMT_R10G11B11 = 0x282801B7,
D3DFMT_LIN_R10G11B11 = 0x282800B7,
D3DFMT_R11G11B10 = 0x282801B8,
D3DFMT_LIN_R11G11B10 = 0x282800B8,
D3DFMT_W10V11U11 = 0x2A20ABB7,
D3DFMT_LIN_W10V11U11 = 0x2A20AAB7,
D3DFMT_W11V11U10 = 0x2A20ABB8,
D3DFMT_LIN_W11V11U10 = 0x2A20AAB8,
D3DFMT_G16R16F = 0x2D22AB9F,
D3DFMT_LIN_G16R16F = 0x2D22AA9F,
D3DFMT_G16R16F_EXPAND = 0x2D22AB9C,
D3DFMT_LIN_G16R16F_EXPAND = 0x2D22AA9C,
D3DFMT_L32 = 0x280001A1,
D3DFMT_LIN_L32 = 0x280000A1,
D3DFMT_R32F = 0x2DA2ABA4,
D3DFMT_LIN_R32F = 0x2DA2AAA4,
D3DFMT_D24S8 = 0x2D200196,
D3DFMT_LIN_D24S8 = 0x2D200096,
D3DFMT_D24X8 = 0x2DA00196,
D3DFMT_LIN_D24X8 = 0x2DA00096,
D3DFMT_D24FS8 = 0x1A220197,
D3DFMT_LIN_D24FS8 = 0x1A220097,
D3DFMT_D32 = 0x1A2201A1,
D3DFMT_LIN_D32 = 0x1A2200A1,
D3DFMT_A16B16G16R16 = 0x1A20015A,
D3DFMT_LIN_A16B16G16R16 = 0x1A20005A,
D3DFMT_Q16W16V16U16 = 0x1A20AB5A,
D3DFMT_LIN_Q16W16V16U16 = 0x1A20AA5A,
D3DFMT_A16B16G16R16F = 0x1A22AB60,
D3DFMT_LIN_A16B16G16R16F = 0x1A22AA60,
D3DFMT_A16B16G16R16F_EXPAND = 0x1A22AB5D,
D3DFMT_LIN_A16B16G16R16F_EXPAND = 0x1A22AA5D,
D3DFMT_A32L32 = 0x80001A2,
D3DFMT_LIN_A32L32 = 0x80000A2,
D3DFMT_G32R32 = 0x2D2001A2,
D3DFMT_LIN_G32R32 = 0x2D2000A2,
D3DFMT_V32U32 = 0x2D20ABA2,
D3DFMT_LIN_V32U32 = 0x2D20AAA2,
D3DFMT_G32R32F = 0x2D22ABA5,
D3DFMT_LIN_G32R32F = 0x2D22AAA5,
D3DFMT_A32B32G32R32 = 0x1A2001A3,
D3DFMT_LIN_A32B32G32R32 = 0x1A2000A3,
D3DFMT_Q32W32V32U32 = 0x1A20ABA3,
D3DFMT_LIN_Q32W32V32U32 = 0x1A20AAA3,
D3DFMT_A32B32G32R32F = 0x1A22ABA6,
D3DFMT_LIN_A32B32G32R32F = 0x1A22AAA6,
D3DFMT_A2B10G10R10F_EDRAM = 0x1A2201BF,
D3DFMT_G16R16_EDRAM = 0x2D20AB8D,
D3DFMT_A16B16G16R16_EDRAM = 0x1A20AB55,
D3DFMT_LE_X8R8G8B8 = 0x28280106,
D3DFMT_LE_A8R8G8B8 = 0x18280106,
D3DFMT_LE_X2R10G10B10 = 0x28280136,
D3DFMT_LE_A2R10G10B10 = 0x18280136,
D3DFMT_INDEX16 = 0x1,
D3DFMT_INDEX32 = 0x6,
D3DFMT_LE_INDEX16 = 0x0,
D3DFMT_LE_INDEX32 = 0x4,
D3DFMT_VERTEXDATA = 0x8,
//D3DFMT_UNKNOWN = 0xFFFFFFFF,
D3DFMT_FORCE_DWORD = 0x7FFFFFFF,
};
enum _D3DMULTISAMPLE_TYPE : __int32
{
D3DMULTISAMPLE_NONE = 0x0,
D3DMULTISAMPLE_2_SAMPLES = 0x1,
D3DMULTISAMPLE_4_SAMPLES = 0x2,
D3DMULTISAMPLE_FORCE_DWORD = 0x7FFFFFFF,
};
struct _XGTEXTURE_DESC
{
_D3DRESOURCETYPE ResourceType;
uint Width;
uint Height;
uint Depth;
_D3DFORMAT Format;
uint RowPitch;
uint SlicePitch;
uint BitsPerPixel;
uint WidthInBlocks;
uint HeightInBlocks;
uint DepthInBlocks;
uint BytesPerBlock;
int ExpBias;
uint Flags;
_D3DMULTISAMPLE_TYPE MultiSampleType;
};
struct GfxImageLoadDef;
struct GfxTexture
{
qint32 basemapPtr;
D3DBaseTexture *basemap;
qint32 mapPtr;
D3DTexture *map;
qint32 volmapPtr;
D3DVolumeTexture *volmap;
qint32 cubemapPtr;
D3DCubeTexture *cubemap;
qint32 loadDefPtr;
GfxImageLoadDef *loadDef;
};
struct GfxImageLoadDef
{
quint8 levelCount;
quint8 flags;
qint16 dimensions[3];
int format;
GfxTexture texture;
};
struct CardMemory
{
int platform[1];
};
struct GfxImage
{
MapType mapType;
GfxTexture texture;
quint8 semantic;
CardMemory cardMemory;
quint16 width;
quint16 height;
quint16 depth;
quint8 category;
bool delayLoadPixels;
qint32 pixelsPtr;
QVector<quint8> pixels;
uint baseSize;
quint16 streamSlot;
bool streaming;
qint32 namePtr;
QString name;
};
union MaterialPixelShaderProgram
{
qint32 psPtr;
D3DPixelShader ps;
GfxPixelShaderLoadDef loadDef;
};
struct stream_source_info_t
{
quint16 Stream;
quint16 Offset;
uint Type;
};
struct __declspec(align(4)) XMALOOPREGION
{
uint LoopStart;
uint LoopEnd;
quint8 LoopSubframeEnd;
quint8 LoopSubframeSkip;
};
struct XAUDIOPACKET_ALIGNED
{
qint32 pBufferPtr;
QVector<char> pBuffer;
uint BufferSize;
uint LoopCount;
XMALOOPREGION XMALoop[6];
qint32 pContextPtr;
char pContext;
};
struct __declspec(align(4)) XAUDIOXMAFORMAT
{
uint SampleRate;
quint8 ChannelCount;
quint8 DecodeBufferSize;
};
union $A914CD29B804E77ACE08D070A31DB5AB
{
quint8 NumStreams;
quint8 ChannelCount;
};
union $9C5A25260C9CC66355FE8A35CC8403E0
{
XAUDIOXMAFORMAT Stream[6];
uint SampleRate;
};
struct XAUDIOSOURCEFORMAT
{
quint8 SampleType;
__declspec(align(4)) $A914CD29B804E77ACE08D070A31DB5AB ___u1;
$9C5A25260C9CC66355FE8A35CC8403E0 ___u2;
};
struct XaIwXmaDataInfo
{
int totalMsec;
};
struct XaSeekTable
{
int size;
qint32 dataPtr;
QVector<uint> data;
};
struct XaSound
{
XAUDIOPACKET_ALIGNED packet;
XAUDIOSOURCEFORMAT format;
XaIwXmaDataInfo xaIwXmaDataInfo;
XaSeekTable seekTable;
};
struct LoadedSound
{
const char *name;
XaSound sound;
};
struct StreamFileNameRaw
{
qint32 dirPtr;
QString dir;
qint32 namePtr;
QString name;
};
struct StreamFileNamePacked
{
uint offset;
uint length;
};
union StreamFileInfo
{
StreamFileNameRaw raw;
StreamFileNamePacked packed;
};
struct StreamFileName
{
uint fileIndex;
StreamFileInfo info;
};
struct StreamedSound
{
StreamFileName filename;
};
union SoundFileRef
{
LoadedSound *loadSnd;
StreamedSound streamSnd;
};
struct SoundFile
{
quint8 type;
quint8 exists;
SoundFileRef u;
};
struct SndCurve
{
qint32 filenamePtr;
QString filename;
int knotCount;
float knots[8][2];
};
struct XAUDIOCHANNELMAPENTRY
{
quint8 InputChannel;
quint8 OutputChannel;
float Volume;
};
struct XAUDIOCHANNELMAP
{
quint8 EntryCount;
qint32 paEntriesPtr;
QVector<XAUDIOCHANNELMAPENTRY> paEntries;
};
struct SpeakerMap
{
bool isDefault;
const char *name;
XAUDIOCHANNELMAP channelMaps[2][2];
};
struct snd_alias_t
{
const char *aliasName;
const char *subtitle;
const char *secondaryAliasName;
const char *chainAliasName;
SoundFile *soundFile;
int sequence;
float volMin;
float volMax;
float pitchMin;
float pitchMax;
float distMin;
float distMax;
int flags;
float slavePercentage;
float probability;
float lfePercentage;
float centerPercentage;
int startDelay;
SndCurve *volumeFalloffCurve;
float envelopMin;
float envelopMax;
float envelopPercentage;
SpeakerMap *speakerMap;
};
struct SoundAliasList
{
const char *aliasName;
snd_alias_t *head;
int count;
};
enum XAssetType : __int32
{
ASSET_TYPE_XMODELPIECES = 0x0,
ASSET_TYPE_PHYSPRESET = 0x1,
ASSET_TYPE_XANIMPARTS = 0x2,
ASSET_TYPE_XMODEL = 0x3,
ASSET_TYPE_MATERIAL = 0x4,
ASSET_TYPE_PIXELSHADER = 0x5,
ASSET_TYPE_TECHNIQUE_SET = 0x6,
ASSET_TYPE_IMAGE = 0x7,
ASSET_TYPE_SOUND = 0x8,
ASSET_TYPE_SOUND_CURVE = 0x9,
ASSET_TYPE_LOADED_SOUND = 0xA,
ASSET_TYPE_CLIPMAP = 0xB,
ASSET_TYPE_CLIPMAP_PVS = 0xC,
ASSET_TYPE_COMWORLD = 0xD,
ASSET_TYPE_GAMEWORLD_SP = 0xE,
ASSET_TYPE_GAMEWORLD_MP = 0xF,
ASSET_TYPE_MAP_ENTS = 0x10,
ASSET_TYPE_GFXWORLD = 0x11,
ASSET_TYPE_LIGHT_DEF = 0x12,
ASSET_TYPE_UI_MAP = 0x13,
ASSET_TYPE_FONT = 0x14,
ASSET_TYPE_MENULIST = 0x15,
ASSET_TYPE_MENU = 0x16,
ASSET_TYPE_LOCALIZE_ENTRY = 0x17,
ASSET_TYPE_WEAPON = 0x18,
ASSET_TYPE_SNDDRIVER_GLOBALS = 0x19,
ASSET_TYPE_FX = 0x1A,
ASSET_TYPE_IMPACT_FX = 0x1B,
ASSET_TYPE_AITYPE = 0x1C,
ASSET_TYPE_MPTYPE = 0x1D,
ASSET_TYPE_CHARACTER = 0x1E,
ASSET_TYPE_XMODELALIAS = 0x1F,
ASSET_TYPE_RAWFILE = 0x20,
ASSET_TYPE_STRINGTABLE = 0x21,
ASSET_TYPE_COUNT = 0x22,
ASSET_TYPE_STRING = 0x22,
ASSET_TYPE_ASSETLIST = 0x23,
};
union GfxDrawSurf
{
GfxDrawSurfFields fields;
unsigned __int64 packed;
};
struct MaterialTechniqueSet
{
const char *name;
quint8 worldVertFormat;
quint8 unused[2];
MaterialTechniqueSet *remappedTechniqueSet;
MaterialTechnique *techniques[26];
};
struct XModel
{
const char *name;
quint8 numBones;
quint8 numRootBones;
quint8 numsurfs;
quint8 lodRampType;
quint16 *boneNames;
quint8 *parentList;
qint16 *quats;
float *trans;
quint8 *partClassification;
DObjAnimMat *baseMat;
XSurface *surfs;
Material **materialHandles;
XModelLodInfo lodInfo[4];
XModelCollSurf *collSurfs;
int numCollSurfs;
int contents;
XBoneInfo *boneInfo;
float radius;
float mins[3];
float maxs[3];
qint16 numLods;
qint16 collLod;
XModelStreamInfo streamInfo;
int memUsage;
quint8 flags;
PhysPreset *physPreset;
PhysGeomList *physGeoms;
};
struct XModelPiece
{
XModel *model;
float offset[3];
};
struct XModelPieces
{
const char *name;
int numpieces;
XModelPiece *pieces;
};
union XAnimIndices
{
quint8 *_1;
quint16 *_2;
void *data;
};
struct XAnimNotifyInfo
{
quint16 name;
float time;
};
union XAnimDynamicFrames
{
quint8 (*_1)[3];
quint16 (*_2)[3];
};
union XAnimDynamicIndices
{
quint8 _1[1];
quint16 _2[1];
};
struct XAnimPartTransFrames
{
float mins[3];
float size[3];
XAnimDynamicFrames frames;
XAnimDynamicIndices indices;
};
union XAnimPartTransData
{
XAnimPartTransFrames frames;
float frame0[3];
};
struct XAnimPartTrans
{
quint16 size;
quint8 smallTrans;
XAnimPartTransData u;
};
struct __declspec(align(4)) XAnimDeltaPartQuatDataFrames
{
qint16 (*frames)[2];
XAnimDynamicIndices indices;
};
union XAnimDeltaPartQuatData
{
XAnimDeltaPartQuatDataFrames frames;
qint16 frame0[2];
};
struct XAnimDeltaPartQuat
{
quint16 size;
XAnimDeltaPartQuatData u;
};
struct XAnimDeltaPart
{
XAnimPartTrans *trans;
XAnimDeltaPartQuat *quat;
};
struct XAnimParts
{
const char *name;
quint16 dataByteCount;
quint16 dataShortCount;
quint16 dataIntCount;
quint16 randomDataByteCount;
quint16 randomDataIntCount;
quint16 numframes;
bool bLoop;
bool bDelta;
quint8 boneCount[12];
quint8 notifyCount;
quint8 assetType;
bool pad;
uint randomDataShortCount;
uint indexCount;
float framerate;
float frequency;
quint16 *names;
quint8 *dataByte;
qint16 *dataShort;
int *dataInt;
qint16 *randomDataShort;
quint8 *randomDataByte;
int *randomDataInt;
XAnimIndices indices;
XAnimNotifyInfo *notify;
XAnimDeltaPart *deltaPart;
};
struct cStaticModelWritable
{
quint16 nextModelInWorldSector;
};
struct cStaticModel_s
{
cStaticModelWritable writable;
XModel *xmodel;
float origin[3];
float invScaledAxis[3][3];
float absmin[3];
float absmax[3];
};
struct dmaterial_t
{
char material[64];
int surfaceFlags;
int contentFlags;
};
struct cNode_t
{
qint32 planePtr;
CPlane plane;
qint16 children[2];
};
struct __declspec(align(4)) CLeaf
{
quint16 firstCollAabbIndex;
quint16 collAabbCount;
int brushContents;
int terrainContents;
float mins[3];
float maxs[3];
int leafBrushNode;
qint16 cluster;
};
struct CLeafBrushNodeLeaf;
struct CLeafBrushNodeChildren;
struct CLeafBrushNodeData
{
// Make these not ptrs
CLeafBrushNodeLeaf *leaf;
CLeafBrushNodeChildren *children;
};
struct CLeafBrushNodeLeaf : CLeafBrushNodeData
{
qint32 brushesPtr;
QVector<quint16> brushes;
};
struct CLeafBrushNodeChildren : CLeafBrushNodeData
{
float dist;
float range;
quint16 childOffset[2];
};
struct CLeafBrushNode
{
quint8 axis;
qint16 leafBrushCount;
int contents;
CLeafBrushNodeData data;
};
struct CollisionBorder
{
float distEq[3];
float zBase;
float zSlope;
float start;
float length;
};
struct CollisionPartition
{
quint8 triCount;
quint8 borderCount;
int firstTri;
qint32 bordersPtr;
CollisionBorder borders;
};
union CollisionAabbTreeIndex
{
int firstChildIndex;
int partitionIndex;
};
struct CollisionAabbTree
{
float origin[3];
float halfSize[3];
quint16 materialIndex;
quint16 childCount;
CollisionAabbTreeIndex u;
};
struct CModel
{
float mins[3];
float maxs[3];
float radius;
CLeaf leaf;
};
struct CBrush
{
float mins[3];
int contents;
float maxs[3];
uint numsides;
qint32 sidesPtr;
QVector<CBrushSide> sides;
qint16 axialMaterialNum[2][3];
qint32 baseAdjacentSidePtr;
quint8 baseAdjacentSide;
qint16 firstAdjacentSideOffsets[2][3];
quint8 edgeCount[2][3];
};
struct MapEnts
{
qint32 namePtr;
QString name;
qint32 entityStringPtr;
QString entityString;
int numEntityChars;
};
enum DynEntityType : __int32
{
DYNENT_TYPE_INVALID = 0x0,
DYNENT_TYPE_CLUTTER = 0x1,
DYNENT_TYPE_DESTRUCT = 0x2,
DYNENT_TYPE_COUNT = 0x3,
};
struct GfxPlacement
{
float quat[4];
float origin[3];
};
struct FxSpawnDefLooping
{
int intervalMsec;
int count;
};
struct FxIntRange
{
int base;
int amplitude;
};
struct FxSpawnDefOneShot
{
FxIntRange count;
};
union FxSpawnDef
{
FxSpawnDefLooping looping;
FxSpawnDefOneShot oneShot;
};
struct FxFloatRange
{
float base;
float amplitude;
};
struct FxElemAtlas
{
quint8 behavior;
quint8 index;
quint8 fps;
quint8 loopCount;
quint8 colIndexBits;
quint8 rowIndexBits;
qint16 entryCount;
};
struct FxElemVec3Range
{
float base[3];
float amplitude[3];
};
struct FxElemVelStateInFrame
{
FxElemVec3Range velocity;
FxElemVec3Range totalDelta;
};
struct FxElemVelStateSample
{
FxElemVelStateInFrame local;
FxElemVelStateInFrame world;
};
struct FxElemVisualState
{
quint8 color[4];
float rotationDelta;
float rotationTotal;
float size[2];
float scale;
};
struct FxElemVisStateSample
{
FxElemVisualState base;
FxElemVisualState amplitude;
};
struct FxElemMarkVisuals
{
Material *materials[2];
};
struct FxEffectDef;
union FxEffectDefRef
{
qint32 namePtr;
};
union FxElemVisuals
{
const void *anonymous;
Material *material;
XModel *model;
FxEffectDefRef effectDef;
const char *soundName;
};
union FxElemDefVisuals
{
FxElemMarkVisuals *markArray;
FxElemVisuals *array;
FxElemVisuals instance;
};
struct FxTrailVertex
{
float pos[2];
float normal[2];
float texCoord;
};
struct FxTrailDef
{
int scrollTimeMsec;
int repeatDist;
int splitDist;
int vertCount;
qint32 vertsPtr;
QVector<FxTrailVertex> verts;
int indCount;
qint32 indsPtr;
QVector<quint16> inds;
};
struct FxElemDef
{
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;
quint8 elemType;
quint8 visualCount;
quint8 velIntervalCount;
quint8 visStateIntervalCount;
const FxElemVelStateSample *velSamples;
const FxElemVisStateSample *visSamples;
FxElemDefVisuals visuals;
float collMins[3];
float collMaxs[3];
FxEffectDefRef effectOnImpact;
FxEffectDefRef effectOnDeath;
FxEffectDefRef effectEmitted;
FxFloatRange emitDist;
FxFloatRange emitDistVariance;
FxTrailDef *trailDef;
quint8 sortOrder;
quint8 lightingFrac;
quint8 useItemClip;
quint8 unused[1];
};
struct FxEffectDef
{
qint32 namePtr;
QString name;
int flags;
int totalSize;
int msecLoopingLife;
int elemDefCountLooping;
int elemDefCountOneShot;
int elemDefCountEmission;
qint32 elemDefsPtr;
QVector<FxElemDef> elemDefs;
};
struct DynEntityDef
{
DynEntityType type;
GfxPlacement pose;
qint32 xModelPtr;
XModel xModel;
quint16 brushModel;
quint16 physicsBrushModel;
qint32 destroyFxPtr;
FxEffectDef destroyFx;
qint32 destroyPiecesPtr;
XModelPieces destroyPieces;
qint32 physPresetPtr;
PhysPreset physPreset;
int health;
PhysMass mass;
int contents;
};
struct DynEntityPose
{
GfxPlacement pose;
float radius;
};
struct DynEntityClient
{
int physObjId;
quint16 flags;
quint16 lightingHandle;
int health;
};
struct DynEntityColl
{
quint16 sector;
quint16 nextEntInSector;
float linkMins[2];
float linkMaxs[2];
};
struct clipMap_t
{
qint32 namePtr;
QString name;
int isInUse;
int planeCount;
qint32 planesPtr;
QVector<CPlane> planes;
uint numStaticModels;
qint32 staticModelListPtr;
QVector<cStaticModel_s> staticModelList;
uint numMaterials;
qint32 materialsPtr;
QVector<dmaterial_t> materials;
uint numBrushSides;
qint32 brushsidesPtr;
QVector<CBrushSide> brushsides;
uint numBrushEdges;
qint32 brushEdgesPtr;
QVector<quint8> brushEdges;
uint numNodes;
qint32 nodesPtr;
QVector<cNode_t> nodes;
uint numLeafs;
qint32 leafsPtr;
QVector<CLeaf> leafs;
uint leafbrushNodesCount;
qint32 leafbrushNodesPtr;
QVector<CLeafBrushNode> leafbrushNodes;
uint numLeafBrushes;
qint32 leafbrushesPtr;
QVector<quint16> leafbrushes;
uint numLeafSurfaces;
qint32 leafsurfacesPtr;
QVector<uint> leafsurfaces;
uint vertCount;
float (*verts)[3];
int triCount;
qint32 triIndicesPtr;
QVector<quint16> triIndices;
qint32 triEdgeIsWalkablePtr;
QVector<quint8> triEdgeIsWalkable;
int borderCount;
qint32 bordersPtr;
QVector<CollisionBorder> borders;
int partitionCount;
qint32 partitionsPtr;
QVector<CollisionPartition> partitions;
int aabbTreeCount;
qint32 aabbTreesPtr;
QVector<CollisionAabbTree> aabbTrees;
uint numSubModels;
qint32 cmodelsPtr;
QVector<CModel> cmodels;
quint16 numBrushes;
qint32 brushesPtr;
QVector<CBrush> brushes;
int numClusters;
int clusterBytes;
qint32 visibilityPtr;
QVector<quint8> visibility;
int vised;
QVector<MapEnts> mapEnts;
CBrush *box_brush;
CModel box_model;
quint16 dynEntCount[2];
DynEntityDef *dynEntDefList[2];
DynEntityPose *dynEntPoseList[2];
DynEntityClient *dynEntClientList[2];
DynEntityColl *dynEntCollList[2];
uint checksum;
};
struct ComPrimaryLight
{
quint8 type;
quint8 canUseShadowMap;
quint8 exponent;
quint8 unused;
float color[3];
float dir[3];
float origin[3];
float radius;
float cosHalfFovOuter;
float cosHalfFovInner;
float cosHalfFovExpanded;
float rotationLimit;
float translationLimit;
qint32 defNamePtr;
QString defName;
};
struct ComWorld
{
qint32 namePtr;
QString name;
int isInUse;
uint primaryLightCount;
qint32 primaryLightsPtr;
QVector<ComPrimaryLight> primaryLights;
};
enum nodeType : qint32
{
NODE_BADNODE = 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_COVER_WIDE_RIGHT = 0x8,
NODE_COVER_WIDE_LEFT = 0x9,
NODE_CONCEALMENT_STAND = 0xA,
NODE_CONCEALMENT_CROUCH = 0xB,
NODE_CONCEALMENT_PRONE = 0xC,
NODE_REACQUIRE = 0xD,
NODE_BALCONY = 0xE,
NODE_SCRIPTED = 0xF,
NODE_NEGOTIATION_BEGIN = 0x10,
NODE_NEGOTIATION_END = 0x11,
NODE_TURRET = 0x12,
NODE_GUARD = 0x13,
NODE_NUMTYPES = 0x14,
NODE_DONTLINK = 0x14,
};
struct PathLink
{
float fDist;
quint16 nodeNum;
quint8 disconnectCount;
quint8 negotiationLink;
quint8 ubBadPlaceCount[4];
};
struct PathNodeConstant
{
nodeType type;
quint16 spawnflags;
quint16 targetname;
quint16 script_linkName;
quint16 script_noteworthy;
quint16 target;
quint16 animscript;
int animscriptfunc;
float vOrigin[3];
float fAngle;
float forward[2];
float fRadius;
float minUseDistSq;
qint16 wOverlapNode[2];
qint16 wChainId;
qint16 wChainDepth;
qint16 wChainParent;
quint16 totalLinkCount;
qint32 LinksPtr;
PathLink Links;
};
struct pathnode_dynamic_t
{
void *pOwner;
int iFreeTime;
int iValidTime[3];
int inPlayerLOSTime;
qint16 wLinkCount;
qint16 wOverlapCount;
qint16 turretEntNumber;
qint16 userCount;
};
struct pathnode_t;
struct pathnode_transient_t
{
int iSearchFrame;
pathnode_t *pNextOpen;
pathnode_t *pPrevOpen;
pathnode_t *pParent;
float fCost;
float fHeuristic;
float costFactor;
};
struct pathnode_t
{
PathNodeConstant constant;
pathnode_dynamic_t dynamic;
pathnode_transient_t transient;
};
struct PathBaseNode
{
float vOrigin[3];
uint type;
};
struct PathNodeTree;
struct PathNodeTreeNodes
{
int nodeCount;
QVector<quint16> nodes;
};
union PathNodeTreeInfo
{
PathNodeTree *child[2];
PathNodeTreeNodes s;
};
struct PathNodeTree
{
int axis;
float dist;
qint32 infoPtr;
PathNodeTreeInfo info;
};
struct PathData
{
uint nodeCount;
pathnode_t *nodes;
PathBaseNode *basenodes;
uint chainNodeCount;
quint16 *chainNodeForNode;
quint16 *nodeForChainNode;
int visBytes;
quint8 *pathVis;
int nodeTreeCount;
PathNodeTree *nodeTree;
};
struct GameWorldSp
{
const char *name;
PathData path;
};
struct GameWorldMp
{
qint32 namePtr;
QString name;
};
struct GfxStreamingAabbTree
{
quint16 firstItem;
quint16 itemCount;
quint16 firstChild;
quint16 childCount;
float mins[3];
float maxs[3];
};
struct GfxWorldStreamInfo
{
int aabbTreeCount;
qint32 aabbTreesPtr;
QVector<GfxStreamingAabbTree> aabbTrees;
int leafRefCount;
qint32 leafRefsPtr;
QVector<int> leafRefs;
};
struct GfxWorldVertex
{
float xyz[3];
float binormalSign;
GfxColor color;
float texCoord[2];
float lmapCoord[2];
PackedUnitVec normal;
PackedUnitVec tangent;
};
struct GfxWorldVertexData
{
qint32 verticesPtr;
QVector<GfxWorldVertex> vertices;
D3DVertexBuffer worldVb;
};
struct GfxWorldVertexLayerData
{
qint32 dataPtr;
QVector<quint8> data;
D3DVertexBuffer layerVb;
};
struct SunLightParseParams
{
char name[64];
float ambientScale;
float ambientColor[3];
float diffuseFraction;
float sunLight;
float sunColor[3];
float diffuseColor[3];
bool diffuseColorHasBeenSet;
float angles[3];
};
struct __declspec(align(4)) GfxLightImage
{
GfxImage *image;
quint8 samplerState;
};
struct GfxLightDef
{
const char *name;
GfxLightImage attenuation;
int lmapLookupStart;
};
struct GfxLight
{
quint8 type;
quint8 canUseShadowMap;
quint8 unused[2];
float color[3];
float dir[3];
float origin[3];
float radius;
float cosHalfFovOuter;
float cosHalfFovInner;
int exponent;
uint spotShadowIndex;
GfxLightDef *def;
};
struct GfxReflectionProbe
{
float origin[3];
GfxImage *reflectionImage;
};
struct GfxWorldDpvsPlanes
{
int cellCount;
qint32 planesPtr;
QVector<CPlane> planes;
qint32 nodesPtr;
QVector<quint16> nodes;
qint32 sceneEntCellBitsPtr;
QVector<uint> sceneEntCellBits;
};
struct GfxAabbTree
{
float mins[3];
float maxs[3];
quint16 childCount;
quint16 surfaceCount;
quint16 startSurfIndex;
quint16 smodelIndexCount;
qint32 smodelIndexesPtr;
QVector<quint16> smodelIndexes;
int childrenOffset;
};
struct GfxPortal;
struct GfxPortalWritable
{
bool isQueued;
bool isAncestor;
quint8 recursionDepth;
quint8 hullPointCount;
quint32 hullPointPtrs[2];
float hullPoints[2];
qint32 queuedParentPtr;
GfxPortal *queuedParent;
};
struct DpvsPlane
{
float coeffs[4];
quint8 side[3];
quint8 pad;
};
struct GfxCell;
struct GfxPortal
{
GfxPortalWritable writable;
DpvsPlane plane;
qint32 cellPtr;
GfxCell *cell;
qint32 verticesPtr;
float vertices[3];
quint8 vertexCount;
float hullAxis[2][3];
};
struct GfxCell
{
float mins[3];
float maxs[3];
int aabbTreeCount;
qint32 aabbTreePtr;
QVector<GfxAabbTree> aabbTree;
int portalCount;
qint32 portalsPtr;
QVector<GfxPortal> portals;
int cullGroupCount;
qint32 cullGroupsPtr;
QVector<int> cullGroups;
quint8 reflectionProbeCount;
qint32 reflectionProbesPtr;
QVector<quint8> reflectionProbes;
};
struct GfxLightmapArray
{
GfxImage *primary;
GfxImage *secondary;
};
struct GfxLightGridEntry
{
quint16 colorsIndex;
quint8 primaryLightIndex;
quint8 needsTrace;
};
struct GfxLightGridColors
{
quint8 rgb[56][3];
};
struct GfxLightGrid
{
bool hasLightRegions;
uint sunPrimaryLightIndex;
quint16 mins[3];
quint16 maxs[3];
uint rowAxis;
uint colAxis;
qint32 rowDataStartPtr;
QVector<quint16> rowDataStart;
uint rawRowDataSize;
qint32 rawRowDataPtr;
QVector<quint8> rawRowData;
uint entryCount;
qint32 entriesPtr;
QVector<GfxLightGridEntry> entries;
uint colorCount;
qint32 colorsPtr;
QVector<GfxLightGridColors> colors;
};
struct GfxBrushModelWritable
{
float mins[3];
float maxs[3];
};
struct GfxBrushModel
{
GfxBrushModelWritable writable;
float bounds[2][3];
uint surfaceCount;
uint startSurfIndex;
};
struct MaterialMemory
{
Material *material;
int memory;
};
struct sunflare_t
{
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];
};
struct XModelDrawInfo
{
quint16 lod;
quint16 surfId;
};
struct GfxSceneDynModel
{
XModelDrawInfo info;
quint16 dynEntId;
};
struct BModelDrawInfo
{
quint16 surfId;
};
struct GfxSceneDynBrush
{
BModelDrawInfo info;
quint16 dynEntId;
};
struct GfxShadowGeometry
{
quint16 surfaceCount;
quint16 smodelCount;
qint32 sortedSurfIndexPtr;
QVector<quint16> sortedSurfIndex;
qint32 smodelIndexPtr;
QVector<quint16> smodelIndex;
};
struct GfxLightRegionAxis
{
float dir[3];
float midPoint;
float halfSize;
};
struct GfxLightRegionHull
{
float kdopMidPoint[9];
float kdopHalfSize[9];
uint axisCount;
qint32 axisPtr;
QVector<GfxLightRegionAxis> axis;
};
struct GfxLightRegion
{
uint hullCount;
qint32 hullsPtr;
QVector<GfxLightRegionHull> hulls;
};
struct GfxStaticModelInst
{
float mins[3];
float maxs[3];
GfxColor groundLighting;
};
struct srfTriangles_t
{
int vertexLayerData;
int firstVertex;
quint16 vertexCount;
quint16 triCount;
int baseIndex;
float topMipMins[3];
float topMipMaxs[3];
};
struct GfxSurface
{
srfTriangles_t tris;
Material *material;
quint8 lightmapIndex;
quint8 reflectionProbeIndex;
quint8 primaryLightIndex;
bool castsSunShadow;
float bounds[2][3];
};
struct GfxCullGroup
{
float mins[3];
float maxs[3];
int surfaceCount;
int startSurfIndex;
};
struct GfxPackedPlacement
{
float origin[3];
PackedUnitVec axis[3];
float scale;
};
struct __declspec(align(4)) GfxStaticModelDrawInst
{
float cullDist;
GfxPackedPlacement placement;
XModel *model;
quint8 reflectionProbeIndex;
quint8 primaryLightIndex;
quint16 lightingHandle;
quint8 flags;
};
struct GfxWorldDpvsStatic
{
uint smodelCount;
uint staticSurfaceCount;
uint litSurfsBegin;
uint litSurfsEnd;
uint decalSurfsBegin;
uint decalSurfsEnd;
uint emissiveSurfsBegin;
uint emissiveSurfsEnd;
uint smodelVisDataCount;
uint surfaceVisDataCount;
quint8 *smodelVisData[3];
quint8 *surfaceVisData[3];
uint *lodData;
quint16 *sortedSurfIndex;
GfxStaticModelInst *smodelInsts;
GfxSurface *surfaces;
GfxCullGroup *cullGroups;
GfxStaticModelDrawInst *smodelDrawInsts;
GfxDrawSurfFields *surfaceMaterials;
uint *surfaceCastsSunShadow;
volatile int usageCount;
};
struct GfxWorldDpvsDynamic
{
uint dynEntClientWordCount[2];
uint dynEntClientCount[2];
qint32 dynEntCellBitsPtrs[2];
uint dynEntCellBits[2];
qint32 dynEntVisDataPtrs[2][3];
quint8 dynEntVisData[2][3];
};
struct GfxWorld
{
const char *name;
const char *baseName;
int planeCount;
int nodeCount;
int indexCount;
quint16 *indices;
D3DIndexBuffer indexBuffer;
int surfaceCount;
GfxWorldStreamInfo streamInfo;
int skySurfCount;
int *skyStartSurfs;
GfxImage *skyImage;
quint8 skySamplerState;
uint vertexCount;
GfxWorldVertexData vd;
uint vertexLayerDataSize;
GfxWorldVertexLayerData vld;
SunLightParseParams sunParse;
GfxLight *sunLight;
float sunColorFromBsp[3];
uint sunPrimaryLightIndex;
uint primaryLightCount;
int cullGroupCount;
uint reflectionProbeCount;
GfxReflectionProbe *reflectionProbes;
GfxTexture *reflectionProbeTextures;
GfxWorldDpvsPlanes dpvsPlanes;
int cellBitsCount;
GfxCell *cells;
int lightmapCount;
GfxLightmapArray *lightmaps;
GfxLightGrid lightGrid;
GfxTexture *lightmapPrimaryTextures;
GfxTexture *lightmapSecondaryTextures;
int modelCount;
GfxBrushModel *models;
float mins[3];
float maxs[3];
uint checksum;
int materialMemoryCount;
MaterialMemory *materialMemory;
sunflare_t sun;
float outdoorLookupMatrix[4][4];
GfxImage *outdoorImage;
uint *cellCasterBits;
GfxSceneDynModel *sceneDynModel;
GfxSceneDynBrush *sceneDynBrush;
uint *primaryLightEntityShadowVis;
uint *primaryLightDynEntShadowVis[2];
quint8 *nonSunPrimaryLightForModelDynEnt;
GfxShadowGeometry *shadowGeom;
GfxLightRegion *lightRegion;
GfxWorldDpvsStatic dpvs;
GfxWorldDpvsDynamic dpvsDyn;
};
struct Glyph
{
quint16 letter;
char x0;
char y0;
quint8 dx;
quint8 pixelWidth;
quint8 pixelHeight;
float s0;
float t0;
float s1;
float t1;
};
struct Font_s
{
const char *fontName;
int pixelHeight;
int glyphCount;
Material *material;
Material *glowMaterial;
Glyph *glyphs;
};
struct rectDef_s
{
float x;
float y;
float w;
float h;
int horzAlign;
int vertAlign;
};
struct windowDef_t
{
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[4];
int nextTime;
float foreColor[4];
float backColor[4];
float borderColor[4];
float outlineColor[4];
Material *background;
};
struct ItemKeyHandler
{
int key;
qint32 actionPtr;
QString action;
qint32 nextPtr;
ItemKeyHandler *next;
};
enum OperationEnum : qint32
{
OP_NOOP = 0x0,
OP_RIGHTPAREN = 0x1,
OP_MULTIPLY = 0x2,
OP_DIVIDE = 0x3,
OP_MODULUS = 0x4,
OP_ADD = 0x5,
OP_SUBTRACT = 0x6,
OP_NOT = 0x7,
OP_LESSTHAN = 0x8,
OP_LESSTHANEQUALTO = 0x9,
OP_GREATERTHAN = 0xA,
OP_GREATERTHANEQUALTO = 0xB,
OP_EQUALS = 0xC,
OP_NOTEQUAL = 0xD,
OP_AND = 0xE,
OP_OR = 0xF,
OP_LEFTPAREN = 0x10,
OP_COMMA = 0x11,
OP_BITWISEAND = 0x12,
OP_BITWISEOR = 0x13,
OP_BITWISENOT = 0x14,
OP_BITSHIFTLEFT = 0x15,
OP_BITSHIFTRIGHT = 0x16,
OP_SIN = 0x17,
OP_FIRSTFUNCTIONCALL = 0x17,
OP_COS = 0x18,
OP_MIN = 0x19,
OP_MAX = 0x1A,
OP_MILLISECONDS = 0x1B,
OP_DVARINT = 0x1C,
OP_DVARBOOL = 0x1D,
OP_DVARFLOAT = 0x1E,
OP_DVARSTRING = 0x1F,
OP_STAT = 0x20,
OP_UIACTIVE = 0x21,
OP_FLASHBANGED = 0x22,
OP_SCOPED = 0x23,
OP_SCOREBOARDVISIBLE = 0x24,
OP_INKILLCAM = 0x25,
OP_PLAYERFIELD = 0x26,
OP_SELECTINGLOCATION = 0x27,
OP_TEAMFIELD = 0x28,
OP_OTHERTEAMFIELD = 0x29,
OP_MARINESFIELD = 0x2A,
OP_OPFORFIELD = 0x2B,
OP_MENUISOPEN = 0x2C,
OP_WRITINGDATA = 0x2D,
OP_INLOBBY = 0x2E,
OP_INPRIVATEPARTY = 0x2F,
OP_PRIVATEPARTYHOST = 0x30,
OP_PRIVATEPARTYHOSTINLOBBY = 0x31,
OP_ALONEINPARTY = 0x32,
OP_ADSJAVELIN = 0x33,
OP_WEAPLOCKBLINK = 0x34,
OP_WEAPATTACKTOP = 0x35,
OP_WEAPATTACKDIRECT = 0x36,
OP_SECONDSASTIME = 0x37,
OP_TABLELOOKUP = 0x38,
OP_LOCALIZESTRING = 0x39,
OP_LOCALVARINT = 0x3A,
OP_LOCALVARBOOL = 0x3B,
OP_LOCALVARFLOAT = 0x3C,
OP_LOCALVARSTRING = 0x3D,
OP_TIMELEFT = 0x3E,
OP_SECONDSASCOUNTDOWN = 0x3F,
OP_GAMEMSGWNDACTIVE = 0x40,
OP_TOINT = 0x41,
OP_TOSTRING = 0x42,
OP_TOFLOAT = 0x43,
OP_GAMETYPENAME = 0x44,
OP_GAMETYPE = 0x45,
OP_GAMETYPEDESCRIPTION = 0x46,
OP_SCORE = 0x47,
OP_FRIENDSONLINE = 0x48,
OP_FOLLOWING = 0x49,
OP_STATRANGEBITSSET = 0x4A,
OP_KEYBINDING = 0x4B,
OP_ACTIONSLOTUSABLE = 0x4C,
OP_HUDFADE = 0x4D,
OP_MAXPLAYERS = 0x4E,
OP_ACCEPTINGINVITE = 0x4F,
NUM_OPERATORS = 0x50,
};
enum expDataType : __int32
{
VAL_INT = 0x0,
VAL_FLOAT = 0x1,
VAL_STRING = 0x2,
};
struct Operand
{
expDataType dataType;
int intVal;
float floatVal;
QString stringVal;
};
union entryInternalData
{
OperationEnum op;
Operand operand;
};
struct expressionEntry
{
int type;
entryInternalData data;
};
struct statement_s
{
int numEntries;
expressionEntry **entries;
};
struct ItemDef;
struct menuDef_t
{
windowDef_t window;
const char *font;
int fullScreen;
int itemCount;
int fontIndex;
int cursorItem[4];
int fadeCycle;
float fadeClamp;
float fadeAmount;
float fadeInAmount;
float blurRadius;
const char *onOpen;
const char *onClose;
const char *onESC;
ItemKeyHandler *onKey;
statement_s visibleExp;
const char *allowedBinding;
const char *soundName;
int imageTrack;
float focusColor[4];
float disableColor[4];
statement_s rectXExp;
statement_s rectYExp;
ItemDef **items;
};
struct columnInfo_s
{
int pos;
int width;
int maxChars;
int alignment;
};
struct listBoxDef_s
{
int startPos[4];
int endPos[4];
int drawPadding;
float elementWidth;
float elementHeight;
int elementStyle;
int numColumns;
columnInfo_s columnInfo[16];
const char *doubleClick;
int notselectable;
int noScrollBars;
int usePaging;
float selectBorder[4];
float disableColor[4];
Material *selectIcon;
};
struct EditFieldDef
{
float minVal;
float maxVal;
float defVal;
float range;
int maxChars;
int maxCharsGotoNext;
int maxPaintChars;
int paintOffset;
};
struct MultiDef
{
QVector<qint32> dvarListPtrs;
QStringList dvarList;
QVector<qint32> dvarStrPtrs;
QStringList dvarStr;
QVector<float> dvarValue[32];
int count;
int strDef;
};
union ItemDefData
{
listBoxDef_s *listBox;
EditFieldDef *editField;
MultiDef *multi;
const char *enumDvarName;
void *data;
};
struct ItemDef
{
windowDef_t window;
rectDef_s textRect[4];
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;
const char *mouseEnterText;
const char *mouseExitText;
const char *mouseEnter;
const char *mouseExit;
const char *action;
const char *onAccept;
const char *onFocus;
const char *leaveFocus;
const char *dvar;
const char *dvarTest;
ItemKeyHandler *onKey;
const char *enableDvar;
int dvarFlags;
SoundAliasList *focusSound;
float special;
int cursorPos[4];
ItemDefData typeData;
int imageTrack;
statement_s visibleExp;
statement_s textExp;
statement_s materialExp;
statement_s rectXExp;
statement_s rectYExp;
statement_s rectWExp;
statement_s rectHExp;
statement_s forecolorAExp;
};
struct MenuList
{
qint32 namePtr;
QString name;
int menuCount;
qint32 menusPtr;
QVector<menuDef_t> menus;
};
struct LocalizeEntry
{
qint32 valuePtr;
QString value;
qint32 namePtr;
QString name;
};
enum WeaponType : __int32
{
WEAPTYPE_BULLET = 0x0,
WEAPTYPE_GRENADE = 0x1,
WEAPTYPE_PROJECTILE = 0x2,
WEAPTYPE_BINOCULARS = 0x3,
WEAPTYPE_NUM = 0x4,
};
enum WeaponClass : __int32
{
WEAPCLASS_RIFLE = 0x0,
WEAPCLASS_MG = 0x1,
WEAPCLASS_SMG = 0x2,
WEAPCLASS_SPREAD = 0x3,
WEAPCLASS_PISTOL = 0x4,
WEAPCLASS_GRENADE = 0x5,
WEAPCLASS_ROCKETLAUNCHER = 0x6,
WEAPCLASS_TURRET = 0x7,
WEAPCLASS_NON_PLAYER = 0x8,
WEAPCLASS_ITEM = 0x9,
WEAPCLASS_NUM = 0xA,
};
enum PenetrateType : __int32
{
PENETRATE_TYPE_NONE = 0x0,
PENETRATE_TYPE_SMALL = 0x1,
PENETRATE_TYPE_MEDIUM = 0x2,
PENETRATE_TYPE_LARGE = 0x3,
PENETRATE_TYPE_COUNT = 0x4,
};
enum ImpactType : __int32
{
IMPACT_TYPE_NONE = 0x0,
IMPACT_TYPE_BULLET_SMALL = 0x1,
IMPACT_TYPE_BULLET_LARGE = 0x2,
IMPACT_TYPE_BULLET_AP = 0x3,
IMPACT_TYPE_SHOTGUN = 0x4,
IMPACT_TYPE_GRENADE_BOUNCE = 0x5,
IMPACT_TYPE_GRENADE_EXPLODE = 0x6,
IMPACT_TYPE_ROCKET_EXPLODE = 0x7,
IMPACT_TYPE_PROJECTILE_DUD = 0x8,
IMPACT_TYPE_COUNT = 0x9,
};
enum WeaponInventoryType : __int32
{
WEAPINVENTORY_PRIMARY = 0x0,
WEAPINVENTORY_OFFHAND = 0x1,
WEAPINVENTORY_ITEM = 0x2,
WEAPINVENTORY_ALTMODE = 0x3,
WEAPINVENTORYCOUNT = 0x4,
};
enum WeaponFireType : __int32
{
WEAPON_FIRETYPE_FULLAUTO = 0x0,
WEAPON_FIRETYPE_SINGLESHOT = 0x1,
WEAPON_FIRETYPE_BURSTFIRE2 = 0x2,
WEAPON_FIRETYPE_BURSTFIRE3 = 0x3,
WEAPON_FIRETYPE_BURSTFIRE4 = 0x4,
WEAPON_FIRETYPECOUNT = 0x5,
};
enum OffhandClass : __int32
{
OFFHAND_CLASS_NONE = 0x0,
OFFHAND_CLASS_FRAG_GRENADE = 0x1,
OFFHAND_CLASS_SMOKE_GRENADE = 0x2,
OFFHAND_CLASS_FLASH_GRENADE = 0x3,
OFFHAND_CLASS_COUNT = 0x4,
};
enum WeaponStance : __int32
{
WEAPSTANCE_STAND = 0x0,
WEAPSTANCE_DUCK = 0x1,
WEAPSTANCE_PRONE = 0x2,
WEAPSTANCE_NUM = 0x3,
};
enum ActiveReticleType : __int32
{
VEH_ACTIVE_RETICLE_NONE = 0x0,
VEH_ACTIVE_RETICLE_PIP_ON_A_STICK = 0x1,
VEH_ACTIVE_RETICLE_BOUNCING_DIAMOND = 0x2,
VEH_ACTIVE_RETICLE_COUNT = 0x3,
};
enum WeaponIconRatioType : __int32
{
WEAPON_ICON_RATIO_1TO1 = 0x0,
WEAPON_ICON_RATIO_2TO1 = 0x1,
WEAPON_ICON_RATIO_4TO1 = 0x2,
WEAPON_ICON_RATIO_COUNT = 0x3,
};
enum AmmoCounterClipType : __int32
{
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,
};
enum WeaponOverlayReticle : __int32
{
WEAPOVERLAYRETICLE_NONE = 0x0,
WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
WEAPOVERLAYRETICLE_NUM = 0x2,
};
enum WeapOverlayInteface_t : __int32
{
WEAPOVERLAYINTERFACE_NONE = 0x0,
WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
WEAPOVERLAYINTERFACECOUNT = 0x3,
};
enum WeaponProjExposion : __int32
{
WEAPPROJEXP_GRENADE = 0x0,
WEAPPROJEXP_ROCKET = 0x1,
WEAPPROJEXP_FLASHBANG = 0x2,
WEAPPROJEXP_NONE = 0x3,
WEAPPROJEXP_DUD = 0x4,
WEAPPROJEXP_SMOKE = 0x5,
WEAPPROJEXP_HEAVY = 0x6,
WEAPPROJEXP_NUM = 0x7,
};
enum WeapStickinessType : __int32
{
WEAPSTICKINESS_NONE = 0x0,
WEAPSTICKINESS_ALL = 0x1,
WEAPSTICKINESS_GROUND = 0x2,
WEAPSTICKINESS_GROUND_WITH_YAW = 0x3,
WEAPSTICKINESS_COUNT = 0x4,
};
enum GuidedMissileType : __int32
{
MISSILE_GUIDANCE_NONE = 0x0,
MISSILE_GUIDANCE_SIDEWINDER = 0x1,
MISSILE_GUIDANCE_HELLFIRE = 0x2,
MISSILE_GUIDANCE_JAVELIN = 0x3,
MISSILE_GUIDANCE_COUNT = 0x4,
};
struct WeaponDef
{
qint32 szInternalNamePtr;
QString szInternalName;
qint32 szDisplayNamePtr;
QString szDisplayName;
qint32 szOverlayNamePtr;
QString szOverlayName;
qint32 gunXModelPtr;
QVector<XModel> gunXModel;
qint32 handXModelPtr;
XModel handXModel;
qint32 szXAnimsPtr[33];
QStringList szXAnims;
qint32 szModeNamePtr;
QString szModeName;
quint16 hideTags[8];
quint16 notetrackSoundMapKeys[16];
quint16 notetrackSoundMapValues[16];
int playerAnimType;
WeaponType weapType;
WeaponClass weapClass;
PenetrateType penetrateType;
ImpactType impactType;
WeaponInventoryType inventoryType;
WeaponFireType fireType;
OffhandClass offhandClass;
WeaponStance stance;
qint32 viewFlashEffectPtr;
FxEffectDef viewFlashEffect;
qint32 worldFlashEffectPtr;
FxEffectDef worldFlashEffect;
qint32 pickupSoundPtr;
SoundAliasList pickupSound;
qint32 pickupSoundPlayerPtr;
SoundAliasList pickupSoundPlayer;
qint32 ammoPickupSoundPtr;
SoundAliasList ammoPickupSound;
qint32 ammoPickupSoundPlayerPtr;
SoundAliasList ammoPickupSoundPlayer;
qint32 projectileSoundPtr;
SoundAliasList projectileSound;
qint32 pullbackSoundPtr;
SoundAliasList pullbackSound;
qint32 pullbackSoundPlayerPtr;
SoundAliasList pullbackSoundPlayer;
qint32 fireSoundPtr;
SoundAliasList fireSound;
qint32 fireSoundPlayerPtr;
SoundAliasList fireSoundPlayer;
qint32 fireLoopSoundPtr;
SoundAliasList fireLoopSound;
qint32 fireLoopSoundPlayerPtr;
SoundAliasList fireLoopSoundPlayer;
qint32 fireStopSoundPtr;
SoundAliasList fireStopSound;
qint32 fireStopSoundPlayerPtr;
SoundAliasList fireStopSoundPlayer;
qint32 fireLastSoundPtr;
SoundAliasList fireLastSound;
qint32 fireLastSoundPlayerPtr;
SoundAliasList fireLastSoundPlayer;
qint32 emptyFireSoundPtr;
SoundAliasList emptyFireSound;
qint32 emptyFireSoundPlayerPtr;
SoundAliasList emptyFireSoundPlayer;
qint32 meleeSwipeSoundPtr;
SoundAliasList meleeSwipeSound;
qint32 meleeSwipeSoundPlayerPtr;
SoundAliasList meleeSwipeSoundPlayer;
qint32 meleeHitSoundPtr;
SoundAliasList meleeHitSound;
qint32 meleeMissSoundPtr;
SoundAliasList meleeMissSound;
qint32 rechamberSoundPtr;
SoundAliasList rechamberSound;
qint32 rechamberSoundPlayerPtr;
SoundAliasList rechamberSoundPlayer;
qint32 reloadSoundPtr;
SoundAliasList reloadSound;
qint32 reloadSoundPlayerPtr;
SoundAliasList reloadSoundPlayer;
qint32 reloadEmptySoundPtr;
SoundAliasList reloadEmptySound;
qint32 reloadEmptySoundPlayerPtr;
SoundAliasList reloadEmptySoundPlayer;
qint32 reloadStartSoundPtr;
SoundAliasList reloadStartSound;
qint32 reloadStartSoundPlayerPtr;
SoundAliasList reloadStartSoundPlayer;
qint32 reloadEndSoundPtr;
SoundAliasList reloadEndSound;
qint32 reloadEndSoundPlayerPtr;
SoundAliasList reloadEndSoundPlayer;
qint32 detonateSoundPtr;
SoundAliasList detonateSound;
qint32 detonateSoundPlayerPtr;
SoundAliasList detonateSoundPlayer;
qint32 nightVisionWearSoundPtr;
SoundAliasList nightVisionWearSound;
qint32 nightVisionWearSoundPlayerPtr;
SoundAliasList nightVisionWearSoundPlayer;
qint32 nightVisionRemoveSoundPtr;
SoundAliasList nightVisionRemoveSound;
qint32 nightVisionRemoveSoundPlayerPtr;
SoundAliasList nightVisionRemoveSoundPlayer;
qint32 altSwitchSoundPtr;
SoundAliasList altSwitchSound;
qint32 altSwitchSoundPlayerPtr;
SoundAliasList altSwitchSoundPlayer;
qint32 raiseSoundPtr;
SoundAliasList raiseSound;
qint32 raiseSoundPlayerPtr;
SoundAliasList raiseSoundPlayer;
qint32 firstRaiseSoundPtr;
SoundAliasList firstRaiseSound;
qint32 firstRaiseSoundPlayerPtr;
SoundAliasList firstRaiseSoundPlayer;
qint32 putawaySoundPtr;
SoundAliasList putawaySound;
qint32 putawaySoundPlayerPtr;
SoundAliasList putawaySoundPlayer;
qint32 bounceSoundPtr;
SoundAliasList *bounceSound;
qint32 viewShellEjectEffectPtr;
FxEffectDef viewShellEjectEffect;
qint32 worldShellEjectEffectPtr;
FxEffectDef worldShellEjectEffect;
qint32 viewLastShotEjectEffectPtr;
FxEffectDef viewLastShotEjectEffect;
qint32 worldLastShotEjectEffectPtr;
FxEffectDef worldLastShotEjectEffect;
qint32 reticleCenterPtr;
Material reticleCenter;
qint32 reticleSidePtr;
Material reticleSide;
int iReticleCenterSize;
int iReticleSideSize;
int iReticleMinOfs;
ActiveReticleType activeReticleType;
float vStandMove[3];
float vStandRot[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;
qint32 worldModelPtr;
QVector<XModel> worldModel;
qint32 worldClipModelPtr;
XModel worldClipModel;
qint32 rocketModelPtr;
XModel rocketModel;
qint32 knifeModelPtr;
XModel knifeModel;
qint32 worldKnifeModelPtr;
XModel worldKnifeModel;
qint32 hudIconPtr;
Material hudIcon;
WeaponIconRatioType hudIconRatio;
qint32 ammoCounterIconPtr;
Material ammoCounterIcon;
WeaponIconRatioType ammoCounterIconRatio;
AmmoCounterClipType ammoCounterClip;
int iStartAmmo;
qint32 szAmmoNamePtr;
QString szAmmoName;
int iAmmoIndex;
qint32 szClipNamePtr;
QString szClipName;
int iClipIndex;
int iMaxAmmo;
int iClipSize;
int shotCount;
qint32 szSharedAmmoCapNamePtr;
QString szSharedAmmoCapName;
int iSharedAmmoCapIndex;
int iSharedAmmoCap;
int damage;
int playerDamage;
int iMeleeDamage;
int iDamageType;
int iFireDelay;
int iMeleeDelay;
int meleeChargeDelay;
int iDetonateDelay;
int iFireTime;
int iRechamberTime;
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 iAltRaiseTime;
int quickDropTime;
int quickRaiseTime;
int iFirstRaiseTime;
int iEmptyRaiseTime;
int iEmptyDropTime;
int sprintInTime;
int sprintLoopTime;
int sprintOutTime;
int nightVisionWearTime;
int nightVisionWearTimeFadeOutEnd;
int nightVisionWearTimePowerUp;
int nightVisionRemoveTime;
int nightVisionRemoveTimePowerDown;
int nightVisionRemoveTimeFadeInStart;
int fuseTime;
int aiFuseTime;
int requireLockonToFire;
int noAdsWhenMagEmpty;
int avoidDropCleanup;
float autoAimRange;
float aimAssistRange;
float aimAssistRangeAds;
float aimPadding;
float enemyCrosshairRange;
int crosshairColorChange;
float moveSpeedScale;
float adsMoveSpeedScale;
float sprintDurationScale;
float fAdsZoomFov;
float fAdsZoomInFrac;
float fAdsZoomOutFrac;
qint32 overlayMaterialPtr;
Material overlayMaterial;
qint32 overlayMaterialLowResPtr;
Material overlayMaterialLowRes;
WeaponOverlayReticle overlayReticle;
WeapOverlayInteface_t overlayInterface;
float overlayWidth;
float overlayHeight;
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;
int iAdsTransInTime;
int iAdsTransOutTime;
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;
int bRifleBullet;
int armorPiercing;
int bBoltAction;
int aimDownSight;
int bRechamberWhileAds;
float adsViewErrorMin;
float adsViewErrorMax;
int bCookOffHold;
int bClipOnly;
int adsFireOnly;
int cancelAutoHolsterWhenEmpty;
int suppressAmmoReserveDisplay;
int enhanced;
int laserSightDuringNightvision;
qint32 killIconPtr;
Material killIcon;
WeaponIconRatioType killIconRatio;
int flipKillIcon;
qint32 dpadIconPtr;
Material dpadIcon;
WeaponIconRatioType dpadIconRatio;
int bNoPartialReload;
int bSegmentedReload;
int iReloadAmmoAdd;
int iReloadStartAdd;
qint32 szAltWeaponNamePtr;
QString szAltWeaponName;
uint altWeaponIndex;
int iDropAmmoMin;
int iDropAmmoMax;
int blocksProne;
int silenced;
int iExplosionRadius;
int iExplosionRadiusMin;
int iExplosionInnerDamage;
int iExplosionOuterDamage;
float damageConeAngle;
int iProjectileSpeed;
int iProjectileSpeedUp;
int iProjectileSpeedForward;
int iProjectileActivateDist;
float projLifetime;
float timeToAccelerate;
float projectileCurvature;
qint32 projectileModelPtr;
XModel projectileModel;
WeaponProjExposion projExplosion;
qint32 projExplosionEffectPtr;
FxEffectDef projExplosionEffect;
int projExplosionEffectForceNormalUp;
qint32 projDudEffectPtr;
FxEffectDef projDudEffect;
qint32 projExplosionSoundPtr;
SoundAliasList projExplosionSound;
qint32 projDudSoundPtr;
SoundAliasList projDudSound;
int bProjImpactExplode;
WeapStickinessType stickiness;
int hasDetonator;
int timedDetonation;
int rotate;
int holdButtonToThrow;
int freezeMovementWhenFiring;
float lowAmmoWarningThreshold;
float parallelBounce[29];
float perpendicularBounce[29];
qint32 projTrailEffectPtr;
FxEffectDef projTrailEffect;
float vProjectileColor[3];
GuidedMissileType guidedMissileType;
float maxSteeringAccel;
int projIgnitionDelay;
FxEffectDef projIgnitionEffect;
qint32 projIgnitionSoundPtr;
SoundAliasList 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 fAdsViewKickCenterSpeed;
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 fHipViewKickCenterSpeed;
float fHipViewScatterMin;
float fHipViewScatterMax;
float fightDist;
float maxDist;
qint32 accuracyGraphNamePtr[2];
QString accuracyGraphName[2];
qint32 accuracyGraphKnotsPtr[2];
float accuracyGraphKnots[2];
qint32 originalAccuracyGraphKnotsPtr[2];
float originalAccuracyGraphKnots[2];
int accuracyGraphKnotCount[2];
int 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;
qint32 szUseHintStringPtr;
QString szUseHintString;
qint32 dropHintStringPtr;
QString dropHintString;
int iUseHintStringIndex;
int dropHintStringIndex;
float horizViewJitter;
float vertViewJitter;
qint32 szScriptPtr;
const char *szScript;
float fOOPosAnimLength[2];
int minDamage;
int minPlayerDamage;
float fMaxDamageRange;
float fMinDamageRange;
float destabilizationRateTime;
float destabilizationCurvatureMax;
int destabilizeDistance;
float locationDamageMultipliers[19];
qint32 fireRumblePtr;
QString fireRumble;
qint32 meleeImpactRumblePtr;
QString meleeImpactRumble;
float adsDofStart;
float adsDofEnd;
};
struct XAUDIOREVERBSETTINGS
{
uint ReflectionsDelay;
quint8 ReverbDelay;
quint8 RearDelay;
quint8 PositionLeft;
quint8 PositionRight;
quint8 PositionMatrixLeft;
quint8 PositionMatrixRight;
quint8 EarlyDiffusion;
quint8 LateDiffusion;
quint8 LowEQGain;
quint8 LowEQCutoff;
quint8 HighEQGain;
quint8 HighEQCutoff;
float RoomFilterFreq;
float RoomFilterMain;
float RoomFilterHF;
float ReflectionsGain;
float ReverbGain;
float DecayTime;
float Density;
float RoomSize;
};
struct XaReverbSettings
{
int presetOverridden;
XAUDIOREVERBSETTINGS reverbSettings;
};
struct SndDriverGlobals
{
qint32 reverbSettingsPtr;
XaReverbSettings reverbSettings;
qint32 namePtr;
QString name;
};
struct FxImpactEntry
{
qint32 nonFleshPtrs[29];
QVector<FxEffectDef> nonflesh;
qint32 fleshPtrs[4];
QVector<FxEffectDef> flesh;
};
struct FxImpactTable
{
qint32 namePtr;
QString name;
qint32 tablePtr;
QVector<FxImpactEntry> table;
};
struct RawFile
{
qint32 namePtr;
QString name;
int len;
qint32 bufferPtr;
QString buffer;
};
struct StringTable
{
qint32 namePtr;
QString name;
int columnCount;
int rowCount;
qint32 valuesPtr;
QStringList values;
};
union XAssetHeader
{
XModelPieces *xmodelPieces;
PhysPreset *physPreset;
XAnimParts *parts;
XModel *model;
Material *material;
MaterialPixelShader *pixelShader;
MaterialVertexShader *vertexShader;
MaterialTechniqueSet *techniqueSet;
GfxImage *image;
SoundAliasList *sound;
SndCurve *sndCurve;
LoadedSound *loadSnd;
clipMap_t *clipMap;
ComWorld *comWorld;
GameWorldSp *gameWorldSp;
GameWorldMp *gameWorldMp;
MapEnts *mapEnts;
GfxWorld *gfxWorld;
GfxLightDef *lightDef;
Font_s *font;
MenuList *menuList;
menuDef_t *menu;
LocalizeEntry *localize;
WeaponDef *weapon;
SndDriverGlobals *sndDriverGlobals;
const FxEffectDef *fx;
FxImpactTable *impactFx;
RawFile *rawfile;
StringTable *stringTable;
void *data;
};
struct StreamDelayInfo
{
const void *ptr;
int size;
};
class Assets : public QObject
{
Q_OBJECT
public:
explicit Assets(QObject *parent = nullptr);
~Assets();
private:
QVector<Glyph> Load_GlyphArray(QDataStream *aStream, int count);
QVector<GfxLightRegionAxis> Load_GfxLightRegionAxisArray(QDataStream *aStream, int count);
QVector<GfxDrawSurf> Load_GfxDrawSurfArray(QDataStream *aStream, int count);
QVector<GfxSceneDynBrush> Load_GfxSceneDynBrushArray(QDataStream *aStream, int count);
QVector<GfxSceneDynModel> Load_GfxSceneDynModelArray(QDataStream *aStream, int count);
QVector<GfxStreamingAabbTree> Load_GfxStreamingAabbTreeArray(QDataStream *aStream, int count);
GfxLightGridColors Load_GfxLightGridColors(QDataStream *aStream);
QVector<GfxLightGridColors> Load_GfxLightGridColorsArray(QDataStream *aStream, int count);
QVector<GfxLightGridEntry> Load_GfxLightGridEntryArray(QDataStream *aStream, int count);
QVector<GfxCullGroup> Load_GfxCullGroupArray(QDataStream *aStream, int count);
QVector<quint16> Load_StaticModelIndexArray(QDataStream *aStream, int count);
QVector<GfxStaticModelInst> Load_GfxStaticModelInstArray(QDataStream *aStream, int count);
ItemKeyHandler Load_ItemKeyHandler(QDataStream *aStream);
ItemKeyHandler Load_ItemKeyHandlerNext(QDataStream *aStream);
EditFieldDef Load_editFieldDef_t(QDataStream *aStream);
OperationEnum Load_Operator(QDataStream *aStream);
QVector<quint16> Load_LeafBrushArray(QDataStream *aStream, int count);
CLeaf Load_cLeaf_t(QDataStream *aStream);
QVector<CModel> Load_cmodel_tArray(QDataStream *aStream, int count);
QVector<CollisionAabbTree> Load_CollisionAabbTreeArray(QDataStream *aStream, int count);
CollisionBorder Load_CollisionBorder(QDataStream *aStream);
QVector<CollisionBorder> Load_CollisionBorderArray(QDataStream *aStream, int count);
CLeafBrushNodeChildren Load_cLeafBrushNodeChildren_t(QDataStream *aStream);
QVector<CLeaf> Load_cLeaf_tArray(QDataStream *aStream, int count);
QVector<DynEntityClient> Load_DynEntityClientArray(QDataStream *aStream, int count);
QVector<DynEntityPose> Load_DynEntityPoseArray(QDataStream *aStream, int count);
QVector<DynEntityColl> Load_DynEntityCollArray(QDataStream *aStream, int count);
QVector<FxTrailVertex> Load_FxTrailVertexArray(QDataStream *aStream, int count);
QVector<FxElemVelStateSample> Load_FxElemVelStateSampleArray(QDataStream *aStream, int count);
QVector<FxElemVisStateSample> Load_FxElemVisStateSampleArray(QDataStream *aStream, int count);
QVector<PathBaseNode> Load_pathbasenode_tArray(QDataStream *aStream, int count);
QVector<PathLink> Load_pathlink_tArray(QDataStream *aStream, int count);
QVector<XModelHighMipBounds> Load_XModelHighMipBoundsArray(QDataStream *aStream, int count);
XModelCollSurf Load_XModelCollSurf(QDataStream *aStream);
quint8 Load_cbrushedge_t(QDataStream *aStream);
QVector<quint8> Load_cbrushedge_tArray(QDataStream *aStream, size_t count);
CPlane Load_cplane_t(QDataStream *aStream);
CPlane Load_CPlane(QDataStream *aStream);
QVector<CPlane> Load_cplane_tArray(QDataStream *aStream, int count);
QVector<MaterialConstantDef> Load_MaterialConstantDefArray(QDataStream *aStream, int count);
QVector<GfxStateBits> Load_GfxStateBitsArray(QDataStream *aStream, int count);
MaterialArgumentCodeConst Load_MaterialArgumentCodeConst(QDataStream *aStream);
MaterialVertexDeclaration Load_MaterialVertexDeclaration(QDataStream *aStream);
QVector<quint8> Load_byteShaderArray(QDataStream *aStream, size_t count);
QVector<quint8> Load_byte4Array(QDataStream *aStream, size_t count);
QVector<GfxTexture> Load_GfxRawTextureArray(QDataStream *aStream, int count);
D3DCubeTexture Load_IDirect3DCubeTexture9(QDataStream *aStream);
D3DVolumeTexture Load_IDirect3DVolumeTexture9(QDataStream *aStream);
void Load_IDirect3DTexture9(QDataStream *aStream);
QVector<quint16> Load_r_index16_tArray(QDataStream *aStream, int count);
QVector<quint16> Load_r_index_tArray(QDataStream *aStream, int count);
D3DIndexBuffer Load_GfxIndexBuffer(QDataStream *aStream);
QVector<quint16> Load_XBlendInfoArray(QDataStream *aStream, int count);
D3DVertexBuffer Load_GfxVertexBuffer(QDataStream *aStream);
QVector<XSurfaceCollisionNode> Load_XSurfaceCollisionNodeArray(QDataStream *aStream, int count);
QVector<XSurfaceCollisionLeaf> Load_XSurfaceCollisionLeafArray(QDataStream *aStream, int count);
QVector<GfxBrushModel> Load_GfxBrushModelArray(QDataStream *aStream, int count);
QVector<GfxPackedVertex> Load_GfxPackedVertex0Array(QDataStream *aStream, int count);
void Load_GfxWorldVertex0Array(QDataStream *aStream, int count);
QVector<XAUDIOCHANNELMAPENTRY> Load_XAUDIOCHANNELMAPENTRYArray(QDataStream *aStream, int count);
StreamFileNamePacked Load_StreamFileNamePacked(QDataStream *aStream);
QVector<XaReverbSettings> Load_XaReverbSettingsArray(QDataStream *aStream, int count);
QVector<char> Load_char2048Array(QDataStream *aStream, size_t count);
QVector<DObjAnimMat> Load_DObjAnimMatArray(QDataStream *aStream, int count);
QVector<XBoneInfo> Load_XBoneInfoArray(QDataStream *aStream, int count);
QVector<QVector<quint16>> Load_UShortVecArray(QDataStream *aStream, int count);
QVector<QVector<quint8>> Load_ByteVecArray(QDataStream *aStream, int count);
QVector<dmaterial_t> Load_dmaterial_tArray(QDataStream *aStream, int count);
QVector<const char> Load_ConstCharArray(QDataStream *aStream, size_t count);
quint16 Load_ScriptString(QDataStream *aStream);
QVector<quint16> Load_UnsignedShortArray(QDataStream *aStream, int count);
QVector<qint16> Load_XQuat2(QDataStream *aStream);
QVector<QVector<quint16>> Load_XQuat2Array(QDataStream *aStream, int count);
QVector<ushort> Load_ushortArray(QDataStream *aStream, int count);
QVector<short> Load_shortArray(QDataStream *aStream, int count);
QVector<float> Load_vec3_t(QDataStream *aStream);
QVector<QVector<float>> Load_vec3_tArray(QDataStream *aStream, int count);
QVector<QVector<float>> Load_vec2_tArray(QDataStream *aStream, int count);
QVector<quint16> Load_raw_byte16Array(QDataStream *aStream, size_t count);
QVector<quint8> Load_raw_byteArray(QDataStream *aStream, size_t count);
QVector<uint> Load_raw_uint128Array(QDataStream *aStream, int count);
QVector<uint> Load_raw_uintArray(QDataStream *aStream, int count);
float Load_float(QDataStream *aStream);
QVector<float> Load_floatArray(QDataStream *aStream, int count);
uint Load_uint(QDataStream *aStream);
QVector<uint> Load_uintArray(QDataStream *aStream, int count);
QVector<_DWORD> Load_DWORDArray(QDataStream *aStream, int count);
QVector<quint8> Load_byte4096Array(QDataStream *aStream, size_t count);
int Load_int(QDataStream *aStream);
QVector<int> Load_intArray(QDataStream *aStream, int count);
char Load_char(QDataStream *aStream);
QVector<char> Load_charArray(QDataStream *aStream, size_t count);
QVector<quint8> Load_byteArray(QDataStream *aStream, size_t count);
GfxWorldDpvsPlanes Load_GfxWorldDpvsPlanes(QDataStream *aStream, GfxWorld aGfxWorld);
GfxWorldDpvsDynamic Load_GfxWorldDpvsDynamic(QDataStream *aStream, GfxWorld aGfxWorld);
GfxLightRegionHull Load_GfxLightRegionHull(QDataStream *aStream);
quint16 __ROL4__(quint16 value, quint16 bits);
GfxShadowGeometry Load_GfxShadowGeometry(QDataStream *aStream);
GfxWorldStreamInfo Load_GfxWorldStreamInfo(QDataStream *aStream);
GfxLightGrid Load_GfxLightGrid(QDataStream *aStream);
GfxWorldVertexLayerData Load_GfxWorldVertexLayerData(QDataStream *aStream, GfxWorld aGfxWorld);
GfxWorldVertexData Load_GfxWorldVertexData(QDataStream *aStream, GfxWorld aGfxWorld);
GfxAabbTree Load_GfxAabbTree(QDataStream *aStream);
QVector<GfxAabbTree> Load_GfxAabbTreeArray(QDataStream *aStream, int count);
GfxCell Load_GfxCell(QDataStream *aStream);
GfxPortal Load_GfxPortal(QDataStream *aStream);
QVector<GfxPortal> Load_GfxPortalArray(QDataStream *aStream, int count);
QString Load_XStringCustom(QDataStream *aStream);
QString Load_XString(QDataStream *aStream);
RawFile Load_RawFile(QDataStream *aStream);
LocalizeEntry Load_LocalizeEntry(QDataStream *aStream);
void Load_operandInternalDataUnion(QDataStream *aStream);
ComPrimaryLight Load_ComPrimaryLight(QDataStream *aStream);
CollisionPartition Load_CollisionPartition(QDataStream *aStream);
CLeafBrushNodeLeaf Load_CLeafBrushNodeLeaf(QDataStream *aStream, int leafBrushCount);
CLeafBrushNodeData Load_CLeafBrushNodeData(QDataStream *aStream, int aNodeCount);
MapEnts Load_MapEnts(QDataStream *aStream);
FxTrailDef Load_FxTrailDef(QDataStream *aStream);
FxEffectDefRef Load_FxEffectDefRef(QDataStream *aStream);
GameWorldMp Load_GameWorldMp(QDataStream *aStream);
QVector<PathNodeTree> LoadPathNodeTreeArray(QDataStream *aStream, int count);
PathNodeTreeNodes Load_PathNodeTreeNodes(QDataStream *aStream);
PathNodeConstant Load_PathNodeConstant(QDataStream *aStream);
QVector<XModelCollSurf> Load_XModelCollSurfArray(QDataStream *aStream, int count);
PhysPreset Load_PhysPreset(QDataStream *aStream);
MaterialArgumentDef Load_MaterialArgumentDef(QDataStream *aStream, MaterialShaderArgument aArgument);
GfxPixelShaderLoadDef Load_GfxPixelShaderLoadDef(QDataStream *aStream);
GfxVertexShaderLoadDef Load_GfxVertexShaderLoadDef(QDataStream *aStream);
QVector<quint8> Load_GfxImagePixels(QDataStream *aStream, GfxImage aGfxImage);
GfxTexture Load_GfxTexture(QDataStream *aStream, GfxTexture aGfxTexture, GfxImageLoadDef aGfxImageLoadDef);
XSurfaceVertexInfo Load_XSurfaceVertexInfo(QDataStream *aStream);
XSurfaceCollisionTree Load_XSurfaceCollisionTree(QDataStream *aStream);
MaterialInfo Load_MaterialInfo(QDataStream *aStream);
XAUDIOCHANNELMAP Load_XAUDIOCHANNELMAP(QDataStream *aStream);
SndCurve Load_SndCurve(QDataStream *aStream);
StreamFileNameRaw Load_StreamFileNameRaw(QDataStream *aStream);
SndDriverGlobals Load_SndDriverGlobals(QDataStream *aStream);
XaSeekTable Load_XaSeekTable(QDataStream *aStream);
XAUDIOPACKET_ALIGNED Load_XAUDIOPACKET_ALIGNED(QDataStream *aStream);
XAnimNotifyInfo Load_XAnimNotifyInfo(QDataStream *aStream);
XAnimDynamicFrames Load_XAnimDynamicFrames(QDataStream *aStream, XAnimPartTrans aXAnimPartTrans, XAnimDynamicIndices aXAnimDynamicIndices, XAnimDynamicFrames aXAnimDynamicFrames);
XAnimDynamicIndices Load_XAnimDynamicIndicesTrans(QDataStream *aStream, XAnimParts aXAnimParts, XAnimPartTrans aXAnimPartTrans);
XAnimDynamicIndices Load_XAnimDynamicIndicesDeltaQuat(QDataStream *aStream);
XAnimIndices Load_XAnimIndices(QDataStream *aStream, XAnimParts aXAnimParts, XAnimIndices aXAnimIndices);
QStringList Load_XStringArray(QDataStream *aStream, int count);
QVector<quint16> Load_ScriptStringArray(QDataStream *aStream, int count);
QVector<GfxLightRegionHull> Load_GfxLightRegionHullArray(QDataStream *aStream, int count);
QVector<GfxShadowGeometry> Load_GfxShadowGeometryArray(QDataStream *aStream, int count);
StringTable Load_StringTable(QDataStream *aStream);
RawFile Load_RawFilePtr(QDataStream *aStream);
void Load_LocalizeEntryPtr(QDataStream *aStream);
MultiDef Load_MultiDef(QDataStream *aStream);
Operand Load_Operand(QDataStream *aStream);
QVector<ComPrimaryLight> Load_ComPrimaryLightArray(QDataStream *aStream, int count);
CBrushSide Load_cbrushside_t(QDataStream *aStream);
CBrush Load_CBrush(QDataStream *aStream);
QVector<CollisionPartition> Load_CollisionPartitionArray(QDataStream *aStream, int count);
CLeafBrushNode Load_CLeafBrushNode(QDataStream *aStream);
QVector<cNode_t> Load_cNode_tArray(QDataStream *aStream, int count);
void Load_MapEntsPtr(QDataStream *aStream);
void Load_GameWorldMpPtr(QDataStream *aStream);
void Load_pathnode_tree_info_t(QDataStream *aStream);
void Load_pathnode_t(QDataStream *aStream);
void Load_cbrushside_tArray(QDataStream *aStream, int count);
void Load_PhysPresetPtr(QDataStream *aStream);
MaterialShaderArgument Load_MaterialShaderArgument(QDataStream *aStream);
MaterialPixelShaderProgram Load_MaterialPixelShaderProgram(QDataStream *aStream);
void Load_MaterialVertexShaderProgram(QDataStream *aStream);
GfxImageLoadDef Load_GfxImageLoadDef(QDataStream *aStream);
GfxTexture Load_GfxTextureLoad(QDataStream *aStream);
XRigidVertList Load_XRigidVertList(QDataStream *aStream);
void Load_snd_alias_list_name(QDataStream *aStream);
QVector<XAUDIOCHANNELMAP> Load_XAUDIOCHANNELMAPArray(QDataStream *aStream, int count);
SndCurve Load_SndCurvePtr(QDataStream *aStream);
void Load_StreamFileInfo(QDataStream *aStream);
void Load_SndDriverGlobalsPtr(QDataStream *aStream);
XaSound Load_XaSound(QDataStream *aStream);
QVector<XAnimNotifyInfo> Load_XAnimNotifyInfoArray(QDataStream *aStream, int count);
void Load_XAnimPartTransFrames(QDataStream *aStream);
void Load_XAnimDeltaPartQuatDataFrames(QDataStream *aStream);
void Load_TempStringArray(QDataStream *aStream, int count);
GfxLightRegion Load_GfxLightRegion(QDataStream *aStream);
StringTable Load_StringTablePtr(QDataStream *aStream);
void Load_entryInternalData(QDataStream *aStream);
ComWorld Load_ComWorld(QDataStream *aStream);
QVector<CBrush> Load_cbrush_tArray(QDataStream *aStream, int count);
QVector<CLeafBrushNode> Load_cLeafBrushNode_tArray(QDataStream *aStream, int count);
PathNodeTree Load_PathNodeTree(QDataStream *aStream);
void Load_pathnode_tArray(QDataStream *aStream, int count);
BrushWrapper Load_BrushWrapper(QDataStream *aStream);
void Load_MaterialShaderArgumentArray(QDataStream *aStream, int count);
MaterialPixelShader Load_MaterialPixelShader(QDataStream *aStream);
void Load_MaterialVertexShader(QDataStream *aStream);
GfxImage Load_GfxImage(QDataStream *aStream);
void Load_XRigidVertListArray(QDataStream *aStream, int count);
void Load_snd_alias_list_nameArray(QDataStream *aStream, int count);
void Load_SpeakerMapChannel(QDataStream *aStream);
void Load_LoadedSound(QDataStream *aStream);
void Load_StreamFileName(QDataStream *aStream);
void Load_XAnimPartTransData(QDataStream *aStream);
void Load_XAnimDeltaPartQuatData(QDataStream *aStream);
void Load_ScriptStringList(QDataStream *aStream);
void Load_GfxLightRegionArray(QDataStream *aStream, int count);
void Load_GfxCellArray(QDataStream *aStream, int count);
void Load_expressionEntry(QDataStream *aStream);
void Load_ComWorldPtr(QDataStream *aStream);
void Load_pathnode_tree_tArray(QDataStream *aStream, int count);
void Load_MaterialPixelShaderPtr(QDataStream *aStream);
void Load_GfxImagePtr(QDataStream *aStream);
void Load_XSurface(QDataStream *aStream);
void Load_SpeakerMapChannelArray(QDataStream *aStream, int count);
void Load_StreamedSound(QDataStream *aStream);
void Load_LoadedSoundPtr(QDataStream *aStream);
void Load_XAnimPartTrans(QDataStream *aStream);
void Load_XAnimDeltaPartQuat(QDataStream *aStream);
void Load_GfxReflectionProbe(QDataStream *aStream);
void Load_PathData(QDataStream *aStream);
void Load_PhysGeomInfoArray(QDataStream *aStream, int count);
void Load_GfxLightmapArray(QDataStream *aStream);
void Load_GfxLightImage(QDataStream *aStream);
void Load_MaterialVertexShaderPtrArray(QDataStream *aStream, int count);
void Load_water_t(QDataStream *aStream);
void Load_XSurfaceArray(QDataStream *aStream, int count);
void Load_SpeakerMap(QDataStream *aStream);
void Load_SoundFileRef(QDataStream *aStream);
void Load_XAnimDeltaPart(QDataStream *aStream);
void Load_GfxReflectionProbeArray(QDataStream *aStream, int count);
void Load_expressionEntry_ptrArray(QDataStream *aStream, int count);
void Load_GameWorldSp(QDataStream *aStream);
void Load_PhysGeomList(QDataStream *aStream);
void Load_GfxLightmapArrayArray(QDataStream *aStream, int count);
void Load_GfxLightDef(QDataStream *aStream);
void Load_MaterialTextureDefInfo(QDataStream *aStream);
void Load_MaterialPass(QDataStream *aStream);
void Load_SoundFile(QDataStream *aStream);
void Load_XAnimParts(QDataStream *aStream);
void Load_statement(QDataStream *aStream);
void Load_GameWorldSpPtr(QDataStream *aStream);
void Load_GfxLightDefPtr(QDataStream *aStream);
void Load_MaterialTextureDef(QDataStream *aStream);
void Load_MaterialPassArray(QDataStream *aStream, int count);
void Load_snd_alias_t(QDataStream *aStream);
void Load_XAnimPartsPtr(QDataStream *aStream);
void Load_GfxLight(QDataStream *aStream);
void Load_MaterialTextureDefArray(QDataStream *aStream, int count);
void Load_MaterialTechnique(QDataStream *aStream);
void Load_snd_alias_tArray(QDataStream *aStream, int count);
void Load_snd_alias_list_t(QDataStream *aStream);
void Load_MaterialTechniquePtrArray(QDataStream *aStream, int count);
void Load_snd_alias_list_ptr(QDataStream *aStream);
void Load_MaterialTechniqueSet(QDataStream *aStream);
void Load_MaterialTechniqueSetPtr(QDataStream *aStream);
void Load_Material(QDataStream *aStream);
void Load_MaterialHandle(QDataStream *aStream);
void Load_Font(QDataStream *aStream);
void Load_MaterialMemory(QDataStream *aStream);
void Load_sunflare_t(QDataStream *aStream);
void Load_windowDef_t(QDataStream *aStream);
void Load_listBoxDef_t(QDataStream *aStream);
void Load_GfxSurface(QDataStream *aStream);
void Load_MaterialHandleArray(QDataStream *aStream, int count);
void Load_FontHandle(QDataStream *aStream);
void Load_MaterialMemoryArray(QDataStream *aStream, int count);
void Load_Window(QDataStream *aStream);
void Load_FxElemMarkVisuals(QDataStream *aStream);
void Load_XModel(QDataStream *aStream);
void Load_GfxSurfaceArray(QDataStream *aStream, int count);
void Load_itemDefData_t(QDataStream *aStream);
void Load_FxElemMarkVisualsArray(QDataStream *aStream, int count);
void Load_XModelPtr(QDataStream *aStream);
void Load_GfxStaticModelDrawInst(QDataStream *aStream);
void Load_itemDef_t(QDataStream *aStream);
void Load_cStaticModel_t(QDataStream *aStream);
void Load_FxElemVisuals(QDataStream *aStream);
void Load_XModelPiece(QDataStream *aStream);
};
#endif // ASSETS_H