diff --git a/third_party/cod_export/cod4_360.h b/third_party/cod_export/cod4_360.h new file mode 100644 index 0000000..b8dd13c --- /dev/null +++ b/third_party/cod_export/cod4_360.h @@ -0,0 +1,1787 @@ +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; +};