1788 lines
33 KiB
C

struct DObjAnimMat
{
float quat[4];
float trans[3];
float transWeight;
};
struct XSurfaceVertexInfo
{
__int16 vertCount[4];
unsigned __int16 *vertsBlend;
};
union GfxColor
{
unsigned int packed;
unsigned __int8 array[4];
};
union PackedTexCoords
{
unsigned int packed;
};
union PackedUnitVec
{
unsigned int packed;
};
struct GfxPackedVertex
{
float xyz[3];
float binormalSign;
GfxColor color;
PackedTexCoords texCoord;
PackedUnitVec normal;
PackedUnitVec tangent;
};
struct D3DResource
{
unsigned int Common;
unsigned int ReferenceCount;
unsigned int Fence;
unsigned int ReadFence;
unsigned int Identifier;
unsigned int BaseFlush;
};
struct $E41E24A1CD47CDFA361AA9F99910948B
{
unsigned __int32 Type : 2;
unsigned __int32 BaseAddress : 30;
unsigned __int32 Endian : 2;
unsigned __int32 Size : 24;
unsigned __int32 AddressClamp : 1;
unsigned __int32 : 1;
unsigned __int32 RequestSize : 2;
unsigned __int32 ClampDisable : 2;
};
union GPUVERTEX_FETCH_CONSTANT
{
$E41E24A1CD47CDFA361AA9F99910948B __s0;
unsigned int dword[2];
};
struct D3DVertexBuffer : D3DResource
{
GPUVERTEX_FETCH_CONSTANT Format;
};
struct XSurfaceCollisionAabb
{
unsigned __int16 mins[3];
unsigned __int16 maxs[3];
};
struct XSurfaceCollisionNode
{
XSurfaceCollisionAabb aabb;
unsigned __int16 childBeginIndex;
unsigned __int16 childCount;
};
struct XSurfaceCollisionLeaf
{
unsigned __int16 triangleBeginIndex;
};
struct XSurfaceCollisionTree
{
float trans[3];
float scale[3];
unsigned int nodeCount;
XSurfaceCollisionNode *nodes;
unsigned int leafCount;
XSurfaceCollisionLeaf *leafs;
};
struct XRigidVertList
{
unsigned __int16 boneOffset;
unsigned __int16 vertCount;
unsigned __int16 triOffset;
unsigned __int16 triCount;
XSurfaceCollisionTree *collisionTree;
};
struct D3DIndexBuffer : D3DResource
{
unsigned int Address;
unsigned int Size;
};
struct XSurface
{
unsigned __int8 tileMode;
bool deformed;
unsigned __int16 vertCount;
unsigned __int16 triCount;
unsigned __int16 *triIndices;
XSurfaceVertexInfo vertInfo;
GfxPackedVertex *verts0;
D3DVertexBuffer vb0;
unsigned int vertListCount;
XRigidVertList *vertList;
D3DIndexBuffer indexBuffer;
int partBits[4];
};
struct GfxDrawSurfFields
{
unsigned __int64 objectId : 16;
unsigned __int64 reflectionProbeIndex : 8;
unsigned __int64 customIndex : 5;
unsigned __int64 materialSortedIndex : 11;
unsigned __int64 prepass : 2;
unsigned __int64 primaryLightIndex : 8;
unsigned __int64 surfType : 4;
unsigned __int64 primarySortKey : 6;
unsigned __int64 unused : 4;
};
union GfxDrawSurf
{
GfxDrawSurfFields fields;
unsigned __int64 packed;
};
struct __declspec(align(8)) MaterialInfo
{
const char *name;
unsigned __int8 gameFlags;
unsigned __int8 sortKey;
unsigned __int8 textureAtlasRowCount;
unsigned __int8 textureAtlasColumnCount;
GfxDrawSurf drawSurf;
unsigned int surfaceTypeBits;
};
struct MaterialStreamRouting
{
unsigned __int8 source;
unsigned __int8 dest;
};
struct D3DVertexDeclaration : D3DResource
{
};
union MaterialVertexStreamRouting
{
MaterialStreamRouting data[16];
D3DVertexDeclaration *decl[15];
};
struct MaterialVertexDeclaration
{
unsigned __int8 streamCount;
bool hasOptionalSource;
MaterialVertexStreamRouting routing;
};
struct D3DVertexShader : D3DResource
{
};
struct GfxVertexShaderLoadDef
{
unsigned __int8 *cachedPart;
unsigned __int8 *physicalPart;
unsigned __int16 cachedPartSize;
unsigned __int16 physicalPartSize;
};
union MaterialVertexShaderProgram
{
D3DVertexShader *vs;
GfxVertexShaderLoadDef loadDef;
};
struct MaterialVertexShader
{
const char *name;
MaterialVertexShaderProgram prog;
};
struct D3DPixelShader : D3DResource
{
};
struct GfxPixelShaderLoadDef
{
unsigned __int8 *cachedPart;
unsigned __int8 *physicalPart;
unsigned __int16 cachedPartSize;
unsigned __int16 physicalPartSize;
};
union MaterialPixelShaderProgram
{
D3DPixelShader *ps;
GfxPixelShaderLoadDef loadDef;
};
struct MaterialPixelShader
{
const char *name;
MaterialPixelShaderProgram prog;
};
struct MaterialArgumentCodeConst
{
unsigned __int16 index;
unsigned __int8 firstRow;
unsigned __int8 rowCount;
};
union MaterialArgumentDef
{
const float *literalConst;
MaterialArgumentCodeConst codeConst;
unsigned int codeSampler;
unsigned int nameHash;
};
struct MaterialShaderArgument
{
unsigned __int16 type;
unsigned __int16 dest;
MaterialArgumentDef u;
};
struct MaterialPass
{
MaterialVertexDeclaration *vertexDecl;
MaterialVertexShader *vertexShaderArray[15];
MaterialVertexShader *vertexShader;
MaterialPixelShader *pixelShader;
unsigned __int8 perPrimArgCount;
unsigned __int8 perObjArgCount;
unsigned __int8 stableArgCount;
unsigned __int8 customSamplerFlags;
unsigned __int8 precompiledIndex;
MaterialShaderArgument *args;
};
struct MaterialTechnique
{
const char *name;
unsigned __int16 flags;
unsigned __int16 passCount;
MaterialPass passArray[1];
};
struct MaterialTechniqueSet
{
const char *name;
unsigned __int8 worldVertFormat;
unsigned __int8 unused[2];
MaterialTechniqueSet *remappedTechniqueSet;
MaterialTechnique *techniques[26];
};
enum MapType : __int32
{
MAPTYPE_NONE = 0x0,
MAPTYPE_INVALID1 = 0x1,
MAPTYPE_INVALID2 = 0x2,
MAPTYPE_2D = 0x3,
MAPTYPE_3D = 0x4,
MAPTYPE_CUBE = 0x5,
MAPTYPE_COUNT = 0x6,
};
union GfxTexture
{
D3DBaseTexture *basemap;
D3DTexture *map;
D3DVolumeTexture *volmap;
D3DCubeTexture *cubemap;
GfxImageLoadDef *loadDef;
};
struct CardMemory
{
int platform[1];
};
struct GfxImage
{
MapType mapType;
GfxTexture texture;
unsigned __int8 semantic;
CardMemory cardMemory;
unsigned __int16 width;
unsigned __int16 height;
unsigned __int16 depth;
unsigned __int8 category;
bool delayLoadPixels;
unsigned __int8 *pixels;
unsigned int baseSize;
unsigned __int16 streamSlot;
bool streaming;
const char *name;
};
struct WaterWritable
{
float floatTime;
};
struct water_t
{
WaterWritable writable;
float *H0X;
float *H0Y;
float *wTerm;
int M;
int N;
float Lx;
float Lz;
float gravity;
float windvel;
float winddir[2];
float amplitude;
float codeConstant[4];
GfxImage *image;
};
union MaterialTextureDefInfo
{
GfxImage *image;
water_t *water;
};
struct MaterialTextureDef
{
unsigned int nameHash;
char nameStart;
char nameEnd;
unsigned __int8 samplerState;
unsigned __int8 semantic;
MaterialTextureDefInfo u;
};
struct MaterialConstantDef
{
unsigned int nameHash;
char name[12];
float literal[4];
};
struct GfxStateBits
{
unsigned int loadBits[2];
};
struct Material
{
MaterialInfo info;
unsigned __int8 stateBitsEntry[26];
unsigned __int8 textureCount;
unsigned __int8 constantCount;
unsigned __int8 stateBitsCount;
unsigned __int8 stateFlags;
unsigned __int8 cameraRegion;
MaterialTechniqueSet *techniqueSet;
MaterialTextureDef *textureTable;
MaterialConstantDef *constantTable;
GfxStateBits *stateBitsTable;
};
struct XModelLodInfo
{
float dist;
unsigned __int16 numsurfs;
unsigned __int16 surfIndex;
int partBits[4];
};
struct XModelCollSurf_s
{
float mins[3];
float maxs[3];
int boneIdx;
int contents;
int surfFlags;
};
struct XBoneInfo
{
float bounds[2][3];
float offset[3];
float radiusSquared;
};
struct XModelHighMipBounds
{
float mins[3];
float maxs[3];
};
struct XModelStreamInfo
{
XModelHighMipBounds *highMipBounds;
};
struct __declspec(align(4)) PhysPreset
{
const char *name;
int type;
float mass;
float bounce;
float friction;
float bulletForceScale;
float explosiveForceScale;
const char *sndAliasPrefix;
float piecesSpreadFraction;
float piecesUpwardVelocity;
bool tempDefaultToCylinder;
};
struct cplane_s
{
float normal[3];
float dist;
unsigned __int8 type;
unsigned __int8 signbits;
unsigned __int8 pad[2];
};
struct __declspec(align(2)) cbrushside_t
{
cplane_s *plane;
unsigned int materialNum;
__int16 firstAdjacentSideOffset;
unsigned __int8 edgeCount;
};
struct BrushWrapper
{
float mins[3];
int contents;
float maxs[3];
unsigned int numsides;
cbrushside_t *sides;
__int16 axialMaterialNum[2][3];
unsigned __int8 *baseAdjacentSide;
__int16 firstAdjacentSideOffsets[2][3];
unsigned __int8 edgeCount[2][3];
int totalEdgeCount;
cplane_s *planes;
};
struct PhysGeomInfo
{
BrushWrapper *brush;
int type;
float orientation[3][3];
float offset[3];
float halfLengths[3];
};
struct PhysMass
{
float centerOfMass[3];
float momentsOfInertia[3];
float productsOfInertia[3];
};
struct PhysGeomList
{
unsigned int count;
PhysGeomInfo *geoms;
PhysMass mass;
};
struct XModel
{
const char *name;
unsigned __int8 numBones;
unsigned __int8 numRootBones;
unsigned __int8 numsurfs;
unsigned __int8 lodRampType;
unsigned __int16 *boneNames;
unsigned __int8 *parentList;
__int16 *quats;
float *trans;
unsigned __int8 *partClassification;
DObjAnimMat *baseMat;
XSurface *surfs;
Material **materialHandles;
XModelLodInfo lodInfo[4];
XModelCollSurf_s *collSurfs;
int numCollSurfs;
int contents;
XBoneInfo *boneInfo;
float radius;
float mins[3];
float maxs[3];
__int16 numLods;
__int16 collLod;
XModelStreamInfo streamInfo;
int memUsage;
unsigned __int8 flags;
PhysPreset *physPreset;
PhysGeomList *physGeoms;
};
struct XModelPiece
{
XModel *model;
float offset[3];
};
struct XModelPieces
{
const char *name;
int numpieces;
XModelPiece *pieces;
};
union XAnimIndices
{
unsigned __int8 *_1;
unsigned __int16 *_2;
void *data;
};
struct XAnimNotifyInfo
{
unsigned __int16 name;
float time;
};
union XAnimDynamicFrames
{
unsigned __int8 (*_1)[3];
unsigned __int16 (*_2)[3];
};
union XAnimDynamicIndices
{
unsigned __int8 _1[1];
unsigned __int16 _2[1];
};
struct __declspec(align(4)) XAnimPartTransFrames
{
float mins[3];
float size[3];
XAnimDynamicFrames frames;
XAnimDynamicIndices indices;
};
union XAnimPartTransData
{
XAnimPartTransFrames frames;
float frame0[3];
};
struct XAnimPartTrans
{
unsigned __int16 size;
unsigned __int8 smallTrans;
XAnimPartTransData u;
};
struct __declspec(align(4)) XAnimDeltaPartQuatDataFrames
{
__int16 (*frames)[2];
XAnimDynamicIndices indices;
};
union XAnimDeltaPartQuatData
{
XAnimDeltaPartQuatDataFrames frames;
__int16 frame0[2];
};
struct XAnimDeltaPartQuat
{
unsigned __int16 size;
XAnimDeltaPartQuatData u;
};
struct XAnimDeltaPart
{
XAnimPartTrans *trans;
XAnimDeltaPartQuat *quat;
};
struct XAnimParts
{
const char *name;
unsigned __int16 dataByteCount;
unsigned __int16 dataShortCount;
unsigned __int16 dataIntCount;
unsigned __int16 randomDataByteCount;
unsigned __int16 randomDataIntCount;
unsigned __int16 numframes;
bool bLoop;
bool bDelta;
unsigned __int8 boneCount[12];
unsigned __int8 notifyCount;
unsigned __int8 assetType;
bool pad;
unsigned int randomDataShortCount;
unsigned int indexCount;
float framerate;
float frequency;
unsigned __int16 *names;
unsigned __int8 *dataByte;
__int16 *dataShort;
int *dataInt;
__int16 *randomDataShort;
unsigned __int8 *randomDataByte;
int *randomDataInt;
XAnimIndices indices;
XAnimNotifyInfo *notify;
XAnimDeltaPart *deltaPart;
};
struct __declspec(align(4)) XMALOOPREGION
{
unsigned int LoopStart;
unsigned int LoopEnd;
unsigned __int8 LoopSubframeEnd;
unsigned __int8 LoopSubframeSkip;
};
struct XAUDIOPACKET_ALIGNED
{
char *pBuffer;
unsigned int BufferSize;
unsigned int LoopCount;
XMALOOPREGION XMALoop[6];
char *pContext;
};
union AudioStreamMeta
{
unsigned __int8 NumStreams;
unsigned __int8 ChannelCount;
};
struct __declspec(align(4)) XAUDIOXMAFORMAT
{
unsigned int SampleRate;
unsigned __int8 ChannelCount;
unsigned __int8 DecodeBufferSize;
};
union SoundFormatData
{
XAUDIOXMAFORMAT Stream[6];
unsigned int SampleRate;
};
struct XAUDIOSOURCEFORMAT
{
unsigned __int8 SampleType;
__declspec(align(4)) AudioStreamMeta ___u1;
SoundFormatData ___u2;
};
struct XaIwXmaDataInfo
{
int totalMsec;
};
struct XaSeekTable
{
int size;
unsigned int *data;
};
struct XaSound
{
XAUDIOPACKET_ALIGNED packet;
XAUDIOSOURCEFORMAT format;
XaIwXmaDataInfo xaIwXmaDataInfo;
XaSeekTable seekTable;
};
struct LoadedSound
{
const char *name;
XaSound sound;
};
struct StreamFileNameRaw
{
const char *dir;
const char *name;
};
struct StreamFileNamePacked
{
unsigned int offset;
unsigned int length;
};
union StreamFileInfo
{
StreamFileNameRaw raw;
StreamFileNamePacked packed;
};
struct StreamFileName
{
unsigned int fileIndex;
StreamFileInfo info;
};
struct StreamedSound
{
StreamFileName filename;
};
union SoundFileRef
{
LoadedSound *loadSnd;
StreamedSound streamSnd;
};
struct SoundFile
{
unsigned __int8 type;
unsigned __int8 exists;
SoundFileRef u;
};
struct SndCurve
{
const char *filename;
int knotCount;
float knots[8][2];
};
struct XAUDIOCHANNELMAPENTRY
{
unsigned __int8 InputChannel;
unsigned __int8 OutputChannel;
float Volume;
};
struct XAUDIOCHANNELMAP
{
unsigned __int8 EntryCount;
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 snd_alias_list_t
{
const char *aliasName;
snd_alias_t *head;
int count;
};
struct cStaticModelWritable
{
unsigned __int16 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
{
cplane_s *plane;
__int16 children[2];
};
struct __declspec(align(4)) cLeaf_t
{
unsigned __int16 firstCollAabbIndex;
unsigned __int16 collAabbCount;
int brushContents;
int terrainContents;
float mins[3];
float maxs[3];
int leafBrushNode;
__int16 cluster;
};
struct cLeafBrushNodeLeaf_t
{
unsigned __int16 *brushes;
};
struct cLeafBrushNodeChildren_t
{
float dist;
float range;
unsigned __int16 childOffset[2];
};
union cLeafBrushNodeData_t
{
cLeafBrushNodeLeaf_t leaf;
cLeafBrushNodeChildren_t children;
};
struct cLeafBrushNode_s
{
unsigned __int8 axis;
__int16 leafBrushCount;
int contents;
cLeafBrushNodeData_t data;
};
struct CollisionBorder
{
float distEq[3];
float zBase;
float zSlope;
float start;
float length;
};
struct CollisionPartition
{
unsigned __int8 triCount;
unsigned __int8 borderCount;
int firstTri;
CollisionBorder *borders;
};
union CollisionAabbTreeIndex
{
int firstChildIndex;
int partitionIndex;
};
struct CollisionAabbTree
{
float origin[3];
float halfSize[3];
unsigned __int16 materialIndex;
unsigned __int16 childCount;
CollisionAabbTreeIndex u;
};
struct cmodel_t
{
float mins[3];
float maxs[3];
float radius;
cLeaf_t leaf;
};
struct __declspec(align(16)) cbrush_t
{
float mins[3];
int contents;
float maxs[3];
unsigned int numsides;
cbrushside_t *sides;
__int16 axialMaterialNum[2][3];
unsigned __int8 *baseAdjacentSide;
__int16 firstAdjacentSideOffsets[2][3];
unsigned __int8 edgeCount[2][3];
};
struct MapEnts
{
const char *name;
char *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
{
unsigned __int8 behavior;
unsigned __int8 index;
unsigned __int8 fps;
unsigned __int8 loopCount;
unsigned __int8 colIndexBits;
unsigned __int8 rowIndexBits;
__int16 entryCount;
};
struct FxElemVec3Range
{
float base[3];
float amplitude[3];
};
struct FxElemVelStateInFrame
{
FxElemVec3Range velocity;
FxElemVec3Range totalDelta;
};
const struct FxElemVelStateSample
{
FxElemVelStateInFrame local;
FxElemVelStateInFrame world;
};
union FxEffectDefRef
{
const FxEffectDef *handle;
const char *name;
};
union FxElemVisuals
{
const void *anonymous;
Material *material;
XModel *model;
FxEffectDefRef effectDef;
const char *soundName;
};
struct FxElemMarkVisuals
{
Material *materials[2];
};
union FxElemDefVisuals
{
FxElemMarkVisuals *markArray;
FxElemVisuals *array;
FxElemVisuals instance;
};
struct FxElemVisualState
{
unsigned __int8 color[4];
float rotationDelta;
float rotationTotal;
float size[2];
float scale;
};
const struct FxElemVisStateSample
{
FxElemVisualState base;
FxElemVisualState amplitude;
};
struct FxTrailVertex
{
float pos[2];
float normal[2];
float texCoord;
};
struct FxTrailDef
{
int scrollTimeMsec;
int repeatDist;
int splitDist;
int vertCount;
FxTrailVertex *verts;
int indCount;
unsigned __int16 *inds;
};
const 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;
unsigned __int8 elemType;
unsigned __int8 visualCount;
unsigned __int8 velIntervalCount;
unsigned __int8 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;
unsigned __int8 sortOrder;
unsigned __int8 lightingFrac;
unsigned __int8 useItemClip;
unsigned __int8 unused[1];
};
const struct FxEffectDef
{
const char *name;
int flags;
int totalSize;
int msecLoopingLife;
int elemDefCountLooping;
int elemDefCountOneShot;
int elemDefCountEmission;
const FxElemDef *elemDefs;
};
struct DynEntityDef
{
DynEntityType type;
GfxPlacement pose;
XModel *xModel;
unsigned __int16 brushModel;
unsigned __int16 physicsBrushModel;
const FxEffectDef *destroyFx;
XModelPieces *destroyPieces;
PhysPreset *physPreset;
int health;
PhysMass mass;
int contents;
};
struct DynEntityPose
{
GfxPlacement pose;
float radius;
};
struct DynEntityClient
{
int physObjId;
unsigned __int16 flags;
unsigned __int16 lightingHandle;
int health;
};
struct DynEntityColl
{
unsigned __int16 sector;
unsigned __int16 nextEntInSector;
float linkMins[2];
float linkMaxs[2];
};
struct clipMap_t
{
const char *name;
int isInUse;
int planeCount;
cplane_s *planes;
unsigned int numStaticModels;
cStaticModel_s *staticModelList;
unsigned int numMaterials;
dmaterial_t *materials;
unsigned int numBrushSides;
cbrushside_t *brushsides;
unsigned int numBrushEdges;
unsigned __int8 *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;
unsigned __int16 *triIndices;
unsigned __int8 *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;
int numClusters;
int clusterBytes;
unsigned __int8 *visibility;
int vised;
MapEnts *mapEnts;
cbrush_t *box_brush;
cmodel_t box_model;
unsigned __int16 dynEntCount[2];
DynEntityDef *dynEntDefList[2];
DynEntityPose *dynEntPoseList[2];
DynEntityClient *dynEntClientList[2];
DynEntityColl *dynEntCollList[2];
unsigned int checksum;
};
struct ComPrimaryLight
{
unsigned __int8 type;
unsigned __int8 canUseShadowMap;
unsigned __int8 exponent;
unsigned __int8 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;
};
struct ComWorld
{
const char *name;
int isInUse;
unsigned int primaryLightCount;
ComPrimaryLight *primaryLights;
};
enum nodeType : __int32
{
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_s
{
float fDist;
unsigned __int16 nodeNum;
unsigned __int8 disconnectCount;
unsigned __int8 negotiationLink;
unsigned __int8 ubBadPlaceCount[4];
};
struct pathnode_constant_t
{
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;
float minUseDistSq;
__int16 wOverlapNode[2];
__int16 wChainId;
__int16 wChainDepth;
__int16 wChainParent;
unsigned __int16 totalLinkCount;
pathlink_s *Links;
};
struct pathnode_dynamic_t
{
void *pOwner;
int iFreeTime;
int iValidTime[3];
int inPlayerLOSTime;
__int16 wLinkCount;
__int16 wOverlapCount;
__int16 turretEntNumber;
__int16 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
{
pathnode_constant_t constant;
pathnode_dynamic_t dynamic;
pathnode_transient_t transient;
};
struct pathbasenode_t
{
float vOrigin[3];
unsigned int type;
};
struct pathnode_tree_nodes_t
{
int nodeCount;
unsigned __int16 *nodes;
};
union pathnode_tree_info_t;
struct pathnode_tree_t
{
int axis;
float dist;
pathnode_tree_info_t u;
};
union pathnode_tree_info_t
{
pathnode_tree_t *child[2];
pathnode_tree_nodes_t s;
};
struct PathData
{
unsigned int nodeCount;
pathnode_t *nodes;
pathbasenode_t *basenodes;
unsigned int chainNodeCount;
unsigned __int16 *chainNodeForNode;
unsigned __int16 *nodeForChainNode;
int visBytes;
unsigned __int8 *pathVis;
int nodeTreeCount;
pathnode_tree_t *nodeTree;
};
struct GameWorldSp
{
const char *name;
PathData path;
};
struct GameWorldMp
{
const char *name;
};
struct GfxStreamingAabbTree
{
unsigned __int16 firstItem;
unsigned __int16 itemCount;
unsigned __int16 firstChild;
unsigned __int16 childCount;
float mins[3];
float maxs[3];
};
struct GfxWorldStreamInfo
{
int aabbTreeCount;
GfxStreamingAabbTree *aabbTrees;
int leafRefCount;
int *leafRefs;
};
struct GfxWorldVertex
{
float xyz[3];
float binormalSign;
GfxColor color;
float texCoord[2];
float lmapCoord[2];
PackedUnitVec normal;
PackedUnitVec tangent;
};
struct GfxWorldVertexData
{
GfxWorldVertex *vertices;
D3DVertexBuffer worldVb;
};
struct GfxWorldVertexLayerData
{
unsigned __int8 *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;
unsigned __int8 samplerState;
};
struct GfxLightDef
{
const char *name;
GfxLightImage attenuation;
int lmapLookupStart;
};
struct GfxLight
{
unsigned __int8 type;
unsigned __int8 canUseShadowMap;
unsigned __int8 unused[2];
float color[3];
float dir[3];
float origin[3];
float radius;
float cosHalfFovOuter;
float cosHalfFovInner;
int exponent;
unsigned int spotShadowIndex;
GfxLightDef *def;
};
struct GfxReflectionProbe
{
float origin[3];
GfxImage *reflectionImage;
};
struct GfxWorldDpvsPlanes
{
int cellCount;
cplane_s *planes;
unsigned __int16 *nodes;
unsigned int *sceneEntCellBits;
};
struct GfxAabbTree
{
float mins[3];
float maxs[3];
unsigned __int16 childCount;
unsigned __int16 surfaceCount;
unsigned __int16 startSurfIndex;
unsigned __int16 smodelIndexCount;
unsigned __int16 *smodelIndexes;
int childrenOffset;
};
struct GfxPortal;
struct GfxPortalWritable
{
bool isQueued;
bool isAncestor;
unsigned __int8 recursionDepth;
unsigned __int8 hullPointCount;
float (*hullPoints)[2];
GfxPortal *queuedParent;
};
struct DpvsPlane
{
float coeffs[4];
unsigned __int8 side[3];
unsigned __int8 pad;
};
struct GfxCell;
struct GfxPortal
{
GfxPortalWritable writable;
DpvsPlane plane;
GfxCell *cell;
float (*vertices)[3];
unsigned __int8 vertexCount;
float hullAxis[2][3];
};
struct GfxCell
{
float mins[3];
float maxs[3];
int aabbTreeCount;
GfxAabbTree *aabbTree;
int portalCount;
GfxPortal *portals;
int cullGroupCount;
int *cullGroups;
unsigned __int8 reflectionProbeCount;
unsigned __int8 *reflectionProbes;
};
struct GfxLightmapArray
{
GfxImage *primary;
GfxImage *secondary;
};
struct GfxLightGridEntry
{
unsigned __int16 colorsIndex;
unsigned __int8 primaryLightIndex;
unsigned __int8 needsTrace;
};
struct GfxLightGridColors
{
unsigned __int8 rgb[56][3];
};
struct GfxLightGrid
{
bool hasLightRegions;
unsigned int sunPrimaryLightIndex;
unsigned __int16 mins[3];
unsigned __int16 maxs[3];
unsigned int rowAxis;
unsigned int colAxis;
unsigned __int16 *rowDataStart;
unsigned int rawRowDataSize;
unsigned __int8 *rawRowData;
unsigned int entryCount;
GfxLightGridEntry *entries;
unsigned int colorCount;
GfxLightGridColors *colors;
};
/* 9014 */
struct GfxBrushModelWritable
{
float mins[3];
float maxs[3];
};
struct GfxBrushModel
{
GfxBrushModelWritable writable;
float bounds[2][3];
unsigned int surfaceCount;
unsigned int 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
{
unsigned __int16 lod;
unsigned __int16 surfId;
};
struct GfxSceneDynModel
{
XModelDrawInfo info;
unsigned __int16 dynEntId;
};
struct BModelDrawInfo
{
unsigned __int16 surfId;
};
struct GfxSceneDynBrush
{
BModelDrawInfo info;
unsigned __int16 dynEntId;
};
struct GfxShadowGeometry
{
unsigned __int16 surfaceCount;
unsigned __int16 smodelCount;
unsigned __int16 *sortedSurfIndex;
unsigned __int16 *smodelIndex;
};
struct GfxLightRegionAxis
{
float dir[3];
float midPoint;
float halfSize;
};
struct GfxLightRegionHull
{
float kdopMidPoint[9];
float kdopHalfSize[9];
unsigned int axisCount;
GfxLightRegionAxis *axis;
};
struct GfxLightRegion
{
unsigned int hullCount;
GfxLightRegionHull *hulls;
};
struct GfxWorldDpvsStatic
{
unsigned int smodelCount;
unsigned int staticSurfaceCount;
unsigned int litSurfsBegin;
unsigned int litSurfsEnd;
unsigned int decalSurfsBegin;
unsigned int decalSurfsEnd;
unsigned int emissiveSurfsBegin;
unsigned int emissiveSurfsEnd;
unsigned int smodelVisDataCount;
unsigned int surfaceVisDataCount;
unsigned __int8 *smodelVisData[3];
unsigned __int8 *surfaceVisData[3];
unsigned int *lodData;
unsigned __int16 *sortedSurfIndex;
GfxStaticModelInst *smodelInsts;
GfxSurface *surfaces;
GfxCullGroup *cullGroups;
GfxStaticModelDrawInst *smodelDrawInsts;
GfxDrawSurf *surfaceMaterials;
unsigned int *surfaceCastsSunShadow;
volatile int usageCount;
};
struct GfxWorld
{
const char *name;
const char *baseName;
int planeCount;
int nodeCount;
int indexCount;
unsigned __int16 *indices;
D3DIndexBuffer indexBuffer;
int surfaceCount;
GfxWorldStreamInfo streamInfo;
int skySurfCount;
int *skyStartSurfs;
GfxImage *skyImage;
unsigned __int8 skySamplerState;
unsigned int vertexCount;
GfxWorldVertexData vd;
unsigned int vertexLayerDataSize;
GfxWorldVertexLayerData vld;
SunLightParseParams sunParse;
GfxLight *sunLight;
float sunColorFromBsp[3];
unsigned int sunPrimaryLightIndex;
unsigned int primaryLightCount;
int cullGroupCount;
unsigned int 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];
unsigned int checksum;
int materialMemoryCount;
MaterialMemory *materialMemory;
sunflare_t sun;
float outdoorLookupMatrix[4][4];
GfxImage *outdoorImage;
unsigned int *cellCasterBits;
GfxSceneDynModel *sceneDynModel;
GfxSceneDynBrush *sceneDynBrush;
unsigned int *primaryLightEntityShadowVis;
unsigned int *primaryLightDynEntShadowVis[2];
unsigned __int8 *nonSunPrimaryLightForModelDynEnt;
GfxShadowGeometry *shadowGeom;
GfxLightRegion *lightRegion;
GfxWorldDpvsStatic dpvs;
GfxWorldDpvsDynamic dpvsDyn;
};
union XAssetHeader
{
XModelPieces *xmodelPieces;
PhysPreset *physPreset;
XAnimParts *parts;
XModel *model;
Material *material;
MaterialPixelShader *pixelShader;
MaterialVertexShader *vertexShader;
MaterialTechniqueSet *techniqueSet;
GfxImage *image;
snd_alias_list_t *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;
};