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

9835 lines
284 KiB
C++

#include "assets.h"
#include "Windows.h"
#include <QIODevice>
Assets::Assets(QObject *parent)
: QObject(parent) {
}
Assets::~Assets() {
}
QVector<Glyph> Assets::Load_GlyphArray(QDataStream *aStream, int count)
{
QVector<Glyph> result;
for (int i = 0; i < count; i++) {
Glyph glyph;
*aStream
>> glyph.letter
>> glyph.x0
>> glyph.y0
>> glyph.dx
>> glyph.pixelWidth
>> glyph.pixelHeight
>> glyph.s0
>> glyph.t0
>> glyph.s1
>> glyph.t1;
result << glyph;
}
return result;
}
// ?Load_GfxLightRegionAxisArray@@YAX_NH@Z at 0x822a49a0
QVector<GfxLightRegionAxis> Assets::Load_GfxLightRegionAxisArray(QDataStream *aStream, int count)
{
QVector<GfxLightRegionAxis> result;
for (int i = 0; i < count; i++) {
GfxLightRegionAxis gfxLightRegionAxis;
*aStream
>> gfxLightRegionAxis.dir[0]
>> gfxLightRegionAxis.dir[1]
>> gfxLightRegionAxis.dir[2]
>> gfxLightRegionAxis.midPoint
>> gfxLightRegionAxis.halfSize;
result << gfxLightRegionAxis;
}
return result;
}
// ?Load_GfxDrawSurfArray@@YAX_NH@Z at 0x822a49c0
QVector<GfxDrawSurf> Assets::Load_GfxDrawSurfArray(QDataStream *aStream, int count)
{
QVector<GfxDrawSurf> result;
for (int i = 0; i < count; i++) {
GfxDrawSurf gfxDrawSurf;
*aStream
>> gfxDrawSurf.packed;
result << gfxDrawSurf;
}
return result;
}
// ?Load_GfxSceneDynBrushArray@@YAX_NH@Z at 0x822a49d8
QVector<GfxSceneDynBrush> Assets::Load_GfxSceneDynBrushArray(QDataStream *aStream, int count)
{
QVector<GfxSceneDynBrush> result;
for (int i = 0; i < count; i++) {
GfxSceneDynBrush gfxSceneDynBrush;
*aStream
>> gfxSceneDynBrush.info.surfId
>> gfxSceneDynBrush.dynEntId;
result << gfxSceneDynBrush;
}
return result;
}
// ?Load_GfxSceneDynModelArray@@YAX_NH@Z at 0x822a49f0
QVector<GfxSceneDynModel> Assets::Load_GfxSceneDynModelArray(QDataStream *aStream, int count)
{
QVector<GfxSceneDynModel> result;
for (int i = 0; i < count; i++) {
GfxSceneDynModel gfxSceneDynModel;
*aStream
>> gfxSceneDynModel.info.lod
>> gfxSceneDynModel.info.surfId
>> gfxSceneDynModel.dynEntId;
result << gfxSceneDynModel;
}
return result;
}
// ?Load_GfxStreamingAabbTreeArray@@YAX_NH@Z at 0x822a4a10
QVector<GfxStreamingAabbTree> Assets::Load_GfxStreamingAabbTreeArray(QDataStream *aStream, int count)
{
QVector<GfxStreamingAabbTree> result;
for (int i = 0; i < count; i++) {
GfxStreamingAabbTree gfxStreamingAabbTree;
*aStream
>> gfxStreamingAabbTree.firstItem
>> gfxStreamingAabbTree.itemCount
>> gfxStreamingAabbTree.firstChild
>> gfxStreamingAabbTree.childCount
>> gfxStreamingAabbTree.mins[0]
>> gfxStreamingAabbTree.mins[1]
>> gfxStreamingAabbTree.mins[2]
>> gfxStreamingAabbTree.maxs[0]
>> gfxStreamingAabbTree.maxs[1]
>> gfxStreamingAabbTree.maxs[2];
result << gfxStreamingAabbTree;
}
return result;
}
GfxLightGridColors Assets::Load_GfxLightGridColors(QDataStream *aStream)
{
GfxLightGridColors result;
for (int j = 0; j < 56; j++) {
*aStream
>> result.rgb[j][0]
>> result.rgb[j][1]
>> result.rgb[j][2];
}
return result;
}
// ?Load_GfxLightGridColorsArray@@YAX_NH@Z at 0x822a4a28
QVector<GfxLightGridColors> Assets::Load_GfxLightGridColorsArray(QDataStream *aStream, int count)
{
QVector<GfxLightGridColors> result;
for (int i = 0; i < count; i++) {
result << Load_GfxLightGridColors(aStream);
}
return result;
}
// ?Load_GfxLightGridEntryArray@@YAX_NH@Z at 0x822a4a40
QVector<GfxLightGridEntry> Assets::Load_GfxLightGridEntryArray(QDataStream *aStream, int count)
{
QVector<GfxLightGridEntry> result;
for (int i = 0; i < count; i++) {
GfxLightGridEntry gfxLightGridEntry;
for (int j = 0; j < 56; j++) {
*aStream
>> gfxLightGridEntry.colorsIndex
>> gfxLightGridEntry.primaryLightIndex
>> gfxLightGridEntry.needsTrace;
}
result << gfxLightGridEntry;
}
return result;
}
// ?Load_GfxCullGroupArray@@YAX_NH@Z at 0x822a4a58
QVector<GfxCullGroup> Assets::Load_GfxCullGroupArray(QDataStream *aStream, int count)
{
QVector<GfxCullGroup> result;
for (int i = 0; i < count; i++) {
GfxCullGroup gfxCullGroup;
for (int j = 0; j < 56; j++) {
*aStream
>> gfxCullGroup.mins[0]
>> gfxCullGroup.mins[1]
>> gfxCullGroup.mins[2]
>> gfxCullGroup.maxs[0]
>> gfxCullGroup.maxs[1]
>> gfxCullGroup.maxs[2]
>> gfxCullGroup.surfaceCount
>> gfxCullGroup.startSurfIndex;
}
result << gfxCullGroup;
}
return result;
}
typedef unsigned __int16 StaticModelIndex;
// ?Load_StaticModelIndexArray@@YAX_NH@Z at 0x822a4a70
QVector<StaticModelIndex> Assets::Load_StaticModelIndexArray(QDataStream *aStream, int count)
{
QVector<StaticModelIndex> result;
for (int i = 0; i < count; i++) {
StaticModelIndex staticModelIndex;
*aStream >> staticModelIndex;
result << staticModelIndex;
}
return result;
}
// ?Load_GfxStaticModelInstArray@@YAX_NH@Z at 0x822a4a88
QVector<GfxStaticModelInst> Assets::Load_GfxStaticModelInstArray(QDataStream *aStream, int count)
{
QVector<GfxStaticModelInst> result;
for (int i = 0; i < count; i++) {
GfxStaticModelInst gfxStaticModelInst;
*aStream
>> gfxStaticModelInst.mins[0]
>> gfxStaticModelInst.mins[1]
>> gfxStaticModelInst.mins[2]
>> gfxStaticModelInst.maxs[0]
>> gfxStaticModelInst.maxs[1]
>> gfxStaticModelInst.maxs[2]
>> gfxStaticModelInst.groundLighting.array[0]
>> gfxStaticModelInst.groundLighting.array[1]
>> gfxStaticModelInst.groundLighting.array[2]
>> gfxStaticModelInst.groundLighting.array[3];
result << gfxStaticModelInst;
}
return result;
}
// ?Load_ItemKeyHandler@@YAX_N@Z at 0x822a5f68
ItemKeyHandler Assets::Load_ItemKeyHandler(QDataStream *aStream)
{
ItemKeyHandler itemKeyHandler;
ItemKeyHandler itemKeyHandlerNext;
ItemKeyHandler **i; // r11
unsigned __int8 *v2; // r4
*aStream
>> itemKeyHandler.key
>> itemKeyHandler.actionPtr
>> itemKeyHandler.nextPtr;
itemKeyHandler.action = Load_XString(aStream);
for (ItemKeyHandler i = itemKeyHandler.next; itemKeyHandler.next; i = itemKeyHandler.next )
{
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
itemKeyHandlerNext = (ItemKeyHandler *)v2;
*i = (ItemKeyHandler *)v2;
Load_Stream(1, v2, 0xCu);
itemKeyHandler = itemKeyHandlerNext;
Load_Stream(0, varItemKeyHandlerNext, 0xCu);
varXString = &itemKeyHandler->action;
Load_XString(0);
}
}
typedef ItemKeyHandler ItemKeyHandlerNext;
// ?Load_ItemKeyHandlerNext@@YAX_N@Z at 0x822a4aa0
ItemKeyHandler Assets::Load_ItemKeyHandlerNext(QDataStream *aStream)
{
ItemKeyHandlerNext result;
*aStream
>> result.key
>> result.action
>> result.next;
Load_ItemKeyHandler(aStream);
return result;
}
typedef EditFieldDef editFieldDef_t;
// ?Load_editFieldDef_t@@YAX_N@Z at 0x822a4af0
EditFieldDef Assets::Load_editFieldDef_t(QDataStream *aStream)
{
editFieldDef_t result;
*aStream
>> result.minVal
>> result.maxVal
>> result.defVal
>> result.range
>> result.maxChars
>> result.maxCharsGotoNext
>> result.maxPaintChars
>> result.paintOffset;
return result;
}
typedef OperationEnum Operator;
// ?Load_Operator@@YAX_N@Z at 0x822a4b08
Operator Assets::Load_Operator(QDataStream *aStream)
{
Operator result;
*aStream >> result;
return result;
}
typedef unsigned __int16 LeafBrush;
// ?Load_LeafBrushArray@@YAX_NH@Z at 0x822a4b20
QVector<LeafBrush> Assets::Load_LeafBrushArray(QDataStream *aStream, int count)
{
QVector<LeafBrush> result;
for (int i = 0; i < count; i++) {
LeafBrush leafBrush;
*aStream >> result;
result << leafBrush;
}
*aStream >> result;
return result;
}
CLeaf Assets::Load_cLeaf_t(QDataStream *aStream)
{
CLeaf result;
*aStream
>> result.firstCollAabbIndex
>> result.collAabbCount
>> result.brushContents
>> result.terrainContents
>> result.mins[0]
>> result.mins[1]
>> result.mins[2]
>> result.maxs[0]
>> result.maxs[1]
>> result.maxs[2]
>> result.leafBrushNode
>> result.cluster;
return result;
}
// ?Load_cmodel_tArray@@YAX_NH@Z at 0x822a4b38
QVector<CModel> Assets::Load_cmodel_tArray(QDataStream *aStream, int count)
{
QVector<CModel> result;
for (int i = 0; i < count; i++) {
CModel cmodel;
*aStream
>> cmodel.mins[0]
>> cmodel.mins[1]
>> cmodel.mins[2]
>> cmodel.maxs[0]
>> cmodel.maxs[1]
>> cmodel.maxs[2]
>> cmodel.radius;
cmodel.leaf = Load_cLeaf_t(aStream);
result << cmodel;
}
return result;
}
// ?Load_CollisionAabbTreeArray@@YAX_NH@Z at 0x822a4b58
QVector<CollisionAabbTree> Assets::Load_CollisionAabbTreeArray(QDataStream *aStream, int count)
{
QVector<CollisionAabbTree> result;
for (int i = 0; i < count; i++) {
CollisionAabbTree collisionAabbTree;
*aStream
>> collisionAabbTree.origin[0]
>> collisionAabbTree.origin[1]
>> collisionAabbTree.origin[2]
>> collisionAabbTree.halfSize[0]
>> collisionAabbTree.halfSize[1]
>> collisionAabbTree.halfSize[2]
>> collisionAabbTree.materialIndex
>> collisionAabbTree.childCount
>> collisionAabbTree.u.firstChildIndex
>> collisionAabbTree.u.partitionIndex;
result << collisionAabbTree;
}
return result;
}
// ?Load_CollisionBorder@@YAX_N@Z at 0x822a4b88
CollisionBorder Assets::Load_CollisionBorder(QDataStream *aStream)
{
CollisionBorder result;
*aStream
>> result.distEq[0]
>> result.distEq[1]
>> result.distEq[2]
>> result.zBase
>> result.zSlope
>> result.start
>> result.length;
return result;
}
// ?Load_CollisionBorderArray@@YAX_NH@Z at 0x822a4b70
QVector<CollisionBorder> Assets::Load_CollisionBorderArray(QDataStream *aStream, int count)
{
QVector<CollisionBorder> result;
for (int i = 0; i < count; i++) {
result << Load_CollisionBorder(aStream);
}
return result;
}
// ?Load_cLeafBrushNodeChildren_t@@YAX_N@Z at 0x822a4ba0
CLeafBrushNodeChildren Assets::Load_cLeafBrushNodeChildren_t(QDataStream *aStream)
{
CLeafBrushNodeChildren result;
*aStream
>> result.dist
>> result.range
>> result.childOffset[0]
>> result.childOffset[1];
return result;
}
// ?Load_cLeaf_tArray@@YAX_NH@Z at 0x822a4c30
QVector<CLeaf> Assets::Load_cLeaf_tArray(QDataStream *aStream, int count)
{
QVector<CLeaf> result;
for (int i = 0; i < count; i++) {
result << Load_cLeaf_t(aStream);
}
return result;
}
// ?Load_DynEntityClientArray@@YAX_NH@Z at 0x822a4c48
QVector<DynEntityClient> Assets::Load_DynEntityClientArray(QDataStream *aStream, int count)
{
QVector<DynEntityClient> result;
for (int i = 0; i < count; i++) {
DynEntityClient dynEntityClient;
*aStream
>> dynEntityClient.physObjId
>> dynEntityClient.flags
>> dynEntityClient.lightingHandle
>> dynEntityClient.health;
result << dynEntityClient;
}
return result;
}
// ?Load_DynEntityPoseArray@@YAX_NH@Z at 0x822a4c68
QVector<DynEntityPose> Assets::Load_DynEntityPoseArray(QDataStream *aStream, int count)
{
QVector<DynEntityPose> result;
for (int i = 0; i < count; i++) {
DynEntityPose dynEntityPose;
*aStream
>> dynEntityPose.pose.quat[0]
>> dynEntityPose.pose.quat[1]
>> dynEntityPose.pose.quat[2]
>> dynEntityPose.pose.quat[3]
>> dynEntityPose.pose.origin[0]
>> dynEntityPose.pose.origin[1]
>> dynEntityPose.pose.origin[2]
>> dynEntityPose.radius;
result << dynEntityPose;
}
return result;
}
// ?Load_DynEntityCollArray@@YAX_NH@Z at 0x822a4c80
QVector<DynEntityColl> Assets::Load_DynEntityCollArray(QDataStream *aStream, int count)
{
QVector<DynEntityColl> result;
for (int i = 0; i < count; i++) {
DynEntityColl dynEntityColl;
*aStream
>> dynEntityColl.sector
>> dynEntityColl.nextEntInSector
>> dynEntityColl.linkMins[0]
>> dynEntityColl.linkMins[1]
>> dynEntityColl.linkMaxs[0]
>> dynEntityColl.linkMaxs[1];
result << dynEntityColl;
}
return result;
}
// ?Load_FxTrailVertexArray@@YAX_NH@Z at 0x822a4ca0
QVector<FxTrailVertex> Assets::Load_FxTrailVertexArray(QDataStream *aStream, int count)
{
QVector<FxTrailVertex> result;
for (int i = 0; i < count; i++) {
FxTrailVertex fxTrailVertex;
*aStream
>> fxTrailVertex.pos[0]
>> fxTrailVertex.pos[1]
>> fxTrailVertex.normal[0]
>> fxTrailVertex.normal[1]
>> fxTrailVertex.texCoord;
result << fxTrailVertex;
}
return result;
}
// ?Load_FxElemVelStateSampleArray@@YAX_NH@Z at 0x822a4cc0
QVector<FxElemVelStateSample> Assets::Load_FxElemVelStateSampleArray(QDataStream *aStream, int count)
{
QVector<FxElemVelStateSample> result;
for (int i = 0; i < count; i++) {
FxElemVelStateSample fxElemVelStateSample;
*aStream
>> fxElemVelStateSample.local.velocity.base[0]
>> fxElemVelStateSample.local.velocity.base[1]
>> fxElemVelStateSample.local.velocity.base[2]
>> fxElemVelStateSample.local.velocity.amplitude[0]
>> fxElemVelStateSample.local.velocity.amplitude[1]
>> fxElemVelStateSample.local.velocity.amplitude[2]
>> fxElemVelStateSample.local.totalDelta.base[0]
>> fxElemVelStateSample.local.totalDelta.base[1]
>> fxElemVelStateSample.local.totalDelta.base[2]
>> fxElemVelStateSample.local.totalDelta.amplitude[0]
>> fxElemVelStateSample.local.totalDelta.amplitude[1]
>> fxElemVelStateSample.local.totalDelta.amplitude[2]
>> fxElemVelStateSample.world.velocity.base[0]
>> fxElemVelStateSample.world.velocity.base[1]
>> fxElemVelStateSample.world.velocity.base[2]
>> fxElemVelStateSample.world.velocity.amplitude[0]
>> fxElemVelStateSample.world.velocity.amplitude[1]
>> fxElemVelStateSample.world.velocity.amplitude[2]
>> fxElemVelStateSample.world.totalDelta.base[0]
>> fxElemVelStateSample.world.totalDelta.base[1]
>> fxElemVelStateSample.world.totalDelta.base[2]
>> fxElemVelStateSample.world.totalDelta.amplitude[0]
>> fxElemVelStateSample.world.totalDelta.amplitude[1]
>> fxElemVelStateSample.world.totalDelta.amplitude[2];
result << fxElemVelStateSample;
}
return result;
}
// ?Load_FxElemVisStateSampleArray@@YAX_NH@Z at 0x822a4ce0
QVector<FxElemVisStateSample> Assets::Load_FxElemVisStateSampleArray(QDataStream *aStream, int count)
{
QVector<FxElemVisStateSample> result;
for (int i = 0; i < count; i++) {
FxElemVisStateSample fxElemVisStateSample;
*aStream
>> fxElemVisStateSample.base.color[0]
>> fxElemVisStateSample.base.color[1]
>> fxElemVisStateSample.base.color[2]
>> fxElemVisStateSample.base.color[3]
>> fxElemVisStateSample.base.rotationDelta
>> fxElemVisStateSample.base.rotationTotal
>> fxElemVisStateSample.base.size[0]
>> fxElemVisStateSample.base.size[1]
>> fxElemVisStateSample.base.scale;
result << fxElemVisStateSample;
}
return result;
}
// ?Load_pathbasenode_tArray@@YAX_NH@Z at 0x822a4d60
QVector<PathBaseNode> Assets::Load_pathbasenode_tArray(QDataStream *aStream, int count)
{
QVector<PathBaseNode> result;
for (int i = 0; i < count; i++) {
PathBaseNode pathbasenode;
*aStream
>> pathbasenode.vOrigin[0]
>> pathbasenode.vOrigin[1]
>> pathbasenode.vOrigin[2]
>> pathbasenode.type;
result << pathbasenode;
}
return result;
}
typedef PathLink pathlink_t;
// ?Load_pathlink_tArray@@YAX_NH@Z at 0x822a4d78
QVector<pathlink_t> Assets::Load_pathlink_tArray(QDataStream *aStream, int count)
{
QVector<pathlink_t> result;
for (int i = 0; i < count; i++) {
pathlink_t pathlink;
*aStream
>> pathlink.fDist
>> pathlink.nodeNum
>> pathlink.disconnectCount
>> pathlink.negotiationLink
>> pathlink.ubBadPlaceCount[0]
>> pathlink.ubBadPlaceCount[1]
>> pathlink.ubBadPlaceCount[2]
>> pathlink.ubBadPlaceCount[3];
result << pathlink;
}
return result;
}
// ?Load_XModelHighMipBoundsArray@@YAX_NH@Z at 0x822a4d98
QVector<XModelHighMipBounds> Assets::Load_XModelHighMipBoundsArray(QDataStream *aStream, int count)
{
QVector<XModelHighMipBounds> result;
for (int i = 0; i < count; i++) {
XModelHighMipBounds xModelHighMipBounds;
*aStream
>> xModelHighMipBounds.mins[0]
>> xModelHighMipBounds.mins[1]
>> xModelHighMipBounds.mins[2]
>> xModelHighMipBounds.maxs[0]
>> xModelHighMipBounds.maxs[1]
>> xModelHighMipBounds.maxs[2];
result << xModelHighMipBounds;
}
return result;
}
typedef XModelCollSurf XModelCollSurf;
// ?Load_XModelCollSurf@@YAX_N@Z at 0x822a4db8
XModelCollSurf Assets::Load_XModelCollSurf(QDataStream *aStream)
{
XModelCollSurf result;
*aStream
>> result.mins[0]
>> result.mins[1]
>> result.maxs[2]
>> result.maxs[0]
>> result.maxs[1]
>> result.maxs[2]
>> result.boneIdx
>> result.contents
>> result.surfFlags;
return result;
}
typedef unsigned __int8 cbrushedge_t;
// ?Load_cbrushedge_t@@YAX_N@Z at 0x822a4de8
cbrushedge_t Assets::Load_cbrushedge_t(QDataStream *aStream)
{
cbrushedge_t result;
*aStream >> result;
return result;
}
// ?Load_cbrushedge_tArray@@YAX_NH@Z at 0x822a4dd0
QVector<cbrushedge_t> Assets::Load_cbrushedge_tArray(QDataStream *aStream, size_t count)
{
QVector<cbrushedge_t> result;
for (int i = 0; i < count; i++) {
*aStream >> Load_cbrushedge_t(aStream);
}
return result;
}
typedef CPlane cplane_t;
// ?Load_cplane_t@@YAX_N@Z at 0x822a4e20
cplane_t Assets::Load_cplane_t(QDataStream *aStream)
{
cplane_t result;
*aStream
>> result.normal[0]
>> result.normal[1]
>> result.normal[2]
>> result.dist
>> result.type
>> result.signbits
>> result.pad[0]
>> result.pad[1];
return result;
}
// ?Load_cplane_t@@YAX_N@Z at 0x822a4e20
CPlane Assets::Load_CPlane(QDataStream *aStream)
{
CPlane result;
*aStream
>> result.normal[0]
>> result.normal[1]
>> result.normal[2]
>> result.dist
>> result.type
>> result.signbits
>> result.pad[0]
>> result.pad[1];
return result;
}
// ?Load_cplane_tArray@@YAX_NH@Z at 0x822a4e00
QVector<cplane_t> Assets::Load_cplane_tArray(QDataStream *aStream, int count)
{
QVector<cplane_t> result;
for (int i = 0; i < count; i++) {
*aStream >> Load_cplane_t(aStream);
}
return result;
}
// ?Load_MaterialConstantDefArray@@YAX_NH@Z at 0x822a4e38
QVector<MaterialConstantDef> Assets::Load_MaterialConstantDefArray(QDataStream *aStream, int count)
{
QVector<MaterialConstantDef> result;
for (int i = 0; i < count; i++) {
MaterialConstantDef materialConstantDef;
*aStream >> materialConstantDef.nameHash;
for (int j = 0; j < 12; j++) {
*aStream >> materialConstantDef.name[j];
}
for (int j = 0; j < 4; j++) {
*aStream >> materialConstantDef.literal[j];
}
*aStream
>> materialConstantDef.literal[0]
>> materialConstantDef.literal[1]
>> materialConstantDef.literal[2]
>> materialConstantDef.literal[3];
result << materialConstantDef;
}
return result;
}
// ?Load_GfxStateBitsArray@@YAX_NH@Z at 0x822a4e50
QVector<GfxStateBits> Assets::Load_GfxStateBitsArray(QDataStream *aStream, int count)
{
QVector<GfxStateBits> result;
for (int i = 0; i < count; i++) {
GfxStateBits gfxStateBits;
*aStream
>> gfxStateBits.loadBits[0]
>> gfxStateBits.loadBits[1];
result << gfxStateBits;
}
return result;
}
// ?Load_MaterialArgumentCodeConst@@YAX_N@Z at 0x822a4e68
MaterialArgumentCodeConst Assets::Load_MaterialArgumentCodeConst(QDataStream *aStream)
{
MaterialArgumentCodeConst result;
*aStream
>> result.index
>> result.firstRow
>> result.rowCount;
return result;
}
// ?Load_MaterialVertexDeclaration@@YAX_N@Z at 0x822a4e80
MaterialVertexDeclaration Assets::Load_MaterialVertexDeclaration(QDataStream *aStream)
{
MaterialVertexDeclaration result;
*aStream
>> result.streamCount
>> result.hasOptionalSource;
for (int i = 0; i < 16; i++) {
*aStream >> result.routing.data[i].source;
*aStream >> result.routing.data[i].dest;
}
for (int i = 0; i < 15; i++) {
quint32 declPtr;
*aStream >> declPtr;
&result.routing.decl[i] = declPtr;
}
return result;
}
typedef unsigned __int8 byteShader;
// ?Load_byteShaderArray@@YAX_NH@Z at 0x822a4e98
QVector<byteShader> Assets::Load_byteShaderArray(QDataStream *aStream, size_t count)
{
QVector<byteShader> result;
for (int i = 0; i < count; i++) {
byteShader byteShader_;
*aStream >> byteShader_;
result << byteShader_;
}
return result;
}
typedef unsigned __int8 byte4;
// ?Load_byte4Array@@YAX_NH@Z at 0x822a4eb0
QVector<byte4> Assets::Load_byte4Array(QDataStream *aStream, size_t count)
{
QVector<byte4> result;
for (int i = 0; i < count; i++) {
byte4 byte4_;
*aStream >> byte4_;
result << byte4_;
}
return result;
}
typedef GfxTexture GfxRawTexture;
// ?Load_GfxRawTextureArray@@YAX_NH@Z at 0x822a4ec8
QVector<GfxRawTexture> Assets::Load_GfxRawTextureArray(QDataStream *aStream, int count)
{
QVector<GfxRawTexture> result;
for (int i = 0; i < count; i++) {
GfxRawTexture gfxRawTexture;
quint32 basemapPtr, mapPtr, volmapPtr, cubemapPtr, loadDefPtr;
*aStream
>> basemapPtr
>> mapPtr
>> volmapPtr
>> cubemapPtr
>> loadDefPtr;
&gfxRawTexture.basemap = basemapPtr;
&gfxRawTexture.map = mapPtr;
&gfxRawTexture.volmap = volmapPtr;
&gfxRawTexture.cubemap = cubemapPtr;
&gfxRawTexture.loadDef = loadDefPtr;
result << gfxRawTexture;
}
return result;
}
// ?Load_IDirect3DCubeTexture9@@YAX_N@Z at 0x822a4ee0
D3DCubeTexture Assets::Load_IDirect3DCubeTexture9(QDataStream *aStream)
{
D3DCubeTexture result;
*aStream
>> result.MipFlush
>> result.Format
>> result.Common
>> result.ReferenceCount
>> result.Fence
>> result.ReadFence
>> result.Identifier
>> result.BaseFlush;
for (int i = 0; i < 16; i++) {
*aStream >> result.routing.data[i].source;
*aStream >> result.routing.data[i].dest;
}
for (int i = 0; i < 15; i++) {
quint32 declPtr;
*aStream >> declPtr;
&result.routing.decl[i] = declPtr;
}
return result;
}
// ?Load_IDirect3DVolumeTexture9@@YAX_N@Z at 0x822a4ef8
D3DVolumeTexture Assets::Load_IDirect3DVolumeTexture9(QDataStream *aStream)
{
D3DVolumeTexture result;
*aStream
>> result.MipFlush
>> result.Format
>> result.Common
>> result.ReferenceCount
>> result.Fence
>> result.ReadFence
>> result.Identifier
>> result.BaseFlush;
for (int i = 0; i < 16; i++) {
*aStream >> result.routing.data[i].source;
*aStream >> result.routing.data[i].dest;
}
for (int i = 0; i < 15; i++) {
quint32 declPtr;
*aStream >> declPtr;
&result.routing.decl[i] = declPtr;
}
return result;
}
// ?Load_IDirect3DTexture9@@YAX_N@Z at 0x822a4f10
void Assets::Load_IDirect3DTexture9(QDataStream *aStream)
{
Load_Stream(1, varIDirect3DTexture9, 0x34u);
}
typedef unsigned __int16 r_index16_t;
// ?Load_r_index16_tArray@@YAX_NH@Z at 0x822a4f28
QVector<quint16> Assets::Load_r_index16_tArray(QDataStream *aStream, int count)
{
QVector<r_index16_t> result;
for (int i = 0; i < count; i++) {
r_index16_t r_index16;
*aStream >> r_index16;
result << r_index16;
}
return result;
}
typedef unsigned __int16 r_index_t;
// ?Load_r_index_tArray@@YAX_NH@Z at 0x822a4f40
QVector<quint16> Assets::Load_r_index_tArray(QDataStream *aStream, int count)
{
QVector<r_index_t> result;
for (int i = 0; i < count; i++) {
r_index_t r_index;
*aStream >> r_index;
result << r_index;
}
return result;
}
typedef D3DIndexBuffer GfxIndexBuffer;
// ?Load_GfxIndexBuffer@@YAX_N@Z at 0x822a4f58
D3DIndexBuffer Assets::Load_GfxIndexBuffer(QDataStream *aStream)
{
GfxIndexBuffer result;
*aStream
>> result.Address
>> result.Size
>> result.Common
>> result.ReferenceCount
>> result.Fence
>> result.ReadFence
>> result.Identifier
>> result.BaseFlush;
return result;
}
typedef unsigned __int16 XBlendInfo;
// ?Load_XBlendInfoArray@@YAX_NH@Z at 0x822a4f70
QVector<XBlendInfo> Assets::Load_XBlendInfoArray(QDataStream *aStream, int count)
{
QVector<XBlendInfo> result;
for (int i = 0; i < count; i++) {
XBlendInfo xBlendInfo;
*aStream >> xBlendInfo;
result << xBlendInfo;
}
return result;
}
typedef D3DVertexBuffer GfxVertexBuffer;
// ?Load_GfxVertexBuffer@@YAX_N@Z at 0x822a4f88
GfxVertexBuffer Assets::Load_GfxVertexBuffer(QDataStream *aStream)
{
GfxVertexBuffer result;
*aStream
>> result.Format.__s0.Type
>> result.Format.__s0.BaseAddress
>> result.Format.__s0.Endian
>> result.Format.__s0.Size
>> result.Format.__s0.AddressClamp
>> result.Format.__s0.
>> result.Format.__s0.RequestSize
>> result.Format.__s0.ClampDisable
>> result.Format.dword[0]
>> result.Format.dword[1]
>> result.Common
>> result.ReferenceCount
>> result.Fence
>> result.ReadFence
>> result.Identifier
>> result.BaseFlush;
return result;
}
// ?Load_XSurfaceCollisionNodeArray@@YAX_NH@Z at 0x822a4fa0
QVector<XSurfaceCollisionNode> Assets::Load_XSurfaceCollisionNodeArray(QDataStream *aStream, int count)
{
QVector<XSurfaceCollisionNode> result;
for (int i = 0; i < count; i++) {
XSurfaceCollisionNode xSurfaceCollisionNode;
*aStream
>> xSurfaceCollisionNode.aabb.mins[0]
>> xSurfaceCollisionNode.aabb.mins[1]
>> xSurfaceCollisionNode.aabb.mins[2]
>> xSurfaceCollisionNode.aabb.maxs[0]
>> xSurfaceCollisionNode.aabb.maxs[1]
>> xSurfaceCollisionNode.aabb.maxs[2]
>> xSurfaceCollisionNode.childBeginIndex
>> xSurfaceCollisionNode.childCount;
result << xSurfaceCollisionNode;
}
return result;
}
struct XSurfaceCollisionLeaf
{
unsigned __int16 triangleBeginIndex;
};
// ?Load_XSurfaceCollisionLeafArray@@YAX_NH@Z at 0x822a4fb8
QVector<XSurfaceCollisionLeaf> Assets::Load_XSurfaceCollisionLeafArray(QDataStream *aStream, int count)
{
QVector<XSurfaceCollisionLeaf> result;
for (int i = 0; i < count; i++) {
XSurfaceCollisionLeaf xSurfaceCollisionLeaf;
*aStream >> xSurfaceCollisionLeaf.triangleBeginIndex;
result << xSurfaceCollisionLeaf;
}
return result;
}
// ?Load_GfxBrushModelArray@@YAX_NH@Z at 0x822a4fd0
QVector<GfxBrushModel> Assets::Load_GfxBrushModelArray(QDataStream *aStream, int count)
{
QVector<GfxBrushModel> result;
for (int i = 0; i < count; i++) {
GfxBrushModel gfxBrushModel;
*aStream
>> gfxBrushModel.writable.mins[0]
>> gfxBrushModel.writable.mins[1]
>> gfxBrushModel.writable.mins[2]
>> gfxBrushModel.writable.maxs[0]
>> gfxBrushModel.writable.maxs[1]
>> gfxBrushModel.writable.maxs[2]
>> gfxBrushModel.bounds[0][0]
>> gfxBrushModel.bounds[0][1]
>> gfxBrushModel.bounds[0][2]
>> gfxBrushModel.bounds[1][0]
>> gfxBrushModel.bounds[1][1]
>> gfxBrushModel.bounds[1][2]
>> gfxBrushModel.surfaceCount
>> gfxBrushModel.startSurfIndex;
result << gfxBrushModel;
}
return result;
}
typedef GfxPackedVertex GfxPackedVertex0;
// ?Load_GfxPackedVertex0Array@@YAX_NH@Z at 0x822a4fe8
QVector<GfxPackedVertex0> Assets::Load_GfxPackedVertex0Array(QDataStream *aStream, int count)
{
QVector<GfxPackedVertex0> result;
for (int i = 0; i < count; i++) {
GfxPackedVertex0 gfxPackedVertex0;
*aStream
>> gfxPackedVertex0.xyz[0]
>> gfxPackedVertex0.xyz[1]
>> gfxPackedVertex0.xyz[2]
>> gfxPackedVertex0.binormalSign
>> gfxPackedVertex0.color.array[0]
>> gfxPackedVertex0.color.array[1]
>> gfxPackedVertex0.color.array[2]
>> gfxPackedVertex0.color.array[3]
>> gfxPackedVertex0.texCoord.packed
>> gfxPackedVertex0.normal.packed
>> gfxPackedVertex0.tangent.packed;
result << gfxPackedVertex0;
}
return result;
}
typedef GfxWorldVertex GfxWorldVertex0;
// ?Load_GfxWorldVertex0Array@@YAX_NH@Z at 0x822a5000
void Assets::Load_GfxWorldVertex0Array(QDataStream *aStream, int count)
{
QVector<GfxWorldVertex0> result;
for (int i = 0; i < count; i++) {
GfxWorldVertex0 gfxWorldVertex0;
*aStream
>> gfxWorldVertex0.xyz[0]
>> gfxWorldVertex0.xyz[1]
>> gfxWorldVertex0.xyz[2]
>> gfxWorldVertex0.binormalSign
>> gfxWorldVertex0.color.array[0]
>> gfxWorldVertex0.color.array[1]
>> gfxWorldVertex0.color.array[2]
>> gfxWorldVertex0.color.array[3]
>> gfxWorldVertex0.texCoord[0]
>> gfxWorldVertex0.texCoord[1]
>> gfxWorldVertex0.lmapCoord[0]
>> gfxWorldVertex0.lmapCoord[1]
>> gfxWorldVertex0.normal.packed
>> gfxWorldVertex0.tangent.packed;
result << gfxPackedVertex0;
}
return result;
}
// ?Load_XAUDIOCHANNELMAPENTRYArray@@YAX_NH@Z at 0x822a5018
QVector<XAUDIOCHANNELMAPENTRY> Assets::Load_XAUDIOCHANNELMAPENTRYArray(QDataStream *aStream, int count)
{
QVector<XAUDIOCHANNELMAPENTRY> result;
for (int i = 0; i < count; i++) {
XAUDIOCHANNELMAPENTRY xAUDIOCHANNELMAPENTRY;
*aStream
>> xAUDIOCHANNELMAPENTRY.InputChannel
>> xAUDIOCHANNELMAPENTRY.OutputChannel
>> xAUDIOCHANNELMAPENTRY.Volume;
result << xAUDIOCHANNELMAPENTRY;
}
return result;
}
// ?Load_StreamFileNamePacked@@YAX_N@Z at 0x822a5030
StreamFileNamePacked Assets::Load_StreamFileNamePacked(QDataStream *aStream)
{
StreamFileNamePacked result;
*aStream
>> result.offset
>> result.length;
return result;
}
// ?Load_XaReverbSettingsArray@@YAX_NH@Z at 0x822a5048
QVector<XaReverbSettings> Assets::Load_XaReverbSettingsArray(QDataStream *aStream, int count)
{
QVector<XaReverbSettings> result;
for (int i = 0; i < count; i++) {
XaReverbSettings xaReverbSettings;
*aStream
>> xaReverbSettings.presetOverridden
>> xaReverbSettings.reverbSettings.ReflectionsDelay
>> xaReverbSettings.reverbSettings.ReverbDelay
>> xaReverbSettings.reverbSettings.RearDelay
>> xaReverbSettings.reverbSettings.PositionLeft
>> xaReverbSettings.reverbSettings.PositionRight
>> xaReverbSettings.reverbSettings.PositionMatrixLeft
>> xaReverbSettings.reverbSettings.PositionMatrixRight
>> xaReverbSettings.reverbSettings.EarlyDiffusion
>> xaReverbSettings.reverbSettings.LateDiffusion
>> xaReverbSettings.reverbSettings.LowEQGain
>> xaReverbSettings.reverbSettings.LowEQCutoff
>> xaReverbSettings.reverbSettings.HighEQGain
>> xaReverbSettings.reverbSettings.HighEQCutoff
>> xaReverbSettings.reverbSettings.RoomFilterFreq
>> xaReverbSettings.reverbSettings.RoomFilterMain
>> xaReverbSettings.reverbSettings.RoomFilterHF
>> xaReverbSettings.reverbSettings.ReflectionsGain
>> xaReverbSettings.reverbSettings.ReverbGain
>> xaReverbSettings.reverbSettings.DecayTime
>> xaReverbSettings.reverbSettings.Density
>> xaReverbSettings.reverbSettings.RoomSize;
result << xaReverbSettings;
}
return result;
}
typedef char char2048;
// ?Load_char2048Array@@YAX_NH@Z at 0x822a5060
QVector<char2048> Assets::Load_char2048Array(QDataStream *aStream, size_t count)
{
QVector<char2048> result;
for (int i = 0; i < count; i++) {
char2048 char2048_;
*aStream >> char2048_;
result << char2048_;
}
return result;
}
// ?Load_DObjAnimMatArray@@YAX_NH@Z at 0x822a5078
QVector<DObjAnimMat> Assets::Load_DObjAnimMatArray(QDataStream *aStream, int count)
{
QVector<DObjAnimMat> result;
for (int i = 0; i < count; i++) {
DObjAnimMat dObjAnimMat;
*aStream
>> dObjAnimMat.quat[0]
>> dObjAnimMat.quat[1]
>> dObjAnimMat.quat[2]
>> dObjAnimMat.quat[3]
>> dObjAnimMat.trans[0]
>> dObjAnimMat.trans[1]
>> dObjAnimMat.trans[2]
>> dObjAnimMat.transWeight;
result << dObjAnimMat;
}
return result;
}
// ?Load_XBoneInfoArray@@YAX_NH@Z at 0x822a5090
QVector<XBoneInfo> Assets::Load_XBoneInfoArray(QDataStream *aStream, int count)
{
QVector<XBoneInfo> result;
for (int i = 0; i < count; i++) {
XBoneInfo xBoneInfo;
*aStream
>> xBoneInfo.bounds[0][0]
>> xBoneInfo.bounds[0][1]
>> xBoneInfo.bounds[0][2]
>> xBoneInfo.bounds[1][0]
>> xBoneInfo.bounds[1][1]
>> xBoneInfo.bounds[1][2]
>> xBoneInfo.offset[0]
>> xBoneInfo.offset[1]
>> xBoneInfo.offset[2]
>> xBoneInfo.radiusSquared;
result << xBoneInfo;
}
return result;
}
typedef unsigned __int16 UShortVec[3];
// ?Load_UShortVecArray@@YAX_NH@Z at 0x822a50b0
QVector<UShortVec> Assets::Load_UShortVecArray(QDataStream *aStream, int count)
{
QVector<UShortVec> result;
for (int i = 0; i < count; i++) {
UShortVec uShortVec;
*aStream
>> uShortVec[0]
>> uShortVec[1]
>> uShortVec[2];
result << uShortVec;
}
return result;
}
typedef unsigned __int8 ByteVec[3];
// ?Load_ByteVecArray@@YAX_NH@Z at 0x822a50d0
QVector<ByteVec> Assets::Load_ByteVecArray(QDataStream *aStream, int count)
{
QVector<ByteVec> result;
for (int i = 0; i < count; i++) {
ByteVec byteVec;
*aStream
>> byteVec[0]
>> byteVec[1]
>> byteVec[2];
result << byteVec;
}
return result;
}
// ?Load_dmaterial_tArray@@YAX_NH@Z at 0x822a50f0
QVector<dmaterial_t> Assets::Load_dmaterial_tArray(QDataStream *aStream, int count)
{
QVector<dmaterial_t> result;
for (int i = 0; i < count; i++) {
dmaterial_t dmaterial;
for (int j = 0; j < 64; j++) {
*aStream >> dmaterial.material[j];
}
*aStream
>> dmaterial.surfaceFlags
>> dmaterial.contentFlags;
result << dmaterial;
}
return result;
}
// ?Load_XString@@YAX_N@Z at 0x822a5110
void Assets::Load_XString(QDataStream *aStream)
{
const char *v3; // r11
qint32 stringPtr;
*aStream >> stringPtr;
if (stringPtr)
{
if (stringPtr == -1)
{
//Load_XStringCustom(v1);
}
else
{
// Resolve pointer to g_streamBlocks contents
//*varXString = (const char *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(stringPtr - 1) >> 26) & 0x38)))[(stringPtr - 1) & 0x1FFFFFFF];
}
}
}
// See if this actually needs to be const char
//typedef const char ConstChar;
typedef QChar ConstChar;
// ?Load_ConstCharArray@@YAX_NH@Z at 0x822a51b0
QVector<ConstChar> Assets::Load_ConstCharArray(QDataStream *aStream, size_t count)
{
QVector<ConstChar> result;
for (int i = 0; i < count; i++) {
ConstChar constChar;
*aStream >> constChar;
result << constChar;
}
return result;
}
typedef unsigned __int16 ScriptString;
// ?Load_ScriptString@@YAX_N@Z at 0x822a51c8
ScriptString Assets::Load_ScriptString(QDataStream *aStream)
{
ScriptString result;
*aStream >> result;
return result;
// Might need to resolve contents to the value in varXAssetList?
//*varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings
// + __ROL4__(*varScriptString, 2));
}
typedef unsigned __int16 UnsignedShort;
// ?Load_UnsignedShortArray@@YAX_NH@Z at 0x822a5220
QVector<UnsignedShort> Assets::Load_UnsignedShortArray(QDataStream *aStream, int count)
{
QVector<UnsignedShort> result;
for (int i = 0; i < count; i++) {
UnsignedShort unsignedShort;
*aStream >> unsignedShort;
result << unsignedShort;
}
return result;
}
struct XQuat2 {
__int16 u[2];
};
// ?Load_XQuat2@@YAX_N@Z at 0x822a5250
XQuat2 Assets::Load_XQuat2(QDataStream *aStream)
{
XQuat2 xQuat2;
*aStream
>> xQuat2.u[0]
>> xQuat2.u[1];
return xQuat2;
}
// ?Load_XQuat2Array@@YAX_NH@Z at 0x822a5238
QVector<XQuat2> Assets::Load_XQuat2Array(QDataStream *aStream, int count)
{
QVector<XQuat2> result;
for (int i = 0; i < count; i++) {
result << Load_XQuat2(aStream);
}
return result;
}
// ?Load_ushortArray@@YAX_NH@Z at 0x822a5268
QVector<ushort> Assets::Load_ushortArray(QDataStream *aStream, int count)
{
QVector<ushort> result;
for (int i = 0; i < count; i++) {
ushort ushort_;
*aStream >> ushort_;
result << ushort_;
}
return result;
}
// ?Load_shortArray@@YAX_NH@Z at 0x822a5280
QVector<short> Assets::Load_shortArray(QDataStream *aStream, int count)
{
QVector<short> result;
for (int i = 0; i < count; i++) {
short short_;
*aStream >> short_;
result << short_;
}
return result;
}
struct vec3_t {
float v[3];
};
// ?Load_vec3_t@@YAX_N@Z at 0x822a52b8
vec3_t Assets::Load_vec3_t(QDataStream *aStream)
{
vec3_t result;
*aStream
>> result.v[0]
>> result.v[1]
>> result.v[2];
return result;
}
// ?Load_vec3_tArray@@YAX_NH@Z at 0x822a5298
QVector<vec3_t> Assets::Load_vec3_tArray(QDataStream *aStream, int count)
{
QVector<vec3_t> result;
for (int i = 0; i < count; i++) {
result << Load_vec3_t(aStream);
}
return result;
}
struct vec2_t {
float v[2];
};
// ?Load_vec2_tArray@@YAX_NH@Z at 0x822a52d0
QVector<vec2_t> Assets::Load_vec2_tArray(QDataStream *aStream, int count)
{
QVector<vec2_t> result;
for (int i = 0; i < count; i++) {
vec2_t vec2;
*aStream
>> vec2.v[0]
>> vec2.v[1];
result << vec2;
}
return result;
}
typedef unsigned __int8 raw_byte16;
// ?Load_raw_byte16Array@@YAX_NH@Z at 0x822a52e8
QVector<raw_byte16> Assets::Load_raw_byte16Array(QDataStream *aStream, size_t count)
{
QVector<raw_byte16> result;
for (int i = 0; i < count; i++) {
raw_byte16 raw_byte16_;
*aStream >> raw_byte16_;
result << raw_byte16_;
}
return result;
}
typedef unsigned __int8 raw_byte;
// ?Load_raw_byteArray@@YAX_NH@Z at 0x822a5300
QVector<raw_byte> Assets::Load_raw_byteArray(QDataStream *aStream, size_t count)
{
QVector<raw_byte> result;
for (int i = 0; i < count; i++) {
raw_byte raw_byte_;
*aStream >> raw_byte_;
result << raw_byte_;
}
return result;
}
typedef unsigned int raw_uint128;
// ?Load_raw_uint128Array@@YAX_NH@Z at 0x822a5318
QVector<raw_uint128> Assets::Load_raw_uint128Array(QDataStream *aStream, int count)
{
QVector<raw_uint128> result;
for (int i = 0; i < count; i++) {
raw_uint128 raw_uint128_;
*aStream >> raw_uint128_;
result << raw_uint128_;
}
return result;
}
typedef unsigned int raw_uint;
// ?Load_raw_uintArray@@YAX_NH@Z at 0x822a5330
QVector<raw_uint> Assets::Load_raw_uintArray(QDataStream *aStream, int count)
{
QVector<raw_uint> result;
for (int i = 0; i < count; i++) {
raw_uint raw_uint_;
*aStream >> raw_uint_;
result << raw_uint_;
}
return result;
}
// ?Load_float@@YAX_N@Z at 0x822a5360
float Assets::Load_float(QDataStream *aStream)
{
float result;
*aStream >> result;
return result;
}
// ?Load_floatArray@@YAX_NH@Z at 0x822a5348
QVector<float> Assets::Load_floatArray(QDataStream *aStream, int count)
{
QVector<float> result;
for (int i = 0; i < count; i++) {
result << Load_float(aStream);
}
return result;
}
// ?Load_uint@@YAX_N@Z at 0x822a5390
uint Assets::Load_uint(QDataStream *aStream)
{
uint result;
*aStream >> result;
return result;
}
// ?Load_uintArray@@YAX_NH@Z at 0x822a5378
QVector<uint> Assets::Load_uintArray(QDataStream *aStream, int count)
{
QVector<uint> result;
for (int i = 0; i < count; i++) {
result << Load_uint(aStream);
}
return result;
}
// ?Load_DWORDArray@@YAX_NH@Z at 0x822a53a8
QVector<DWORD> Assets::Load_DWORDArray(QDataStream *aStream, int count)
{
QVector<DWORD> result;
for (int i = 0; i < count; i++) {
DWORD DWORD_;
*aStream >> DWORD_;
result << DWORD_;
}
return result;
}
typedef unsigned __int8 byte4096;
// ?Load_byte4096Array@@YAX_NH@Z at 0x822a53c0
QVector<byte4096> Assets::Load_byte4096Array(QDataStream *aStream, size_t count)
{
QVector<byte4096> result;
for (int i = 0; i < count; i++) {
byte4096 byte4096_;
*aStream >> byte4096_;
result << byte4096_;
}
return result;
}
// ?Load_int@@YAX_N@Z at 0x822a53f0
int Assets::Load_int(QDataStream *aStream)
{
int result;
*aStream >> result;
return result;
}
// ?Load_intArray@@YAX_NH@Z at 0x822a53d8
QVector<int> Assets::Load_intArray(QDataStream *aStream, int count)
{
QVector<int> result;
for (int i = 0; i < count; i++) {
result << Load_int(aStream);
}
return result;
}
// ?Load_char@@YAX_N@Z at 0x822a5420
char Assets::Load_char(QDataStream *aStream)
{
char result;
*aStream >> result;
return result;
}
// ?Load_charArray@@YAX_NH@Z at 0x822a5408
QVector<char> Assets::Load_charArray(QDataStream *aStream, size_t count)
{
QVector<char> result;
for (int i = 0; i < count; i++) {
result << Load_char(aStream);
}
return result;
}
// ?Load_byteArray@@YAX_NH@Z at 0x822a5438
QVector<byte> Assets::Load_byteArray(QDataStream *aStream, size_t count)
{
QVector<byte> result;
for (int i = 0; i < count; i++) {
byte byte_;
*aStream >> byte_;
result << byte_;
}
return result;
}
// ?Load_GfxWorldDpvsPlanes@@YAX_N@Z at 0x822a5450
GfxWorldDpvsPlanes Assets::Load_GfxWorldDpvsPlanes(QDataStream *aStream, GfxWorld aGfxWorld)
{
GfxWorldDpvsPlanes result;
*aStream
>> result.cellCount
>> result.planesPtr
>> result.nodesPtr
>> result.sceneEntCellBitsPtr;
if (result.planesPtr)
{
if (result.planesPtr == -1)
{
for (int i = 0; i < aGfxWorld.planeCount; i++) {
gfxWorldDpvsPlanes.planes << Load_cplane_t(aStream);
}
}
else
{
// Resolve to content in g_streamBlocks
//varGfxWorldDpvsPlanes->planes = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)&varGfxWorldDpvsPlanes->planes[-1].pad[1] >> 26) & 0x38)))[(int)&varGfxWorldDpvsPlanes->planes[-1].pad[1] & 0x1FFFFFFF];
}
}
if (result.nodesPtr)
{
for (int i = 0; i < aGfxWorld.nodeCount; i++) {
ushort ushort_;
*aStream >> ushort_;
result.nodes << ushort_;
}
}
if (result.sceneEntCellBitsPtr)
{
for (int i = 0; i < (result.cellCount << 10); i++) {
unsigned int uint_;
*aStream >> uint_;
result.sceneEntCellBits << uint_;
}
}
return result;
}
// ?Load_GfxWorldDpvsDynamic@@YAX_N@Z at 0x822a5580
GfxWorldDpvsDynamic Assets::Load_GfxWorldDpvsDynamic(QDataStream *aStream, GfxWorld aGfxWorld)
{
GfxWorldDpvsDynamic result;
*aStream
>> result.dynEntClientWordCount[0]
>> result.dynEntClientWordCount[1]
>> result.dynEntClientCount[0]
>> result.dynEntClientCount[1]
>> result.dynEntCellBitsPtrs[0]
>> result.dynEntCellBitsPtrs[1]
>> result.dynEntVisDataPtrs[0][0]
>> result.dynEntVisDataPtrs[0][1]
>> result.dynEntVisDataPtrs[0][2]
>> result.dynEntVisDataPtrs[1][0]
>> result.dynEntVisDataPtrs[1][1]
>> result.dynEntVisDataPtrs[1][2];
if (result.dynEntCellBitsPtrs[0])
{
//for (int i = 0; i < aGfxWorld.dpvsPlanes.cellCount * gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) {
*aStream >> result.dynEntCellBits[0];
//}
}
if (result.dynEntCellBitsPtrs[1])
{
//for (int i = 0; i < aGfxWorld.dpvsPlanes.cellCount * gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) {
*aStream >> result.dynEntCellBits[1];
//}
}
if (result.dynEntVisDataPtrs[0][0])
{
//for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) {
*aStream >> result.dynEntVisData[0][0];
//}
}
if (result.dynEntVisDataPtrs[1][0])
{
//for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[1]; i++) {
*aStream >> result.dynEntVisData[1][0];
//}
}
if (result.dynEntVisDataPtrs[0][1])
{
//for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) {
*aStream >> result.dynEntVisData[0][1];
//}
}
if (result.dynEntVisDataPtrs[1][1])
{
//for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[1]; i++) {
*aStream >> result.dynEntVisData[1][1];
//}
}
if (result.dynEntVisDataPtrs[0][2])
{
//for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[0]; i++) {
*aStream >> result.dynEntVisData[0][2];
//}
}
if (result.dynEntVisDataPtrs[1][2])
{
//for (int i = 0; i < gfxWorldDpvsDynamic.dynEntClientWordCount[1]; i++) {
*aStream >> result.dynEntVisData[1][2];
//}
}
return result;
}
// ?Load_GfxLightRegionHull@@YAX_N@Z at 0x822a57d0
GfxLightRegionHull Assets::Load_GfxLightRegionHull(QDataStream *aStream)
{
unsigned int axisCount; // r11
unsigned __int8 *v2; // r4
GfxLightRegionHull result;
*aStream
>> result.kdopMidPoint[0]
>> result.kdopMidPoint[1]
>> result.kdopMidPoint[2]
>> result.kdopMidPoint[3]
>> result.kdopMidPoint[4]
>> result.kdopMidPoint[5]
>> result.kdopMidPoint[6]
>> result.kdopMidPoint[7]
>> result.kdopMidPoint[8]
>> result.kdopHalfSize[0]
>> result.kdopHalfSize[1]
>> result.kdopHalfSize[2]
>> result.kdopHalfSize[3]
>> result.kdopHalfSize[4]
>> result.kdopHalfSize[5]
>> result.kdopHalfSize[6]
>> result.kdopHalfSize[7]
>> result.kdopHalfSize[8]
>> result.axisCount
>> result.axisPtr;
if (result.axisPtr)
{
for (int i = 0; i < result.axisCount; i++) {
GfxLightRegionAxis axis;
*aStream
>> axis.dir[0]
>> axis.dir[1]
>> axis.dir[2]
>> axis.midPoint
>> axis.halfSize;
result.axis << axis;
}
}
return result;
}
unsigned __int16 __ROL4__(unsigned __int16 value, unsigned __int16 bits) {
// Ensure that the rotation is within bounds
bits = bits % 32; // In case someone passes a value greater than 31
return (value << bits) | (value >> (8 - bits));
}
// ?Load_GfxShadowGeometry@@YAX_N@Z at 0x822a5850
GfxShadowGeometry Assets::Load_GfxShadowGeometry(QDataStream *aStream)
{
GfxShadowGeometry result;
*aStream
>> result.surfaceCount
>> result.smodelCount
>> result.sortedSurfIndexPtr
>> result.smodelIndexPtr;
if (result.sortedSurfIndexPtr)
{
for (int i = 0; i < __ROL4__(result.surfaceCount, 1); i++) {
unsigned __int16 surfIndex;
*aStream >> surfIndex;
result.sortedSurfIndex << surfIndex;
}
}
if (result.smodelIndexPtr)
{
for (int i = 0; i < __ROL4__(result.smodelCount, 1); i++) {
unsigned __int16 smodelIndex;
*aStream >> smodelIndex;
result.smodelIndex << smodelIndex;
}
}
return result;
}
// ?Load_GfxWorldStreamInfo@@YAX_N@Z at 0x822a58f0
GfxWorldStreamInfo Assets::Load_GfxWorldStreamInfo(QDataStream *aStream)
{
GfxWorldStreamInfo result;
*aStream
>> result.aabbTreeCount
>> result.aabbTreesPtr
>> result.leafRefCount
>> result.leafRefsPtr;
if (result.aabbTreesPtr)
{
for (int i = 0; i < result.aabbTreeCount; i++) {
GfxStreamingAabbTree aabbTree;
*aStream
>> aabbTree.firstItem
>> aabbTree.itemCount
>> aabbTree.firstChild
>> aabbTree.childCount
>> aabbTree.mins[0]
>> aabbTree.mins[1]
>> aabbTree.mins[2]
>> aabbTree.maxs[0]
>> aabbTree.maxs[1]
>> aabbTree.maxs[2];
result.aabbTrees << aabbTree;
}
}
if (result.leafRefsPtr)
{
for (int i = 0; i < result.leafRefCount; i++) {
int leafRef;
*aStream >> leafRef;
result.leafRefs << leafRef;
}
}
return result;
}
// ?Load_GfxLightGrid@@YAX_N@Z at 0x822a59b0
GfxLightGrid Assets::Load_GfxLightGrid(QDataStream *aStream)
{
GfxLightGrid result;
*aStream
>> result.hasLightRegions
>> result.sunPrimaryLightIndex
>> result.mins[0]
>> result.mins[1]
>> result.mins[2]
>> result.maxs[0]
>> result.maxs[1]
>> result.maxs[2]
>> result.rowAxis
>> result.colAxis
>> result.rowDataStartPtr
>> result.rawRowDataSize
>> result.rawRowDataPtr
>> result.entryCount
>> result.entriesPtr
>> result.colorCount
>> result.colorsPtr;
if (result.rowDataStartPtr)
{
for (int i = 0; i < (result.maxs[result.rowAxis] - result.mins[result.rowAxis] + 1); i++) {
unsigned __int16 rowDataStart;
*aStream >> rowDataStart;
result.rowDataStart << rowDataStart;
}
}
if (result.rawRowDataPtr)
{
for (int i = 0; i < result.rawRowDataSize; i++) {
unsigned __int16 rawRowData;
*aStream >> rawRowData;
result.rawRowData << rawRowData;
}
}
if (result.entriesPtr)
{
for (int i = 0; i < result.entryCount; i++) {
GfxLightGridEntry entry;
*aStream
>> entry.colorsIndex
>> entry.primaryLightIndex
>> entry.needsTrace;
result.entries << entry;
}
}
if (result.colorsPtr)
{
for (int i = 0; i < result.colorCount; i++) {
result.colors << Load_GfxLightGridColors(aStream);
}
}
}
// ?Load_GfxWorldVertexLayerData@@YAX_N@Z at 0x822a5af8
GfxWorldVertexLayerData Assets::Load_GfxWorldVertexLayerData(QDataStream *aStream, GfxWorld aGfxWorld)
{
GfxWorldVertexLayerData result;
*aStream
>> result.dataPtr
>> result.layerVb.Format.__s0.Type
>> result.layerVb.Format.__s0.BaseAddress
>> result.layerVb.Format.__s0.Endian
>> result.layerVb.Format.__s0.Size
>> result.layerVb.Format.__s0.AddressClamp
//>> result.layerVb.Format.__s0.: 1;
>> result.layerVb.Format.__s0.RequestSize
>> result.layerVb.Format.__s0.ClampDisable
>> result.layerVb.Format.dword[0]
>> result.layerVb.Format.dword[1]
>> result.layerVb.Common
>> result.layerVb.ReferenceCount
>> result.layerVb.Fence
>> result.layerVb.ReadFence
>> result.layerVb.Identifier
>> result.layerVb.BaseFlush;
if (result.dataPtr)
{
for (int i = 0; i < aGfxWorld.vertexLayerDataSize; i++) {
unsigned __int8 dataPart;
*aStream >> dataPart;
result.data << dataPart;
}
}
aStream->skipRawData(0x20);
return result;
}
// ?Load_GfxWorldVertexData@@YAX_N@Z at 0x822a5bd0
GfxWorldVertexData Assets::Load_GfxWorldVertexData(QDataStream *aStream, GfxWorld aGfxWorld)
{
GfxWorldVertexData *v1; // r11
GfxWorldVertex *v2; // r4
unsigned int vertexCount; // r11
D3DVertexBuffer *p_worldVb; // r31
GfxWorldVertex *vertices; // r30
GfxWorldVertexData result;
*aStream
>> result.verticesPtr
>> result.worldVb.Format.__s0.Type
>> result.worldVb.Format.__s0.BaseAddress
>> result.worldVb.Format.__s0.Endian
>> result.worldVb.Format.__s0.Size
>> result.worldVb.Format.__s0.AddressClamp
//>> result.worldVb.Format.__s0.: 1;
>> result.worldVb.Format.__s0.RequestSize
>> result.worldVb.Format.__s0.ClampDisable
>> result.worldVb.Format.dword[0]
>> result.worldVb.Format.dword[1]
>> result.worldVb.Common
>> result.worldVb.ReferenceCount
>> result.worldVb.Fence
>> result.worldVb.ReadFence
>> result.worldVb.Identifier
>> result.worldVb.BaseFlush;
if (result.verticesPtr)
{
for (int i = 0; i < aGfxWorld.vertexCount; i++) {
GfxWorldVertex gfxWorldVertex;
*aStream
>> gfxWorldVertex.xyz[0]
>> gfxWorldVertex.xyz[1]
>> gfxWorldVertex.xyz[2]
>> gfxWorldVertex.binormalSign
>> gfxWorldVertex.color.array[0]
>> gfxWorldVertex.color.array[1]
>> gfxWorldVertex.color.array[2]
>> gfxWorldVertex.color.array[3]
>> gfxWorldVertex.texCoord[0]
>> gfxWorldVertex.texCoord[1]
>> gfxWorldVertex.lmapCoord[0]
>> gfxWorldVertex.lmapCoord[1]
>> gfxWorldVertex.normal.packed
>> gfxWorldVertex.tangent.packed;
result.vertices << gfxWorldVertex;
}
}
return result;
}
// ?Load_GfxAabbTree@@YAX_N@Z at 0x822a5da8
GfxAabbTree Assets::Load_GfxAabbTree(QDataStream *aStream)
{
unsigned __int16 *smodelIndexes; // r10
size_t v2; // r5
unsigned __int8 *v3; // r4
GfxAabbTree result;
*aStream
>> result.mins[0]
>> result.mins[1]
>> result.mins[2]
>> result.maxs[0]
>> result.maxs[1]
>> result.maxs[2]
>> result.childCount
>> result.surfaceCount
>> result.startSurfIndex
>> result.smodelIndexCount
>> result.smodelIndexesPtr
>> result.childrenOffset;
if (result.smodelIndexesPtr)
{
if (result.smodelIndexesPtr == -1)
{
for (int i = 0; i < result.smodelIndexCount; i++) {
unsigned __int16 smodelIndex;
*aStream >> smodelIndex;
result.smodelIndexes << smodelIndex;
}
}
else
{
// Resolve contents from g_streamBlocks
//varGfxAabbTree->smodelIndexes = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)varGfxAabbTree->smodelIndexes
// - 1) >> 26) & 0x38)))[((int)varGfxAabbTree->smodelIndexes - 1) & 0x1FFFFFFF];
}
}
return result;
}
// ?Load_GfxAabbTreeArray@@YAX_NH@Z at 0x822a75f0
QVector<GfxAabbTree> Assets::Load_GfxAabbTreeArray(QDataStream *aStream, int count)
{
QVector<GfxAabbTree> result;
for (int i = 0; i < count; i++) {
result << Load_GfxAabbTree(aStream);
}
return result;
}
// ?Load_GfxCell@@YAX_N@Z at 0x822a8af0
GfxCell Assets::Load_GfxCell(QDataStream *aStream)
{
GfxCell result;
*aStream
>> result.mins[0]
>> result.mins[1]
>> result.mins[2]
>> result.maxs[0]
>> result.maxs[1]
>> result.maxs[2]
>> result.aabbTreeCount
>> result.aabbTreePtr
>> result.portalCount
>> result.portalsPtr
>> result.cullGroupCount
>> result.cullGroupsPtr
>> result.reflectionProbeCount
>> result.reflectionProbesPtr;
if (result.aabbTreePtr)
{
result.aabbTree = Load_GfxAabbTreeArray(aStream, result.aabbTreeCount);
}
if (result.portalsPtr)
{
result.portals = Load_GfxPortalArray(1, result.portalCount);
}
if (result.cullGroupsPtr)
{
v4 = 4 * v1->cullGroupCount;
v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v5;
varint = (int *)v5;
v1->cullGroups = (int *)v5;
Load_Stream(1, v5, v4);
v1 = varGfxCell;
}
if (result.reflectionProbesPtr)
{
v6 = g_streamPos;
reflectionProbeCount = v1->reflectionProbeCount;
varbyte = g_streamPos;
v1->reflectionProbes = g_streamPos;
Load_Stream(1, v6, reflectionProbeCount);
}
}
// ?Load_GfxPortal@@YAX_N@Z at 0x822a5cb8
GfxPortal Assets::Load_GfxPortal(QDataStream *aStream)
{
GfxPortal *v1; // r11
GfxCell *cell; // r10
int vertexCount; // r10
unsigned __int8 *v4; // r4
GfxPortal result;
*aStream
>> result.writable.isQueued
>> result.writable.isAncestor
>> result.writable.recursionDepth
>> result.writable.hullPointCount
>> result.writable.hullPointPtrs[0]
>> result.writable.hullPointPtrs[1]
>> result.writable.queuedParentPtr
>> result.plane.coeffs[0]
>> result.plane.coeffs[1]
>> result.plane.coeffs[2]
>> result.plane.coeffs[3]
>> result.plane.side[0]
>> result.plane.side[1]
>> result.plane.side[2]
>> result.plane.pad
>> result.cellPtr
>> result.verticesPtr
>> result.vertexCount
>> result.hullAxis[0][0]
>> result.hullAxis[0][1]
>> result.hullAxis[0][2]
>> result.hullAxis[1][0]
>> result.hullAxis[1][1]
>> result.hullAxis[1][2];
if (result.cellPtr)
{
if (result.cellPtr == -1)
{
result.cell = Load_GfxCell(aStream);
}
else
{
// Resolve contents to g_streamBlocks
//varGfxPortal->cell = (GfxCell *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&varGfxPortal->cell[-1].reflectionProbes
// + 3) >> 26) & 0x38)))[((int)&varGfxPortal->cell[-1].reflectionProbes
// + 3) & 0x1FFFFFFF];
}
}
if (result.verticesPtr)
{
for (int i = 0; i < vertexCount + __ROL4__(vertexCount, 1); i++) {
float vertex;
*aStream >> vertex;
result.vertices[i] = vertex;
}
}
return result;
}
// ?Load_GfxPortalArray@@YAX_NH@Z at 0x822a7598
QVector<GfxPortal> Assets::Load_GfxPortalArray(QDataStream *aStream, int count)
{
QVector<GfxPortal> result;
for (int i = 0; i < count; i++) {
result << Load_GfxPortal(aStream);
}
return result;
}
QString Assets::Load_XStringCustom(QDataStream *aStream) {
QString result;
char stringChar;
*aStream >> stringChar;
while (stringChar != '\0') {
result += stringChar;
*aStream >> stringChar;
}
return result;
}
QString Assets::Load_XString(QDataStream *aStream)
{
QString result;
qint32 stringPtr;
*aStream >> stringPtr;
if (stringPtr == -1) {
result = Load_XStringCustom(aStream);
} else {
// Resolve to contents in g_streamBlocks
//*varXString = (const char *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v2 - 1) >> 26) & 0x38)))[(v2 - 1) & 0x1FFFFFFF];
}
return result;
}
// ?Load_RawFile@@YAX_N@Z at 0x822a5e60
RawFile Assets::Load_RawFile(QDataStream *aStream)
{
RawFile result;
*aStream
>> result.namePtr
>> result.len
>> result.bufferPtr;
result.name = Load_XString(aStream);
if (result.bufferPtr)
{
QByteArray buffer(result.len + 1, Qt::Uninitialized);
aStream->readRawData(buffer.data(), result.len + 1);
result.buffer = QString::fromUtf8(buffer);
}
return result
}
// ?Load_LocalizeEntry@@YAX_N@Z at 0x822a5ef0
LocalizeEntry Assets::Load_LocalizeEntry(QDataStream *aStream)
{
LocalizeEntry result;
*aStream
>> result.valuePtr
>> result.namePtr;
if (result.valuePtr == -1) {
result.value = Load_XStringCustom(aStream);
}
if (result.namePtr == -1) {
result.name = Load_XStringCustom(aStream);
}
return result;
}
// ?Load_operandInternalDataUnion@@YAX_N@Z at 0x822a6058
void Assets::Load_operandInternalDataUnion(QDataStream *aStream)
{
Operand *varOperand = new Operand;
QString varXString;
if ( varOperand->dataType == VAL_STRING )
{
varXString = (const char **)varoperandInternalDataUnion;
Load_XString(0);
}
}
// ?Load_ComPrimaryLight@@YAX_N@Z at 0x822a6098
ComPrimaryLight Assets::Load_ComPrimaryLight(QDataStream *aStream)
{
ComPrimaryLight result;
*aStream
>> result.type
>> result.canUseShadowMap
>> result.exponent
>> result.unused
>> result.color[0]
>> result.color[1]
>> result.color[2]
>> result.dir[0]
>> result.dir[1]
>> result.dir[2]
>> result.origin[0]
>> result.origin[1]
>> result.origin[2]
>> result.radius
>> result.cosHalfFovOuter
>> result.cosHalfFovInner
>> result.cosHalfFovExpanded
>> result.rotationLimit
>> result.translationLimit
>> result.defNamePtr;
if (result.defNamePtr == -1) {
result.defName = Load_XStringCustom(aStream);
}
return result;
}
// ?Load_CollisionPartition@@YAX_N@Z at 0x822a60e8
CollisionPartition Assets::Load_CollisionPartition(QDataStream *aStream)
{
CollisionPartition result;
*aStream
>> result.triCount
>> result.borderCount
>> result.firstTri
>> result.bordersPtr;
if (result.bordersPtr)
{
if (result.bordersPtr == -1)
{
result.borders = Load_CollisionBorder(aStream);
}
else
{
// Resolve contents from g_streamBlock
//varCollisionPartition->borders = (CollisionBorder *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&varCollisionPartition->borders[-1].length
// + 3) >> 26) & 0x38)))[((int)&varCollisionPartition->borders[-1].length + 3) & 0x1FFFFFFF];
}
}
return result;
}
CLeafBrushNodeLeaf Assets::Load_CLeafBrushNodeLeaf(QDataStream *aStream, int leafBrushCount)
{
CLeafBrushNodeLeaf result;
*aStream >> result.brushesPtr;
if (result.brushesPtr) {
if (result.brushesPtr == -1)
{
for (int i = 0; i < leafBrushCount; i++) {
unsigned int brush;
*aStream >> brush;
result.brushes << brush;
}
}
else
{
// Resolve contents from g_streamBlocks
//varcLeafBrushNodeLeaf_t->brushes = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)varcLeafBrushNodeLeaf_t->brushes
// - 1) >> 26) & 0x38)))[((int)varcLeafBrushNodeLeaf_t->brushes - 1) & 0x1FFFFFFF];
}
}
return result;
}
// ?Load_CLeafBrushNodeData@@YAX_N@Z at 0x822a61a0
CLeafBrushNodeData Assets::Load_CLeafBrushNodeData(QDataStream *aStream, int aNodeCount)
{
CLeafBrushNodeData result;
if (aNodeCount > 0)
{
result = Load_CLeafBrushNodeLeaf(aStream, aNodeCount);
}
return result;
}
// ?Load_MapEnts@@YAX_N@Z at 0x822a6278
MapEnts Assets::Load_MapEnts(QDataStream *aStream)
{
MapEnts results;
*aStream
>> results.namePtr
>> results.entityStringPtr
>> results.numEntityChars;
if (results.namePtr == -1) {
results.name = Assets::Load_XString(aStream);
}
if (results.entityStringPtr)
{
QByteArray entityData(results.numEntityChars, Qt::Uninitialized);
aStream->readRawData(entityData.data(), results.numEntityChars);
results.entityString = QString::fromUtf8(entityData);
}
return results;
}
// ?Load_FxTrailDef@@YAX_N@Z at 0x822a6308
FxTrailDef Assets::Load_FxTrailDef(QDataStream *aStream)
{
FxTrailDef result;
*aStream
>> result.scrollTimeMsec
>> result.repeatDist
>> result.splitDist
>> result.vertCount
>> result.vertsPtr
>> result.indCount
>> result.indsPtr;
if (result.vertsPtr)
{
for (int i = 0; i < result.vertCount; i++) {
FxTrailVertex fxTrailVertex;
*aStream
>> fxTrailVertex.pos[0]
>> fxTrailVertex.pos[1]
>> fxTrailVertex.normal[0]
>> fxTrailVertex.normal[1]
>> fxTrailVertex.texCoord;
result.verts << fxTrailVertex;
}
}
if (result.indsPtr)
{
for (int i = 0; i < result.indCount; i++) {
ushort ind;
*aStream >> ind;
result.inds << ind;
}
}
return result;
}
// ?Load_FxEffectDefRef@@YAX_N@Z at 0x822a63d0
FxEffectDefRef Assets::Load_FxEffectDefRef(QDataStream *aStream)
{
FxEffectDefRef result;
*aStream >> result.namePtr;
if (result.namePtr == -1) {
Load_XStringCustom(aStream);
}
//if ( varFxEffectDefRef->handle )
// v2->handle = (const FxEffectDef *)DB_FindXAssetHeader(
// (XAssetHeader *)0x1A,
// (XAssetType)varFxEffectDefRef->handle,
// v1);
return result;
}
// ?Load_GameWorldMp@@YAX_N@Z at 0x822a6430
GameWorldMp Assets::Load_GameWorldMp(QDataStream *aStream)
{
GameWorldMp result;
*aStream >> result.namePtr;
if (result.namePtr == -1) {
result.name = Load_XStringCustom(aStream);
}
return result;
}
// ?LoadPathNodeTreeArray@@YAX_NH@Z at 0x822a6488
QVector<PathNodeTree> Assets::LoadPathNodeTreeArray(QDataStream *aStream, int count)
{
QVector<PathNodeTree> result;
for (int i = 0; i < count; i++) {
PathNodeTree pathnode_tree;
*aStream
>> pathnode_tree.axis
>> pathnode_tree.dist
>> pathnode_tree.infoPtr;
if (pathnode_tree.infoPtr)
{
if (pathnode_tree.infoPtr == -1 )
{
Load_PathNodeTree(1);
}
else
{
// Resolve contents from g_streamBlocks
//*varpathnode_tree_ptr = (pathnode_tree_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v4 - 1) >> 26) & 0x38)))[(v4 - 1) & 0x1FFFFFFF];
}
}
result << pathnode_tree;
}
return result;
}
// ?Load_PathNodeTreeNodes@@YAX_N@Z at 0x822a6540
PathNodeTreeNodes Assets::Load_PathNodeTreeNodes(QDataStream *aStream)
{
PathNodeTreeNodes result;
*aStream >> result.nodeCount;
for (int i = 0; i < result.nodeCount; i++) {
quint16 node;
*aStream >> node;
result.nodes << node;
}
return result;
}
// ?Load_PathNodeConstant@@YAX_N@Z at 0x822a65b8
PathNodeConstant Assets::Load_PathNodeConstant(QDataStream *aStream)
{
PathNodeConstant result;
*aStream
>> result.type
>> result.spawnflags
>> result.targetname
>> result.script_linkName
>> result.script_noteworthy
>> result.target
>> result.animscript
>> result.animscriptfunc
>> result.vOrigin[0]
>> result.vOrigin[1]
>> result.vOrigin[2]
>> result.fAngle
>> result.forward[0]
>> result.forward[1]
>> result.fRadius
>> result.minUseDistSq
>> result.wOverlapNode[0]
>> result.wOverlapNode[1]
>> result.wChainId
>> result.wChainDepth
>> result.wChainParent
>> result.totalLinkCount
>> result.wChainId
>> result.LinksPtr;
// idfk what this does
// Load_Stream(0, varpathnode_constant_t, 0x44u);
// varScriptString = &varpathnode_constant_t->targetname;
// Load_Stream(0, &varpathnode_constant_t->targetname, 2u);
// *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings
// + __ROL4__(*varScriptString, 2));
// varScriptString = &varpathnode_constant_t->script_linkName;
// Load_Stream(0, &varpathnode_constant_t->script_linkName, 2u);
// *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings
// + __ROL4__(*varScriptString, 2));
// varScriptString = &varpathnode_constant_t->script_noteworthy;
// Load_Stream(0, &varpathnode_constant_t->script_noteworthy, 2u);
// *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings
// + __ROL4__(*varScriptString, 2));
// varScriptString = &varpathnode_constant_t->target;
// Load_Stream(0, &varpathnode_constant_t->target, 2u);
// *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings
// + __ROL4__(*varScriptString, 2));
// varScriptString = &varpathnode_constant_t->animscript;
// Load_Stream(0, &varpathnode_constant_t->animscript, 2u);
// v1 = varpathnode_constant_t;
// *varScriptString = (unsigned __int16)*(const char **)((char *)varXAssetList->stringList.strings
// + __ROL4__(*varScriptString, 2));
// if (result.LinksPtr)
// {
// totalLinkCount = v1->totalLinkCount;
// v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
// v1->Links = (PathLink *)v3;
// g_streamPos = v3;
// varpathlink_t = (pathlink_s *)v3;
// Load_Stream(1, v3, 4 * (totalLinkCount + __ROL4__(totalLinkCount, 1)));
// }
}
// ?Load_XModelCollSurfArray@@YAX_NH@Z at 0x822a6780
QVector<XModelCollSurf> Assets::Load_XModelCollSurfArray(QDataStream *aStream, int count)
{
QVector<XModelCollSurf> result;
for (int i = 0; i < count; i++) {
XModelCollSurf xModelCollSurf_s;
*aStream
>> xModelCollSurf_s.mins[0]
>> xModelCollSurf_s.mins[1]
>> xModelCollSurf_s.mins[2]
>> xModelCollSurf_s.maxs[0]
>> xModelCollSurf_s.maxs[1]
>> xModelCollSurf_s.maxs[2]
>> xModelCollSurf_s.boneIdx
>> xModelCollSurf_s.contents
>> xModelCollSurf_s.surfFlags;
result << xModelCollSurf_s;
}
return result;
}
// ?Load_PhysPreset@@YAX_N@Z at 0x822a6850
PhysPreset Assets::Load_PhysPreset(QDataStream *aStream)
{
PhysPreset result;
*aStream
>> result.namePtr
>> result.type
>> result.mass
>> result.bounce
>> result.friction
>> result.bulletForceScale
>> result.explosiveForceScale
>> result.sndAliasPrefixPtr
>> result.piecesSpreadFraction
>> result.piecesUpwardVelocity
>> result.tempDefaultToCylinder;
if (result.namePtr == -1) {
result.name = Load_XStringCustom(aStream);
}
if (result.sndAliasPrefixPtr == -1) {
result.sndAliasPrefix = Load_XStringCustom(aStream);
}
return result;
}
// ?Load_MaterialArgumentDef@@YAX_N@Z at 0x822a68c8
MaterialArgumentDef Assets::Load_MaterialArgumentDef(QDataStream *aStream, MaterialShaderArgument aArgument)
{
MaterialArgumentDef result;
if (aArgument.type == 1 || aArgument.type == 7)
{
if (aArgument.u.codeSampler)
{
if (aArgument.u.codeSampler == -1)
{
//varMaterialArgumentDef->codeSampler = (unsigned int)v3;
//varfloat = (float *)v3;
//Load_Stream(1, v3, 0x10u);
}
else
{
// Resolve contents from g_streamBlocks
//varMaterialArgumentDef->codeSampler = (unsigned int)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((codeSampler - 1) >> 26) & 0x38)))[(codeSampler - 1) & 0x1FFFFFFF];
}
}
}
return result;
}
// ?Load_GfxPixelShaderLoadDef@@YAX_N@Z at 0x822a6950
GfxPixelShaderLoadDef Assets::Load_GfxPixelShaderLoadDef(QDataStream *aStream)
{
GfxPixelShaderLoadDef result;
*aStream
>> result.cachedPartPtr
>> result.physicalPartPtr
>> result.cachedPartSize
>> result.physicalPartSize;
if (result.physicalPartPtr)
{
for (int i = 0; i < result.physicalPartSize; i++) {
unsigned __int8 physicalPart;
*aStream >> physicalPart;
result.physicalPart << physicalPart;
}
}
if (result.cachedPartPtr)
{
for (int i = 0; i < result.cachedPartSize; i++) {
unsigned __int8 cachedPart;
*aStream >> cachedPart;
result.cachedPart << cachedPart;
}
}
return result;
}
// ?Load_GfxVertexShaderLoadDef@@YAX_N@Z at 0x822a69f8
GfxVertexShaderLoadDef Assets::Load_GfxVertexShaderLoadDef(QDataStream *aStream)
{
GfxVertexShaderLoadDef result;
*aStream
>> result.cachedPartPtr
>> result.physicalPartPtr
>> result.cachedPartSize
>> result.physicalPartSize;
if (result.physicalPartPtr)
{
for (int i = 0; i < result.physicalPartSize; i++) {
unsigned __int8 physicalPart;
*aStream >> physicalPart;
result.physicalPart << physicalPart;
}
}
if (result.cachedPartPtr)
{
for (int i = 0; i < result.cachedPartSize; i++) {
unsigned __int8 cachedPart;
*aStream >> cachedPart;
result.cachedPart << cachedPart;
}
}
return result;
}
// ?Load_GfxImagePixels@@YAX_N@Z at 0x822a6aa0
QVector<quint8> Assets::Load_GfxImagePixels(QDataStream *aStream, GfxImage aGfxImage)
{
QVector<quint8> result;
if (aGfxImage.pixelsPtr)
{
aStream->skipRawData(aGfxImage.cardMemory.platform[0]);
}
return result;
}
// ?Load_GfxTexture@@YAX_N@Z at 0x822a6b28
GfxTexture Assets::Load_GfxTexture(QDataStream *aStream, GfxTexture aGfxTexture, GfxImageLoadDef aGfxImageLoadDef)
{
unsigned __int8 *v1; // r4
D3DBaseTexture *basemap; // r11
unsigned __int8 *v3; // r4
unsigned __int8 *v4; // r4
if ((aGfxImageLoadDef.flags & 4) != 0)
{
if (aGfxTexture.basemap)
{
v1 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v1;
varGfxTexture->basemap = (D3DBaseTexture *)v1;
varIDirect3DCubeTexture9 = (D3DCubeTexture *)v1;
Load_Stream(1, v1, 0x34u);
}
}
else
{
basemap = aGfxTexture.basemap;
if ( (aGfxImageLoadDef.flags & 8) != 0 )
{
if ( basemap )
{
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
aGfxTexture.basemap = (D3DBaseTexture *)v3;
varIDirect3DVolumeTexture9 = (D3DVolumeTexture *)v3;
Load_Stream(1, v3, 0x34u);
}
}
else if ( basemap )
{
v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v4;
aGfxTexture.basemap = (D3DBaseTexture *)v4;
varIDirect3DTexture9 = (D3DTexture *)v4;
Load_Stream(1, v4, 0x34u);
}
}
}
// ?Load_XSurfaceVertexInfo@@YAX_N@Z at 0x822a6c08
XSurfaceVertexInfo Assets::Load_XSurfaceVertexInfo(QDataStream *aStream)
{
unsigned __int16 *vertsBlend; // r10
int v2; // r10
int v3; // r9
int v4; // r8
int v5; // r6
unsigned __int8 *v6; // r4
XSurfaceVertexInfo result;
*aStream
>> result.vertCount[0]
>> result.vertCount[1]
>> result.vertCount[2]
>> result.vertCount[3]
>> result.vertsBlendPtr;
if (result.vertsBlendPtr)
{
if (result.vertsBlendPtr == -1)
{
aStream->skipRawData(2 * (7 * result.vertCount[3] + 5 * result.vertCount[2] + 3 * result.vertCount[1] + result.vertCount[0]));
}
else
{
// Resolve contents from g_streamBlocks
//varXSurfaceVertexInfo->vertsBlend = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)varXSurfaceVertexInfo->vertsBlend
// - 1) >> 26) & 0x38)))[((int)varXSurfaceVertexInfo->vertsBlend - 1) & 0x1FFFFFFF];
}
}
}
// ?Load_XSurfaceCollisionTree@@YAX_N@Z at 0x822a6d00
XSurfaceCollisionTree Assets::Load_XSurfaceCollisionTree(QDataStream *aStream)
{
XSurfaceCollisionTree result;
*aStream
>> result.trans[0]
>> result.trans[1]
>> result.trans[2]
>> result.scale[0]
>> result.scale[1]
>> result.scale[2]
>> result.nodeCount
>> result.leafCount;
for (int i = 0; i < result.nodeCount; i++) {
XSurfaceCollisionNode collisionNode;
*aStream
>> collisionNode.aabb.mins[0]
>> collisionNode.aabb.mins[1]
>> collisionNode.aabb.mins[2]
>> collisionNode.aabb.maxs[0]
>> collisionNode.aabb.maxs[1]
>> collisionNode.aabb.maxs[2]
>> collisionNode.childBeginIndex
>> collisionNode.childCount;
result.nodes << collisionNode;
}
for (int i = 0; i < result.leafCount; i++) {
XSurfaceCollisionLeaf collisionLeaf;
*aStream >> collisionLeaf.triangleBeginIndex;
result.leafs << collisionLeaf;
}
return result;
}
// ?Load_MaterialInfo@@YAX_N@Z at 0x822a6dc0
MaterialInfo Assets::Load_MaterialInfo(QDataStream *aStream)
{
MaterialInfo result;
*aStream
>> result.namePtr
>> result.gameFlags
>> result.sortKey
>> result.textureAtlasRowCount
>> result.textureAtlasColumnCount
>> result.drawSurf.objectId
>> result.drawSurf.reflectionProbeIndex
>> result.drawSurf.customIndex
>> result.drawSurf.materialSortedIndex
>> result.drawSurf.prepass
>> result.drawSurf.primaryLightIndex
>> result.drawSurf.surfType
>> result.drawSurf.primarySortKey
>> result.drawSurf.unused
>> result.surfaceTypeBits;
result.name = Load_XStringCustom(aStream);
return result;
}
// ?Load_XAUDIOCHANNELMAP@@YAX_N@Z at 0x822a6e10
XAUDIOCHANNELMAP Assets::Load_XAUDIOCHANNELMAP(QDataStream *aStream)
{
XAUDIOCHANNELMAP result;
*aStream
>> result.EntryCount
>> result.paEntriesPtr;
if (result.paEntriesPtr)
{
for (int i = 0; i < result.EntryCount; i++) {
XAUDIOCHANNELMAPENTRY entry;
*aStream
>> entry.InputChannel
>> entry.OutputChannel
>> entry.Volume;
result.paEntries << entry;
}
}
return result;
}
// ?Load_SndCurve@@YAX_N@Z at 0x822a6e88
SndCurve Assets::Load_SndCurve(QDataStream *aStream)
{
SndCurve result;
*aStream
>> result.filenamePtr
>> result.knotCount;
for (int i = 0; i < 8; i++) {
*aStream
>> result.knots[i][0]
>> result.knots[i][1];
}
if (result.filenamePtr == -1) {
result.filename = Load_XStringCustom(aStream);
}
return result;
}
// ?Load_StreamFileNameRaw@@YAX_N@Z at 0x822a6ee0
StreamFileNameRaw Assets::Load_StreamFileNameRaw(QDataStream *aStream)
{
StreamFileNameRaw result;
*aStream
>> result.dirPtr
>> result.namePtr;
if (result.dirPtr == -1) {
result.dir = Load_XStringCustom(aStream);
}
if (result.namePtr == -1) {
result.name = Load_XStringCustom(aStream);
}
return result;
}
// ?Load_SndDriverGlobals@@YAX_N@Z at 0x822a6f48
SndDriverGlobals Assets::Load_SndDriverGlobals(QDataStream *aStream)
{
SndDriverGlobals result;
*aStream
>> result.reverbSettingsPtr
>> result.namePtr;
if (result.reverbSettingsPtr)
{
XaReverbSettings xaReverbSettings;
*aStream
>> xaReverbSettings.presetOverridden
>> xaReverbSettings.reverbSettings.ReflectionsDelay
>> xaReverbSettings.reverbSettings.ReverbDelay
>> xaReverbSettings.reverbSettings.RearDelay
>> xaReverbSettings.reverbSettings.PositionLeft
>> xaReverbSettings.reverbSettings.PositionRight
>> xaReverbSettings.reverbSettings.PositionMatrixLeft
>> xaReverbSettings.reverbSettings.PositionMatrixRight
>> xaReverbSettings.reverbSettings.EarlyDiffusion
>> xaReverbSettings.reverbSettings.LateDiffusion
>> xaReverbSettings.reverbSettings.LowEQGain
>> xaReverbSettings.reverbSettings.LowEQCutoff
>> xaReverbSettings.reverbSettings.HighEQGain
>> xaReverbSettings.reverbSettings.HighEQCutoff
>> xaReverbSettings.reverbSettings.RoomFilterFreq
>> xaReverbSettings.reverbSettings.RoomFilterMain
>> xaReverbSettings.reverbSettings.RoomFilterHF
>> xaReverbSettings.reverbSettings.ReflectionsGain
>> xaReverbSettings.reverbSettings.ReverbGain
>> xaReverbSettings.reverbSettings.DecayTime
>> xaReverbSettings.reverbSettings.Density
>> xaReverbSettings.reverbSettings.RoomSize;
result.reverbSettings = xaReverbSettings;
}
if (result.namePtr == -1) {
result.name = Load_XStringCustom(aStream);
}
}
// ?Load_XaSeekTable@@YAX_N@Z at 0x822a6fe0
XaSeekTable Assets::Load_XaSeekTable(QDataStream *aStream)
{
XaSeekTable result;
*aStream
>> result.size
>> result.dataPtr;
if (result.dataPtr)
{
for (int i = 0; i < result.size; i++) {
unsigned int data;
*aStream >> data;
result.data << data;
}
}
}
// ?Load_XAUDIOPACKET_ALIGNED@@YAX_N@Z at 0x822a7058
XAUDIOPACKET_ALIGNED Assets::Load_XAUDIOPACKET_ALIGNED(QDataStream *aStream)
{
XAUDIOPACKET_ALIGNED result;
*aStream
>> result.pBufferPtr
>> result.BufferSize
>> result.LoopCount;
for (int i = 0; i < 6; i++) {
*aStream
>> result.XMALoop[i].LoopStart
>> result.XMALoop[i].LoopEnd
>> result.XMALoop[i].LoopSubframeEnd
>> result.XMALoop[i].LoopSubframeSkip;
}
*aStream >> result.pContextPtr;
if (result.pBufferPtr)
{
for (int i = 0; i < result.BufferSize; i++) {
char bufferChar;
*aStream >> bufferChar;
result.pBuffer << bufferChar;
}
}
if (result.pContextPtr)
{
*aStream >> result.pContext;
}
}
// ?Load_XAnimNotifyInfo@@YAX_N@Z at 0x822a70f8
XAnimNotifyInfo Assets::Load_XAnimNotifyInfo(QDataStream *aStream)
{
XAnimNotifyInfo result;
*aStream
>> result.name
>> result.time;
// Fill out parsing
aStream->skipRawData(2);
return result;
}
// ?Load_XAnimDynamicFrames@@YAX_N@Z at 0x822a7168
XAnimDynamicFrames Assets::Load_XAnimDynamicFrames(QDataStream *aStream,
XAnimPartTrans aXAnimPartTrans,
XAnimDynamicIndices aXAnimDynamicIndices,
XAnimDynamicFrames aXAnimDynamicFrames)
{
XAnimDynamicFrames result;
if (aXAnimPartTrans.smallTrans)
{
if (aXAnimDynamicIndices._1[0]) // Check this should be [0]
{
int readSize = aXAnimPartTrans.size + 1;
if (aXAnimPartTrans.size == 0)
readSize = 0;
// Fill out parsing
aStream->skipRawData(3 * readSize);
}
}
else if (aXAnimDynamicFrames._1)
{
int readSize = aXAnimPartTrans.size + 1;
if (aXAnimPartTrans.size == 0)
readSize = 0;
// Fill out parsing
aStream->skipRawData(6 * readSize);
}
return result;
}
// ?Load_XAnimDynamicIndicesTrans@@YAX_N@Z at 0x822a7228
XAnimDynamicIndices Assets::Load_XAnimDynamicIndicesTrans(QDataStream *aStream,
XAnimParts aXAnimParts,
XAnimPartTrans aXAnimPartTrans)
{
if (aXAnimParts.numframes >= 0x100u)
{
// Fill out parsing
aStream->skipRawData(2 * (aXAnimPartTrans.size + 1));
}
else
{
// Fill out parsing
aStream->skipRawData(aXAnimPartTrans.size + 1);
}
}
// ?Load_XAnimDynamicIndicesDeltaQuat@@YAX_N@Z at 0x822a7278
XAnimDynamicIndices Assets::Load_XAnimDynamicIndicesDeltaQuat(QDataStream *aStream,
XAnimDeltaPartQuat aXAnimDeltaPartQuat,
XAnimParts aXAnimParts)
{
XAnimDynamicIndices result;
if (aXAnimParts.numframes >= 0x100u)
{
// Fill out parsing
aStream->skipRawData(2 * (aXAnimDeltaPartQuat.size + 1));
}
else
{
// Fill out parsing
aStream->skipRawData(aXAnimDeltaPartQuat.size + 1);
}
return result;
}
// ?Load_XAnimIndices@@YAX_N@Z at 0x822a72c8
XAnimIndices Assets::Load_XAnimIndices(QDataStream *aStream,
XAnimParts aXAnimParts,
XAnimIndices aXAnimIndices)
{
XAnimIndices result;
if (aXAnimParts.numframes >= 0x100u)
{
if (aXAnimIndices._1)
{
// Fill out parsing
aStream->skipRawData(2 * aXAnimParts.indexCount);
}
}
else if (aXAnimIndices._1)
{
// Fill out parsing
aStream->skipRawData(aXAnimParts.indexCount);
}
return result;
}
// ?Load_XStringArray@@YAX_NH@Z at 0x822a73b8
QStringList Assets::Load_XStringArray(QDataStream *aStream, int count)
{
QStringList result;
for (int i = 0; i < count; i++) {
result << Load_XString(aStream);
}
return result;
}
// ?Load_ScriptStringArray@@YAX_NH@Z at 0x822a7460
QVector<ScriptString> Assets::Load_ScriptStringArray(QDataStream *aStream, int count)
{
QVector<ScriptString> result;
for (int i = 0; i < count; i++) {
result << Load_ScriptString(aStream);
}
return result;
}
// ?Load_GfxLightRegionHullArray@@YAX_NH@Z at 0x822a74d8
QVector<GfxLightRegionHull> Assets::Load_GfxLightRegionHullArray(QDataStream *aStream, int count)
{
QVector<GfxLightRegionHull> result;
for (int i = 0; i < count; i++) {
result << Load_GfxLightRegionHull(aStream);
}
return result;
}
// ?Load_GfxShadowGeometryArray@@YAX_NH@Z at 0x822a7538
QVector<GfxShadowGeometry> Assets::Load_GfxShadowGeometryArray(QDataStream *aStream, int count)
{
QVector<GfxShadowGeometry> result;
for (int i = 0; i < count; i++) {
result << Load_GfxShadowGeometry(aStream);
}
return result;
}
// ?Load_StringTable@@YAX_N@Z at 0x822a7650
StringTable Assets::Load_StringTable(QDataStream *aStream)
{
StringTable result;
*aStream
>> result.namePtr
>> result.columnCount
>> result.rowCount
>> result.valuesPtr;
if (result.namePtr == -1) {
result.name = Load_XStringCustom(aStream);
}
if (result.valuesPtr)
{
result.values = Load_XStringArray(aStream, result.rowCount * result.columnCount);
}
return result;
}
// ?Load_RawFilePtr@@YAX_N@Z at 0x822a76e8
RawFile Assets::Load_RawFilePtr(QDataStream *aStream)
{
RawFile result;
qint32 rawFilePtr;
*aStream >> rawFilePtr;
if (rawFilePtr)
{
if (rawFilePtr != -1 && rawFilePtr != -2)
{
// Resolve contents from g_streamBlocks
//*varRawFilePtr = *(RawFile **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
//DB_PopStreamPos();
return result;
}
result = Load_RawFile(aStream);
}
return result;
}
// ?Load_LocalizeEntryPtr@@YAX_N@Z at 0x822a77d0
LocalizeEntry Assets::Load_LocalizeEntryPtr(QDataStream *aStream)
{
LocalizeEntry result;
qint32 localizeEntryPtr;
*aStream >> localizeEntryPtr;
if (localizeEntryPtr)
{
if (localizeEntryPtr != -1 && localizeEntryPtr != -2)
{
//*varLocalizeEntryPtr = *(LocalizeEntry **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
//DB_PopStreamPos();
return result;
}
result = Load_LocalizeEntry(aStream);
}
return result;
}
// ?Load_MultiDef@@YAX_N@Z at 0x822a78b8
MultiDef Assets::Load_MultiDef(QDataStream *aStream)
{
MultiDef result;
for (int i = 0; i < 32; i++) {
*aStream >> result.dvarListPtrs[i];
}
for (int i = 0; i < 32; i++) {
*aStream >> result.dvarStrPtrs[i];
}
for (int i = 0; i < 32; i++) {
*aStream >> result.dvarValue[i];
}
*aStream
>> result.count
>> result.strDef;
for (int i = 0; i < 32; i++) {
if (result.dvarListPtrs[i] == -1) {
result.dvarList << Load_XStringCustom(aStream);
}
}
for (int i = 0; i < 32; i++) {
if (result.dvarStrPtrs[i] == -1) {
result.dvarStr << Load_XStringCustom(aStream);
}
}
return result;
}
// ?Load_Operand@@YAX_N@Z at 0x822a7958
Operand Assets::Load_Operand(QDataStream *aStream)
{
Operand result;
*aStream >> result.dataType;
if (result.dataType == VAL_STRING)
{
result.stringVal = Load_XString(aStream);
}
else if (result.dataType == VAL_FLOAT)
{
*aStream >> result.floatVal;
}
else if (result.dataType == VAL_INT)
{
*aStream >> result.intVal;
}
return result;
}
// ?Load_ComPrimaryLightArray@@YAX_NH@Z at 0x822a79d0
QVector<ComPrimaryLight> Assets::Load_ComPrimaryLightArray(QDataStream *aStream, int count)
{
QVector<ComPrimaryLight> result;
for (int i = 0; i < count; i++) {
ComPrimaryLight comPrimaryLight;
*aStream
>> comPrimaryLight.type
>> comPrimaryLight.canUseShadowMap
>> comPrimaryLight.exponent
>> comPrimaryLight.unused
>> comPrimaryLight.color[0]
>> comPrimaryLight.color[1]
>> comPrimaryLight.color[2]
>> comPrimaryLight.dir[0]
>> comPrimaryLight.dir[1]
>> comPrimaryLight.dir[2]
>> comPrimaryLight.origin[0]
>> comPrimaryLight.origin[1]
>> comPrimaryLight.origin[2]
>> comPrimaryLight.radius
>> comPrimaryLight.cosHalfFovOuter
>> comPrimaryLight.cosHalfFovInner
>> comPrimaryLight.cosHalfFovExpanded
>> comPrimaryLight.rotationLimit
>> comPrimaryLight.translationLimit
>> comPrimaryLight.defNamePtr;
result << comPrimaryLight;
}
return result;
}
CBrushSide Assets::Load_cbrushside_t(QDataStream *aStream)
{
CBrushSide result;
*aStream
>> result.planePtr
>> result.materialNum
>> result.firstAdjacentSideOffset
>> result.edgeCount;
if (result.planePtr == -1) {
result.plane = Load_CPlane(aStream);
}
return result;
}
// ?Load_CBrush@@YAX_N@Z at 0x822a7a48
CBrush Assets::Load_CBrush(QDataStream *aStream)
{
CBrush result;
*aStream
>> result.mins[0]
>> result.mins[1]
>> result.mins[2]
>> result.contents
>> result.maxs[0]
>> result.maxs[1]
>> result.maxs[2]
>> result.numsides
>> result.sidesPtr
>> result.axialMaterialNum[0][0]
>> result.axialMaterialNum[0][1]
>> result.axialMaterialNum[0][2]
>> result.axialMaterialNum[1][0]
>> result.axialMaterialNum[1][1]
>> result.axialMaterialNum[1][2]
>> result.baseAdjacentSidePtr
>> result.firstAdjacentSideOffsets[0][0]
>> result.firstAdjacentSideOffsets[0][1]
>> result.firstAdjacentSideOffsets[0][2]
>> result.firstAdjacentSideOffsets[1][0]
>> result.firstAdjacentSideOffsets[1][1]
>> result.firstAdjacentSideOffsets[1][2]
>> result.edgeCount[0][0]
>> result.edgeCount[0][1]
>> result.edgeCount[0][2]
>> result.edgeCount[1][0]
>> result.edgeCount[1][1]
>> result.edgeCount[1][2];
if (result.sidesPtr)
{
if (result.sidesPtr == -1)
{
for (int i = 0; i < result.numsides; i++) {
result.sides << Load_cbrushside_t(aStream);
}
}
else
{
// Resolve from g_streamBlocks
//varcbrush_t->sides = (cbrushside_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(&varcbrush_t->sides[-1].edgeCount + 1) >> 26) & 0x38)))[(int)(&varcbrush_t->sides[-1].edgeCount + 1) & 0x1FFFFFFF];
}
}
if (result.baseAdjacentSidePtr)
{
if (result.baseAdjacentSidePtr == -1)
{
*aStream >> result.baseAdjacentSide;
}
else
{
// Resolve from g_streamBlocks
//v1->baseAdjacentSide = &(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1->baseAdjacentSide - 1) >> 26) & 0x38)))[(int)(v1->baseAdjacentSide - 1) & 0x1FFFFFFF];
}
}
return result;
}
// ?Load_CollisionPartitionArray@@YAX_NH@Z at 0x822a7b50
QVector<CollisionPartition> Assets::Load_CollisionPartitionArray(QDataStream *aStream, int count)
{
QVector<CollisionPartition> result;
for (int i = 0; i < count; i++) {
result << Load_CollisionPartition(aStream);
}
return result;
}
// ?Load_CLeafBrushNode@@YAX_N@Z at 0x822a7bb0
CLeafBrushNode Assets::Load_CLeafBrushNode(QDataStream *aStream)
{
CLeafBrushNode result;
*aStream
>> result.axis
>> result.leafBrushCount
>> result.contents
>> result.data;
result.data = Load_CLeafBrushNodeData(aStream);
return result;
}
// ?Load_cNode_tArray@@YAX_NH@Z at 0x822a7c00
QVector<cNode_t> Assets::Load_cNode_tArray(QDataStream *aStream, int count)
{
QVector<cNode_t> result;
for (int i = 0; i < count; i++) {
cNode_t cNode;
*aStream
>> cNode.planePtr
>> cNode.children[0]
>> cNode.children[1];
if (cNode.planePtr)
{
if (cNode.planePtr == -1)
{
cNode.plane = Assets::Load_CPlane(aStream);
}
else
{
// Resolve contents from g_streamBlocks
//varcNode_t->plane = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)&plane[-1].pad[1] >> 26) & 0x38)))[(unsigned int)&plane[-1].pad[1] & 0x1FFFFFFF];
}
}
result << cNode;
}
return result;
}
// ?Load_MapEntsPtr@@YAX_N@Z at 0x822a7cc8
void Assets::Load_MapEntsPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
MapEnts **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varMapEntsPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varMapEntsPtr;
if ( *varMapEntsPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varMapEntsPtr = *(MapEnts **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varMapEntsPtr = (MapEnts *)v3;
varMapEnts = (MapEnts *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_MapEnts(1);
v5 = varMapEntsPtr;
*v5 = (MapEnts *)DB_AddXAsset((XAssetHeader *)0x10, (XAssetHeader *)*varMapEntsPtr, v6);
if ( inserted )
*inserted = *varMapEntsPtr;
}
DB_PopStreamPos();
}
// ?Load_GameWorldMpPtr@@YAX_N@Z at 0x822a7db0
void Assets::Load_GameWorldMpPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
GameWorldMp **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varGameWorldMpPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varGameWorldMpPtr;
if ( *varGameWorldMpPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varGameWorldMpPtr = *(GameWorldMp **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varGameWorldMpPtr = (GameWorldMp *)v3;
varGameWorldMp = (GameWorldMp *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_GameWorldMp(1);
v5 = varGameWorldMpPtr;
*v5 = (GameWorldMp *)DB_AddXAsset((XAssetHeader *)0xF, (XAssetHeader *)*varGameWorldMpPtr, v6);
if ( inserted )
*inserted = *varGameWorldMpPtr;
}
DB_PopStreamPos();
}
// ?Load_pathnode_tree_info_t@@YAX_N@Z at 0x822a7e98
void Assets::Load_pathnode_tree_info_t(QDataStream *aStream)
{
if ( varpathnode_tree_t->axis < 0 )
{
varpathnode_tree_nodes_t = (PathNodeTreeNodes *)varpathnode_tree_info_t;
Load_PathNodeTreeNodes(0);
}
else
{
varpathnode_tree_ptr = (pathnode_tree_t **)varpathnode_tree_info_t;
LoadPathNodeTreeArray(0, 2);
}
}
// ?Load_pathnode_t@@YAX_N@Z at 0x822a7ed8
void Assets::Load_pathnode_t(QDataStream *aStream)
{
Load_Stream(0, varpathnode_t, 0x80u);
varpathnode_constant_t = &varpathnode_t->constant;
Load_PathNodeConstant(0);
}
// ?Load_cbrushside_tArray@@YAX_NH@Z at 0x822a7f28
void Assets::Load_cbrushside_tArray(QDataStream *aStream, int count)
{
int v2; // r31
CBrushSide *v3; // r30
CPlane *plane; // r11
unsigned __int8 *v5; // r4
v2 = count;
Load_Stream(1, varcbrushside_t, 12 * count);
v3 = varcbrushside_t;
if ( v2 > 0 )
{
do
{
varcbrushside_t = v3;
Load_Stream(0, v3, 0xCu);
plane = varcbrushside_t->plane;
if ( varcbrushside_t->plane )
{
if ( plane == (CPlane *)-1 )
{
v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v5;
varcplane_t = (cplane_s *)v5;
varcbrushside_t->plane = (cplane_s *)v5;
Load_Stream(1, v5, 0x14u);
}
else
{
varcbrushside_t->plane = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)&plane[-1].pad[1] >> 26) & 0x38)))[(unsigned int)&plane[-1].pad[1] & 0x1FFFFFFF];
}
}
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_PhysPresetPtr@@YAX_N@Z at 0x822a7ff8
void Assets::Load_PhysPresetPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
PhysPreset **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varPhysPresetPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varPhysPresetPtr;
if ( *varPhysPresetPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varPhysPresetPtr = *(PhysPreset **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varPhysPresetPtr = (PhysPreset *)v3;
varPhysPreset = (PhysPreset *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_PhysPreset(1);
v5 = varPhysPresetPtr;
*v5 = (PhysPreset *)DB_AddXAsset((XAssetHeader *)1, (XAssetHeader *)*varPhysPresetPtr, v6);
if ( inserted )
*inserted = *varPhysPresetPtr;
}
DB_PopStreamPos();
}
// ?Load_MaterialShaderArgument@@YAX_N@Z at 0x822a80e0
MaterialShaderArgument Assets::Load_MaterialShaderArgument(QDataStream *aStream)
{
MaterialShaderArgument result;
*aStream
>> result.type
>> result.dest;
result.u = Assets::Load_MaterialArgumentDef(aStream, result);
}
// ?Load_MaterialPixelShaderProgram@@YAX_N@Z at 0x822a8130
MaterialPixelShaderProgram Assets::Load_MaterialPixelShaderProgram(QDataStream *aStream)
{
MaterialPixelShaderProgram result;
*aStream >> result.psPtr;
result.loadDef = Load_GfxPixelShaderLoadDef(aStream);
if ( varMaterialPixelShader->prog.loadDef.physicalPartSize )
{
ps = varMaterialPixelShader->prog.ps;
HIDWORD(v2) = varMaterialPixelShader->prog.loadDef.physicalPart;
LODWORD(v2) = 0;
*(_QWORD *)&ps->Common = v2;
*(_QWORD *)&ps->Fence = v2;
*(_QWORD *)&ps->Identifier = v2;
*(_QWORD *)&ps[1].Common = v2;
*(_QWORD *)&ps[1].Fence = v2;
ps->Common = 7;
ps->ReferenceCount = 1;
ps->BaseFlush = -65536;
ps[1].Common = HIDWORD(v2);
}
else
{
varMaterialPixelShader->prog.ps = 0;
}
return result;
}
// ?Load_MaterialVertexShaderProgram@@YAX_N@Z at 0x822a81e8
void Assets::Load_MaterialVertexShaderProgram(QDataStream *aStream)
{
Load_Stream(0, varMaterialVertexShaderProgram, 0xCu);
varGfxVertexShaderLoadDef = (GfxVertexShaderLoadDef *)varMaterialVertexShaderProgram;
Load_GfxVertexShaderLoadDef(0);
XGRegisterVertexShader(
varMaterialVertexShader->prog.vs,
(unsigned int)varMaterialVertexShader->prog.loadDef.physicalPart);
}
// ?Load_GfxImageLoadDef@@YAX_N@Z at 0x822a8248
GfxImageLoadDef Assets::Load_GfxImageLoadDef(QDataStream *aStream)
{
GfxImageLoadDef result;
*aStream
>> result.levelCount
>> result.flags
>> result.dimensions[0]
>> result.dimensions[1]
>> result.dimensions[2]
>> result.format;
result.texture = Assets::Load_GfxTexture(aStream);
return result;
}
typedef GfxTexture GfxTextureLoad;
// ?Load_GfxTextureLoad@@YAX_N@Z at 0x822a82a8
GfxTextureLoad Assets::Load_GfxTextureLoad(QDataStream *aStream)
{
GfxTextureLoad result;
*aStream >> result.basemapPtr;
if (result.basemapPtr)
{
if (result.basemapPtr == -1 || result.basemapPtr == -2)
{
result.loadDef = Assets::Load_GfxImageLoadDef(aStream);
}
else
{
// Resolve contents from g_streamBlocks
//varGfxTextureLoad->basemap = *(D3DBaseTexture **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&basemap[-1].Format.dword[5]
// + 3) >> 26) & 0x38)))[((unsigned int)&basemap[-1].Format.dword[5] + 3) & 0x1FFFFFFF];
}
}
return result;
}
// ?Load_XRigidVertList@@YAX_N@Z at 0x822a83a0
XRigidVertList Assets::Load_XRigidVertList(QDataStream *aStream)
{
XRigidVertList result;
*aStream
>> result.boneOffset
>> result.vertCount
>> result.triOffset
>> result.triCount
>> result.collisionTreePtr;
if (result.collisionTreePtr)
{
if (result.collisionTreePtr == -1)
{
result.collisionTree = Assets::Load_XSurfaceCollisionTree(aStream);
}
else
{
// Resolve contents from g_streamBlocks
//varXRigidVertList->collisionTree = (XSurfaceCollisionTree *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&varXRigidVertList->collisionTree[-1].leafs
// + 3) >> 26) & 0x38)))[((int)&varXRigidVertList->collisionTree[-1].leafs + 3) & 0x1FFFFFFF];
}
}
}
// ?Load_snd_alias_list_name@@YAX_N@Z at 0x822a8450
void Assets::Load_snd_alias_list_name(QDataStream *aStream)
{
Load_Stream(0, varsnd_alias_list_name, 4u);
Load_SndAliasCustom(varsnd_alias_list_name);
}
// ?Load_XAUDIOCHANNELMAPArray@@YAX_NH@Z at 0x822a8490
QVector<XAUDIOCHANNELMAP> Assets::Load_XAUDIOCHANNELMAPArray(QDataStream *aStream, int count)
{
QVector<XAUDIOCHANNELMAP> result;
for (int i = 0; i < count; i++) {
result << Assets::Load_XAUDIOCHANNELMAP(aStream);
}
return result;
}
// ?Load_SndCurvePtr@@YAX_N@Z at 0x822a8528
SndCurve Assets::Load_SndCurvePtr(QDataStream *aStream)
{
SndCurve result;
qint32 sndCurvePtr;
*aStream >> sndCurvePtr;
if (sndCurvePtr)
{
if (sndCurvePtr == -1 || sndCurvePtr == -2)
{
result = Assets::Load_SndCurve(aStream);
}
else {
// Resolve contents from g_streamBlocks
//*varSndCurvePtr = *(SndCurve **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
return result;
}
// ?Load_StreamFileInfo@@YAX_N@Z at 0x822a8610
void Assets::Load_StreamFileInfo(QDataStream *aStream)
{
if ( !varStreamFileName->fileIndex )
{
varStreamFileNameRaw = &varStreamFileInfo->raw;
Load_StreamFileNameRaw(0);
}
}
// ?Load_SndDriverGlobalsPtr@@YAX_N@Z at 0x822a8640
void Assets::Load_SndDriverGlobalsPtr(QDataStream *aStream)
{
SndDriverGlobals result;
qint32 sndDriverGlobalsPtr;
*aStream >> sndDriverGlobalsPtr;
if (sndDriverGlobalsPtr)
{
if (sndDriverGlobalsPtr == -1 || sndDriverGlobalsPtr == -2)
{
result = Assets::Load_SndDriverGlobals(aStream);
}
else
{
// Resolve contents for g_streamBlocks
//*varSndDriverGlobalsPtr = *(SndDriverGlobals **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
}
// ?Load_XaSound@@YAX_N@Z at 0x822a8728
XaSound Assets::Load_XaSound(QDataStream *aStream)
{
XaSound result;
*aStream
>> result.packet.pBufferPtr
>> result.packet.BufferSize
>> result.packet.LoopCount;
for (int i = 0; i < 6; i++) {
*aStream
>> result.packet.XMALoop[i].LoopStart
>> result.packet.XMALoop[i].LoopEnd
>> result.packet.XMALoop[i].LoopSubframeEnd
>> result.packet.XMALoop[i].LoopSubframeSkip;
}
*aStream
>> result.packet.pContextPtr
>> result.packet.pContext
>> result.format.SampleType
>> result.format.___u1.NumStreams
>> result.format.___u1.ChannelCount;
for (int i = 0; i < 6; i++) {
*aStream
>> result.format.___u2.Stream[i].SampleRate
>> result.format.___u2.Stream[i].ChannelCount
>> result.format.___u2.Stream[i].DecodeBufferSize;
}
*aStream
>> result.packet.pContextPtr
>> result.xaIwXmaDataInfo.totalMsec
>> result.seekTable.size
>> result.seekTable.dataPtr;
result.packet = Assets::Load_XAUDIOPACKET_ALIGNED(aStream);
result.seekTable = Assets::Load_XaSeekTable(aStream);
return result;
}
// ?Load_XAnimNotifyInfoArray@@YAX_NH@Z at 0x822a8790
QVector<XAnimNotifyInfo> Assets::Load_XAnimNotifyInfoArray(QDataStream *aStream, int count)
{
QVector<XAnimNotifyInfo> result;
for (int i = 0; i < count; i++) {
XAnimNotifyInfo xAnimNotifyInfo;
*aStream
>> xAnimNotifyInfo.name
>> xAnimNotifyInfo.time;
result << xAnimNotifyInfo;
}
return result;
}
// ?Load_XAnimPartTransFrames@@YAX_N@Z at 0x822a8828
void Assets::Load_XAnimPartTransFrames(QDataStream *aStream)
{
unsigned int numframes; // r9
int size; // r11
size_t v3; // r5
Load_Stream(1, varXAnimPartTransFrames, 0x1Cu);
numframes = varXAnimParts->numframes;
varXAnimDynamicIndicesTrans = &varXAnimPartTransFrames->indices;
size = varXAnimPartTrans->size;
if ( numframes >= 0x100 )
{
v3 = 2 * (size + 1);
varUnsignedShort = varXAnimPartTransFrames->indices._2;
}
else
{
v3 = size + 1;
varbyte = varXAnimPartTransFrames->indices._1;
}
Load_Stream(1, &varXAnimPartTransFrames->indices, v3);
varXAnimDynamicFrames = &varXAnimPartTransFrames->frames;
Load_XAnimDynamicFrames(0);
}
// ?Load_XAnimDeltaPartQuatDataFrames@@YAX_N@Z at 0x822a88d0
void Assets::Load_XAnimDeltaPartQuatDataFrames(QDataStream *aStream)
{
unsigned int numframes; // r9
int size; // r11
size_t v3; // r5
unsigned __int8 *v4; // r4
int v5; // r11
bool v6; // cr58
int v7; // r11
Load_Stream(1, varXAnimDeltaPartQuatDataFrames, 4u);
numframes = varXAnimParts->numframes;
varXAnimDynamicIndicesDeltaQuat = &varXAnimDeltaPartQuatDataFrames->indices;
size = varXAnimDeltaPartQuat->size;
if ( numframes >= 0x100 )
{
v3 = 2 * (size + 1);
varUnsignedShort = varXAnimDeltaPartQuatDataFrames->indices._2;
}
else
{
v3 = size + 1;
varbyte = varXAnimDeltaPartQuatDataFrames->indices._1;
}
Load_Stream(1, &varXAnimDeltaPartQuatDataFrames->indices, v3);
if ( varXAnimDeltaPartQuatDataFrames->frames )
{
v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v4;
varXAnimDeltaPartQuatDataFrames->frames = (__int16 (*)[2])v4;
varXQuat2 = (__int16 (*)[2])v4;
v5 = varXAnimDeltaPartQuat->size;
v6 = v5 == 0;
v7 = v5 + 1;
if ( v6 )
v7 = 0;
Load_Stream(1, v4, 4 * v7);
}
}
// ?Load_TempStringArray@@YAX_NH@Z at 0x822a89c0
void Assets::Load_TempStringArray(QDataStream *aStream, int count)
{
int v2; // r31
const char **v3; // r30
const char **v4; // r3
int v5; // r11
v2 = count;
Load_Stream(1, varTempString, 4 * count);
v3 = varTempString;
if ( v2 > 0 )
{
do
{
varTempString = v3;
Load_Stream(0, v3, 4u);
v4 = varTempString;
v5 = (int)*varTempString;
if ( *varTempString )
{
if ( v5 == -1 )
{
varConstChar = (const char *)g_streamPos;
*varTempString = (const char *)g_streamPos;
Load_TempStringCustom(v4);
}
else
{
*varTempString = (const char *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v5 - 1) >> 26) & 0x38)))[(v5 - 1) & 0x1FFFFFFF];
}
}
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_GfxLightRegion@@YAX_N@Z at 0x822a8a78
GfxLightRegion Assets::Load_GfxLightRegion(QDataStream *aStream)
{
GfxLightRegion result;
*aStream
>> result.hullCount
>> result.hullsPtr;
if (result.hullsPtr)
{
result.hulls << Assets::Load_GfxLightRegionHullArray(aStream, result.hullCount);
}
return result;
}
// ?Load_StringTablePtr@@YAX_N@Z at 0x822a8c10
StringTable Assets::Load_StringTablePtr(QDataStream *aStream)
{
StringTable result;
qint32 stringTablePtr;
*aStream >> stringTablePtr;
if (stringTablePtr)
{
if (stringTablePtr == -1)
{
result = Assets::Load_StringTable(aStream);
}
else
{
// Resolve contents from g_streamBlocks
//*varStringTablePtr = (StringTable *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
}
// ?Load_entryInternalData@@YAX_N@Z at 0x822a8d00
void Assets::Load_entryInternalData(QDataStream *aStream)
{
if ( varexpressionEntry->type )
{
varOperand = (Operand *)varentryInternalData;
Load_Operand(0);
}
}
// ?Load_ComWorld@@YAX_N@Z at 0x822a8d30
ComWorld Assets::Load_ComWorld(QDataStream *aStream)
{
ComWorld result;
*aStream
>> result.namePtr
>> result.isInUse
>> result.primaryLightCount
>> result.primaryLightsPtr;
if (result.namePtr) {
result.name = Assets::Load_XStringCustom(aStream);
}
if (result.primaryLightsPtr)
{
result.primaryLights << Assets::Load_ComPrimaryLightArray(aStream, result.primaryLightCount);
}
}
// ?Load_cbrush_tArray@@YAX_NH@Z at 0x822a8dc8
QVector<CBrush> Assets::Load_cbrush_tArray(QDataStream *aStream, int count)
{
QVector<CBrush> result;
for (int i = 0; i < count; i++) {
result << Assets::Load_CBrush(aStream);
}
return result;
}
// ?Load_cLeafBrushNode_tArray@@YAX_NH@Z at 0x822a8e28
QVector<cLeafBrushNode_t> Assets::Load_cLeafBrushNode_tArray(QDataStream *aStream, int count)
{
QVector<cLeafBrushNode_t> result;
for (int i = 0; i < count; i++) {
cLeafBrushNode_t cLeafBrushNode = Assets::Load_CLeafBrushNode(aStream);
Assets::Load_CLeafBrushNode(aStream);
if (cLeafBrushNode.leafBrushCount > 0) {
if (cLeafBrushNode.data.leaf.brushesPtr) {
cLeafBrushNode.data = Assets::Load_CLeafBrushNodeLeaf(count);
}
}
result << cLeafBrushNode;
}
return result;
}
// ?Load_PathNodeTree@@YAX_N@Z at 0x822a8ed8
PathNodeTree Assets::Load_PathNodeTree(QDataStream *aStream)
{
PathNodeTree result;
*aStream
>> result.axis
>> result.dist
>> result.infoPtr;
if (result.axis < 0)
{
varpathnode_tree_nodes_t = (PathNodeTreeNodes *)&varpathnode_tree_t->u;
Load_PathNodeTreeNodes(0);
}
else
{
varpathnode_tree_ptr = varpathnode_tree_t->u.child;
LoadPathNodeTreeArray(0, 2);
}
}
// ?Load_pathnode_tArray@@YAX_NH@Z at 0x822a8f60
void Assets::Load_pathnode_tArray(QDataStream *aStream, int count)
{
int v2; // r30
pathnode_t *v3; // r31
v2 = count;
Load_Stream(1, varpathnode_t, count << 7);
v3 = varpathnode_t;
if ( v2 > 0 )
{
do
{
varpathnode_t = v3;
Load_Stream(0, v3, 0x80u);
varpathnode_constant_t = &varpathnode_t->constant;
Load_PathNodeConstant(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_BrushWrapper@@YAX_N@Z at 0x822a8fd0
BrushWrapper Assets::Load_BrushWrapper(QDataStream *aStream)
{
BrushWrapper result;
*aStream
>> result.mins[0]
>> result.mins[1]
>> result.mins[2]
>> result.contents
>> result.maxs[0]
>> result.maxs[1]
>> result.maxs[2]
>> result.numsides
>> result.sidesPtr
>> result.axialMaterialNum[0][0]
>> result.axialMaterialNum[0][1]
>> result.axialMaterialNum[0][2]
>> result.axialMaterialNum[1][0]
>> result.axialMaterialNum[1][1]
>> result.axialMaterialNum[1][2]
>> result.baseAdjacentSidePtr
>> result.firstAdjacentSideOffsets[0][0]
>> result.firstAdjacentSideOffsets[0][1]
>> result.firstAdjacentSideOffsets[0][2]
>> result.firstAdjacentSideOffsets[1][0]
>> result.firstAdjacentSideOffsets[1][1]
>> result.firstAdjacentSideOffsets[1][2]
>> result.edgeCount[0][0]
>> result.edgeCount[0][1]
>> result.edgeCount[0][2]
>> result.edgeCount[1][0]
>> result.edgeCount[1][1]
>> result.edgeCount[1][2]
>> result.totalEdgeCount
>> result.planesPtr;
if (result.sidesPtr)
{
result.sides = Assets::Load_cbrushside_tArray(aStream, result.numsides);
}
if (result.baseAdjacentSidePtr)
{
result.baseAdjacentSide = Assets::Load_cbrushedge_t(aStream);
}
if (result.planesPtr)
{
if (result.planesPtr == -1)
{
for (int i = 0; i < result.numsides; i++) {
result.planes << Assets::Load_CPlane(aStream);
}
}
else
{
// Resolve contents from g_streamBlocks
//v1->planes = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)&v1->planes[-1].pad[1] >> 26) & 0x38)))[(int)&v1->planes[-1].pad[1] & 0x1FFFFFFF];
}
}
}
// ?Load_MaterialShaderArgumentArray@@YAX_NH@Z at 0x822a90f0
void Assets::Load_MaterialShaderArgumentArray(QDataStream *aStream, int count)
{
int v2; // r30
MaterialShaderArgument *v3; // r31
v2 = count;
Load_Stream(1, varMaterialShaderArgument, 8 * count);
v3 = varMaterialShaderArgument;
if ( v2 > 0 )
{
do
{
varMaterialShaderArgument = v3;
Load_Stream(0, v3, 8u);
varMaterialArgumentDef = &varMaterialShaderArgument->u;
Load_MaterialArgumentDef(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_MaterialPixelShader@@YAX_N@Z at 0x822a9168
MaterialPixelShader Assets::Load_MaterialPixelShader(QDataStream *aStream)
{
MaterialPixelShader result;
Load_Stream(1, varMaterialPixelShader, 0x10u);
DB_PushStreamPos(4u);
varXString = &varMaterialPixelShader->name;
Load_XString(0);
varMaterialPixelShaderProgram = &varMaterialPixelShader->prog;
Load_MaterialPixelShaderProgram(0);
return result;
}
// ?Load_MaterialVertexShader@@YAX_N@Z at 0x822a91d8
void Assets::Load_MaterialVertexShader(QDataStream *aStream)
{
Load_Stream(1, varMaterialVertexShader, 0x10u);
varXString = &varMaterialVertexShader->name;
Load_XString(0);
varMaterialVertexShaderProgram = &varMaterialVertexShader->prog;
Load_MaterialVertexShaderProgram(0);
}
// ?Load_GfxImage@@YAX_N@Z at 0x822a9240
GfxImage Assets::Load_GfxImage(QDataStream *aStream)
{
GfxImage result;
*aStream
>> result.mapType
//>> result.texture.map
>> result.semantic
>> result.cardMemory
>> result.width
>> result.height
>> result.depth
>> result.category
>> result.delayLoadPixels
>> result.pixelsPtr
>> result.baseSize
>> result.streamSlot
>> result.streaming
>> result.namePtr;
if (result.namePtr == -1) {
result.name = Assets::Load_XStringCustom(aStream);
}
if (result.pixelsPtr) {
result.pixels = Assets::Load_GfxImagePixels(aStream);
}
result.texture = Assets::Load_GfxTextureLoad(aStream);
*aStream >> result.texture
varGfxTextureLoad = &varGfxImage->texture;
Load_GfxTextureLoad(0);
return result;
}
// ?Load_XRigidVertListArray@@YAX_NH@Z at 0x822a92d0
void Assets::Load_XRigidVertListArray(QDataStream *aStream, int count)
{
int v2; // r31
XRigidVertList *v3; // r30
v2 = count;
Load_Stream(1, varXRigidVertList, 12 * count);
v3 = varXRigidVertList;
if ( v2 > 0 )
{
do
{
varXRigidVertList = v3;
Load_XRigidVertList(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_snd_alias_list_nameArray@@YAX_NH@Z at 0x822a9330
void Assets::Load_snd_alias_list_nameArray(QDataStream *aStream, int count)
{
SoundAliasList **v2; // r31
int v3; // r30
Load_Stream(1, varsnd_alias_list_name, 0x74u);
v2 = varsnd_alias_list_name;
v3 = 29;
do
{
varsnd_alias_list_name = v2;
Load_Stream(0, v2, 4u);
Load_SndAliasCustom(varsnd_alias_list_name);
--v3;
++v2;
}
while ( v3 );
}
// ?Load_SpeakerMapChannel@@YAX_N@Z at 0x822a9390
void Assets::Load_SpeakerMapChannel(QDataStream *aStream)
{
Load_Stream(0, varSpeakerMapChannel, 0x10u);
varXAUDIOCHANNELMAP = (XAUDIOCHANNELMAP *)varSpeakerMapChannel;
Load_XAUDIOCHANNELMAPArray(0, 2);
}
// ?Load_LoadedSound@@YAX_N@Z at 0x822a93e0
void Assets::Load_LoadedSound(QDataStream *aStream)
{
Load_Stream(1, varLoadedSound, 0xA0u);
DB_PushStreamPos(4u);
varXString = &varLoadedSound->name;
Load_XString(0);
varXaSound = &varLoadedSound->sound;
Load_XaSound(0);
DB_PopStreamPos();
}
// ?Load_StreamFileName@@YAX_N@Z at 0x822a9450
void Assets::Load_StreamFileName(QDataStream *aStream)
{
unsigned int fileIndex; // r9
Load_Stream(0, varStreamFileName, 0xCu);
fileIndex = varStreamFileName->fileIndex;
varStreamFileInfo = &varStreamFileName->info;
if ( !fileIndex )
{
varStreamFileNameRaw = &varStreamFileName->info.raw;
Load_StreamFileNameRaw(0);
}
}
// ?Load_XAnimPartTransData@@YAX_N@Z at 0x822a94b8
void Assets::Load_XAnimPartTransData(QDataStream *aStream)
{
if ( varXAnimPartTrans->size )
{
varXAnimPartTransFrames = &varXAnimPartTransData->frames;
Load_XAnimPartTransFrames(1);
}
else
{
varvec3_t = (float (*)[3])varXAnimPartTransData;
Load_Stream(1, varXAnimPartTransData, 0xCu);
}
}
// ?Load_XAnimDeltaPartQuatData@@YAX_N@Z at 0x822a94f8
void Assets::Load_XAnimDeltaPartQuatData(QDataStream *aStream)
{
if ( varXAnimDeltaPartQuat->size )
{
varXAnimDeltaPartQuatDataFrames = &varXAnimDeltaPartQuatData->frames;
Load_XAnimDeltaPartQuatDataFrames(1);
}
else
{
varXQuat2 = (__int16 (*)[2])varXAnimDeltaPartQuatData;
Load_Stream(1, varXAnimDeltaPartQuatData, 4u);
}
}
// ?Load_ScriptStringList@@YAX_N@Z at 0x822a9538
void Assets::Load_ScriptStringList(QDataStream *aStream)
{
int count; // r4
unsigned __int8 *v2; // r11
Load_Stream(0, varScriptStringList, 8u);
DB_PushStreamPos(4u);
if ( varScriptStringList->strings )
{
count = varScriptStringList->count;
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
varScriptStringList->strings = (const char **)v2;
varTempString = (const char **)v2;
Load_TempStringArray(1, count);
}
DB_PopStreamPos();
}
// ?Load_GfxLightRegionArray@@YAX_NH@Z at 0x822a95b8
void Assets::Load_GfxLightRegionArray(QDataStream *aStream, int count)
{
int v2; // r31
GfxLightRegion *v3; // r29
unsigned int hullCount; // r4
v2 = count;
Load_Stream(1, varGfxLightRegion, 8 * count);
v3 = varGfxLightRegion;
if ( v2 > 0 )
{
do
{
varGfxLightRegion = v3;
Load_Stream(0, v3, 8u);
if ( varGfxLightRegion->hulls )
{
hullCount = varGfxLightRegion->hullCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxLightRegionHull = (GfxLightRegionHull *)g_streamPos;
varGfxLightRegion->hulls = (GfxLightRegionHull *)g_streamPos;
Load_GfxLightRegionHullArray(1, hullCount);
}
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_GfxCellArray@@YAX_NH@Z at 0x822a9650
void Assets::Load_GfxCellArray(QDataStream *aStream, int count)
{
int v2; // r31
GfxCell *v3; // r30
v2 = count;
Load_Stream(1, varGfxCell, 56 * count);
v3 = varGfxCell;
if ( v2 > 0 )
{
do
{
varGfxCell = v3;
Load_GfxCell(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_expressionEntry@@YAX_N@Z at 0x822a96a8
void Assets::Load_expressionEntry(QDataStream *aStream)
{
int type; // r9
Load_Stream(1, varexpressionEntry, 0xCu);
type = varexpressionEntry->type;
varentryInternalData = &varexpressionEntry->data;
if ( type )
{
varOperand = (Operand *)&varexpressionEntry->data;
Load_Operand(0);
}
}
// ?Load_ComWorldPtr@@YAX_N@Z at 0x822a9710
void Assets::Load_ComWorldPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
ComWorld **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varComWorldPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varComWorldPtr;
if ( *varComWorldPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varComWorldPtr = *(ComWorld **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varComWorldPtr = (ComWorld *)v3;
varComWorld = (ComWorld *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_ComWorld(1);
v5 = varComWorldPtr;
*v5 = (ComWorld *)DB_AddXAsset((XAssetHeader *)0xD, (XAssetHeader *)*varComWorldPtr, v6);
if ( inserted )
*inserted = *varComWorldPtr;
}
DB_PopStreamPos();
}
// ?Load_pathnode_tree_tArray@@YAX_NH@Z at 0x822a97f8
void Assets::Load_pathnode_tree_tArray(QDataStream *aStream, int count)
{
int v2; // r31
PathNodeTree *v3; // r30
v2 = count;
Load_Stream(1, varpathnode_tree_t, 16 * count);
v3 = varpathnode_tree_t;
if ( v2 > 0 )
{
do
{
varpathnode_tree_t = v3;
Load_PathNodeTree(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_MaterialPixelShaderPtr@@YAX_N@Z at 0x822a98b0
void Assets::Load_MaterialPixelShaderPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
MaterialPixelShader **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varMaterialPixelShaderPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varMaterialPixelShaderPtr;
if ( *varMaterialPixelShaderPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varMaterialPixelShaderPtr = *(MaterialPixelShader **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varMaterialPixelShaderPtr = (MaterialPixelShader *)v3;
varMaterialPixelShader = (MaterialPixelShader *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_MaterialPixelShader(1);
v5 = varMaterialPixelShaderPtr;
*v5 = (MaterialPixelShader *)DB_AddXAsset((XAssetHeader *)5, (XAssetHeader *)*varMaterialPixelShaderPtr, v6);
if ( inserted )
*inserted = *varMaterialPixelShaderPtr;
}
DB_PopStreamPos();
}
// ?Load_GfxImagePtr@@YAX_N@Z at 0x822a9a40
void Assets::Load_GfxImagePtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r31
Load_Stream(0, varGfxImagePtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varGfxImagePtr;
if ( *varGfxImagePtr )
{
if ( v1 == -1 || v1 == -2 )
{
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varGfxImagePtr = (GfxImage *)v3;
varGfxImage = (GfxImage *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_GfxImage(1);
Load_GfxImageAsset(varGfxImagePtr);
if ( inserted )
*inserted = *varGfxImagePtr;
}
else
{
*varGfxImagePtr = *(GfxImage **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
DB_PopStreamPos();
}
// ?Load_XSurface@@YAX_N@Z at 0x822a9b30
void Assets::Load_XSurface(QDataStream *aStream)
{
XSurface *v1; // r11
GfxPackedVertex *verts0; // r10
size_t v3; // r5
unsigned __int8 *v4; // r4
XSurface *v5; // r11
D3DVertexBuffer *p_vb0; // r28
GfxPackedVertex *v7; // r30
XRigidVertList *vertList; // r10
int vertListCount; // r4
unsigned __int16 *triIndices; // r10
int triCount; // r10
unsigned __int8 *v12; // r4
D3DIndexBuffer *p_indexBuffer; // r31
unsigned __int16 *v14; // r30
Load_Stream(0, varXSurface, 0x74u);
varXSurfaceVertexInfo = &varXSurface->vertInfo;
Load_XSurfaceVertexInfo(0);
v1 = varXSurface;
verts0 = varXSurface->verts0;
if ( verts0 )
{
if ( verts0 == (GfxPackedVertex *)-1 )
{
v3 = __ROL4__(varXSurface->vertCount, 5);
v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0);
g_streamPos = v4;
varGfxPackedVertex0 = (GfxPackedVertex *)v4;
varXSurface->verts0 = (GfxPackedVertex *)v4;
Load_Stream(1, v4, v3);
v1 = varXSurface;
}
else
{
varXSurface->verts0 = (GfxPackedVertex *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varXSurface->verts0[-1].tangent.packed
+ 3) >> 26) & 0x38)))[((int)&varXSurface->verts0[-1].tangent.packed
+ 3) & 0x1FFFFFFF];
}
}
varGfxVertexBuffer = &v1->vb0;
Load_Stream(0, &v1->vb0, 0x20u);
v5 = varXSurface;
p_vb0 = &varXSurface->vb0;
v7 = varXSurface->verts0;
if ( v7 )
{
XGSetVertexBufferHeader(__ROL4__(varXSurface->vertCount, 5), 0, 0, 0, p_vb0);
XGOffsetResourceAddress(p_vb0, v7);
v5 = varXSurface;
}
vertList = v5->vertList;
if ( vertList )
{
if ( vertList == (XRigidVertList *)-1 )
{
vertListCount = v5->vertListCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXRigidVertList = (XRigidVertList *)g_streamPos;
v5->vertList = (XRigidVertList *)g_streamPos;
Load_XRigidVertListArray(1, vertListCount);
v5 = varXSurface;
}
else
{
v5->vertList = (XRigidVertList *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&v5->vertList[-1].collisionTree + 3) >> 26) & 0x38)))[((int)&v5->vertList[-1].collisionTree + 3) & 0x1FFFFFFF];
}
}
triIndices = v5->triIndices;
if ( triIndices )
{
if ( triIndices == (unsigned __int16 *)-1 )
{
triCount = v5->triCount;
v12 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0);
v5->triIndices = (unsigned __int16 *)v12;
g_streamPos = v12;
varr_index16_t = (unsigned __int16 *)v12;
Load_Stream(1, v12, 2 * (triCount + __ROL4__(triCount, 1)));
v5 = varXSurface;
}
else
{
v5->triIndices = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)v5->triIndices - 1) >> 26) & 0x38)))[((int)v5->triIndices - 1) & 0x1FFFFFFF];
}
}
varGfxIndexBuffer = &v5->indexBuffer;
Load_Stream(0, &v5->indexBuffer, 0x20u);
p_indexBuffer = &varXSurface->indexBuffer;
v14 = varXSurface->triIndices;
XGSetIndexBufferHeader(
2 * (varXSurface->triCount + __ROL4__(varXSurface->triCount, 1)),
0,
D3DFMT_INDEX16,
0,
0,
&varXSurface->indexBuffer);
XGOffsetResourceAddress(p_indexBuffer, v14);
}
// ?Load_SpeakerMapChannelArray@@YAX_NH@Z at 0x822a9d68
void Assets::Load_SpeakerMapChannelArray(QDataStream *aStream, int count)
{
XAUDIOCHANNELMAP *v2; // r31
int v3; // r30
Load_Stream(0, varSpeakerMapChannel, 0x20u);
v2 = (XAUDIOCHANNELMAP *)varSpeakerMapChannel;
v3 = 2;
do
{
varSpeakerMapChannel = (XAUDIOCHANNELMAP (*)[2])v2;
Load_Stream(0, v2, 0x10u);
varXAUDIOCHANNELMAP = (XAUDIOCHANNELMAP *)varSpeakerMapChannel;
Load_XAUDIOCHANNELMAPArray(0, 2);
--v3;
v2 += 2;
}
while ( v3 );
}
// ?Load_StreamedSound@@YAX_N@Z at 0x822a9dd8
void Assets::Load_StreamedSound(QDataStream *aStream)
{
Load_Stream(0, varStreamedSound, 0xCu);
varStreamFileName = &varStreamedSound->filename;
Load_StreamFileName(0);
}
// ?Load_LoadedSoundPtr@@YAX_N@Z at 0x822a9e28
void Assets::Load_LoadedSoundPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
LoadedSound **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varLoadedSoundPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varLoadedSoundPtr;
if ( *varLoadedSoundPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varLoadedSoundPtr = *(LoadedSound **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varLoadedSoundPtr = (LoadedSound *)v3;
varLoadedSound = (LoadedSound *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_LoadedSound(1);
v5 = varLoadedSoundPtr;
*v5 = (LoadedSound *)DB_AddXAsset((XAssetHeader *)0xA, (XAssetHeader *)*varLoadedSoundPtr, v6);
if ( inserted )
*inserted = *varLoadedSoundPtr;
}
DB_PopStreamPos();
}
// ?Load_XAnimPartTrans@@YAX_N@Z at 0x822a9f10
void Assets::Load_XAnimPartTrans(QDataStream *aStream)
{
int size; // r9
Load_Stream(1, varXAnimPartTrans, 4u);
size = varXAnimPartTrans->size;
varXAnimPartTransData = &varXAnimPartTrans->u;
if ( size )
{
varXAnimPartTransFrames = &varXAnimPartTrans->u.frames;
Load_XAnimPartTransFrames(1);
}
else
{
varvec3_t = (float (*)[3])&varXAnimPartTrans->u;
Load_Stream(1, &varXAnimPartTrans->u, 0xCu);
}
}
// ?Load_XAnimDeltaPartQuat@@YAX_N@Z at 0x822a9f98
void Assets::Load_XAnimDeltaPartQuat(QDataStream *aStream)
{
int size; // r9
Load_Stream(1, varXAnimDeltaPartQuat, 4u);
size = varXAnimDeltaPartQuat->size;
varXAnimDeltaPartQuatData = &varXAnimDeltaPartQuat->u;
if ( size )
{
varXAnimDeltaPartQuatDataFrames = &varXAnimDeltaPartQuat->u.frames;
Load_XAnimDeltaPartQuatDataFrames(1);
}
else
{
varXQuat2 = (__int16 (*)[2])&varXAnimDeltaPartQuat->u;
Load_Stream(1, &varXAnimDeltaPartQuat->u, 4u);
}
}
// ?Load_GfxReflectionProbe@@YAX_N@Z at 0x822aa020
void Assets::Load_GfxReflectionProbe(QDataStream *aStream)
{
Load_Stream(0, varGfxReflectionProbe, 0x10u);
varGfxImagePtr = &varGfxReflectionProbe->reflectionImage;
Load_GfxImagePtr(0);
}
// ?Load_PathData@@YAX_N@Z at 0x822aa0a0
void Assets::Load_PathData(QDataStream *aStream)
{
PathData *v1; // r31
unsigned int nodeCount; // r4
bool v3; // r3
size_t v4; // r5
unsigned __int8 *v5; // r4
size_t v6; // r5
unsigned __int8 *v7; // r4
size_t v8; // r5
unsigned __int8 *v9; // r4
unsigned __int8 *v10; // r4
size_t visBytes; // r5
int nodeTreeCount; // r4
Load_Stream(0, varPathData, 0x28u);
v1 = varPathData;
if ( varPathData->nodes )
{
nodeCount = varPathData->nodeCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varpathnode_t = (pathnode_t *)g_streamPos;
varPathData->nodes = (pathnode_t *)g_streamPos;
Load_pathnode_tArray(1, nodeCount);
v1 = varPathData;
}
DB_PushStreamPos(1u);
if ( v1->basenodes )
{
v4 = 16 * v1->nodeCount;
v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0);
g_streamPos = v5;
varpathbasenode_t = (pathbasenode_t *)v5;
v1->basenodes = (PathBaseNode *)v5;
Load_Stream(v3, v5, v4);
v1 = varPathData;
}
DB_PopStreamPos();
if ( v1->chainNodeForNode )
{
v6 = 2 * v1->nodeCount;
v7 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
g_streamPos = v7;
varUnsignedShort = (unsigned __int16 *)v7;
v1->chainNodeForNode = (unsigned __int16 *)v7;
Load_Stream(1, v7, v6);
v1 = varPathData;
}
if ( v1->nodeForChainNode )
{
v8 = 2 * v1->nodeCount;
v9 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
g_streamPos = v9;
varUnsignedShort = (unsigned __int16 *)v9;
v1->nodeForChainNode = (unsigned __int16 *)v9;
Load_Stream(1, v9, v8);
v1 = varPathData;
}
if ( v1->pathVis )
{
v10 = g_streamPos;
visBytes = v1->visBytes;
varbyte = g_streamPos;
v1->pathVis = g_streamPos;
Load_Stream(1, v10, visBytes);
v1 = varPathData;
}
if ( v1->nodeTree )
{
nodeTreeCount = v1->nodeTreeCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varpathnode_tree_t = (pathnode_tree_t *)g_streamPos;
v1->nodeTree = (pathnode_tree_t *)g_streamPos;
Load_pathnode_tree_tArray(1, nodeTreeCount);
}
}
// ?Load_PhysGeomInfoArray@@YAX_NH@Z at 0x822aa228
void Assets::Load_PhysGeomInfoArray(QDataStream *aStream, int count)
{
int v2; // r31
PhysGeomInfo *v3; // r30
BrushWrapper *brush; // r11
v2 = count;
Load_Stream(1, varPhysGeomInfo, 68 * count);
v3 = varPhysGeomInfo;
if ( v2 > 0 )
{
do
{
varPhysGeomInfo = v3;
Load_Stream(0, v3, 0x44u);
brush = varPhysGeomInfo->brush;
if ( varPhysGeomInfo->brush )
{
if ( brush == (BrushWrapper *)-1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varBrushWrapper = (BrushWrapper *)g_streamPos;
varPhysGeomInfo->brush = (BrushWrapper *)g_streamPos;
Load_BrushWrapper(1);
}
else
{
varPhysGeomInfo->brush = (BrushWrapper *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&brush[-1].planes + 3) >> 26) & 0x38)))[((unsigned int)&brush[-1].planes + 3) & 0x1FFFFFFF];
}
}
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_GfxLightmapArray@@YAX_N@Z at 0x822aa2e8
void Assets::Load_GfxLightmapArray(QDataStream *aStream)
{
Load_Stream(0, varGfxLightmapArray, 8u);
varGfxImagePtr = &varGfxLightmapArray->primary;
Load_GfxImagePtr(0);
varGfxImagePtr = &varGfxLightmapArray->secondary;
Load_GfxImagePtr(0);
}
// ?Load_GfxLightImage@@YAX_N@Z at 0x822aa350
void Assets::Load_GfxLightImage(QDataStream *aStream)
{
Load_Stream(0, varGfxLightImage, 8u);
varGfxImagePtr = &varGfxLightImage->image;
Load_GfxImagePtr(0);
}
// ?Load_MaterialVertexShaderPtrArray@@YAX_NH@Z at 0x822aa3a0
void Assets::Load_MaterialVertexShaderPtrArray(QDataStream *aStream, int count)
{
MaterialVertexShader **v2; // r31
int v3; // r29
bool v4; // r3
Load_Stream(0, varMaterialVertexShaderPtr, 0x3Cu);
v2 = varMaterialVertexShaderPtr;
v3 = 15;
do
{
varMaterialVertexShaderPtr = v2;
Load_Stream(0, v2, 4u);
if ( *varMaterialVertexShaderPtr )
Load_MaterialVertexShaderPtr(v4);
--v3;
++v2;
}
while ( v3 );
}
// ?Load_water_t@@YAX_N@Z at 0x822aa408
void Assets::Load_water_t(QDataStream *aStream)
{
water_t *v1; // r11
int N; // r9
int M; // r8
unsigned __int8 *v4; // r4
int v5; // r9
int v6; // r8
unsigned __int8 *v7; // r4
int v8; // r9
int v9; // r8
unsigned __int8 *v10; // r4
Load_Stream(1, varwater_t, 0x48u);
v1 = varwater_t;
if ( varwater_t->H0X )
{
N = varwater_t->N;
M = varwater_t->M;
v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v4;
varwater_t->H0X = (float *)v4;
varfloat = (float *)v4;
Load_Stream(1, v4, 4 * N * M);
v1 = varwater_t;
}
if ( v1->H0Y )
{
v5 = v1->N;
v6 = v1->M;
v7 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v7;
v1->H0Y = (float *)v7;
varfloat = (float *)v7;
Load_Stream(1, v7, 4 * v5 * v6);
v1 = varwater_t;
}
if ( v1->wTerm )
{
v8 = v1->N;
v9 = v1->M;
v10 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v10;
v1->wTerm = (float *)v10;
varfloat = (float *)v10;
Load_Stream(1, v10, 4 * v8 * v9);
v1 = varwater_t;
}
varGfxImagePtr = &v1->image;
Load_GfxImagePtr(0);
}
// ?Load_XSurfaceArray@@YAX_NH@Z at 0x822aa510
void Assets::Load_XSurfaceArray(QDataStream *aStream, int count)
{
int v2; // r31
XSurface *v3; // r30
v2 = count;
Load_Stream(1, varXSurface, 116 * count);
v3 = varXSurface;
if ( v2 > 0 )
{
do
{
varXSurface = v3;
Load_XSurface(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_SpeakerMap@@YAX_N@Z at 0x822aa568
void Assets::Load_SpeakerMap(QDataStream *aStream)
{
Load_Stream(1, varSpeakerMap, 0x28u);
varXString = &varSpeakerMap->name;
Load_XString(0);
varSpeakerMapChannel = varSpeakerMap->channelMaps;
Load_SpeakerMapChannelArray(0, 2);
}
// ?Load_SoundFileRef@@YAX_N@Z at 0x822aa5d8
void Assets::Load_SoundFileRef(QDataStream *aStream)
{
if ( varSoundFile->type == 1 )
{
varLoadedSoundPtr = &varSoundFileRef->loadSnd;
Load_LoadedSoundPtr(0);
}
else
{
varStreamedSound = (StreamedSound *)varSoundFileRef;
Load_Stream(0, varSoundFileRef, 0xCu);
varStreamFileName = &varStreamedSound->filename;
Load_StreamFileName(0);
}
}
// ?Load_XAnimDeltaPart@@YAX_N@Z at 0x822aa668
void Assets::Load_XAnimDeltaPart(QDataStream *aStream)
{
XAnimDeltaPart *v1; // r11
Load_Stream(1, varXAnimDeltaPart, 8u);
v1 = varXAnimDeltaPart;
if ( varXAnimDeltaPart->trans )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXAnimPartTrans = (XAnimPartTrans *)g_streamPos;
varXAnimDeltaPart->trans = (XAnimPartTrans *)g_streamPos;
Load_XAnimPartTrans(1);
v1 = varXAnimDeltaPart;
}
if ( v1->quat )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXAnimDeltaPartQuat = (XAnimDeltaPartQuat *)g_streamPos;
v1->quat = (XAnimDeltaPartQuat *)g_streamPos;
Load_XAnimDeltaPartQuat(1);
}
}
// ?Load_GfxReflectionProbeArray@@YAX_NH@Z at 0x822aa718
void Assets::Load_GfxReflectionProbeArray(QDataStream *aStream, int count)
{
int v2; // r30
GfxReflectionProbe *v3; // r31
v2 = count;
Load_Stream(1, varGfxReflectionProbe, 16 * count);
v3 = varGfxReflectionProbe;
if ( v2 > 0 )
{
do
{
varGfxReflectionProbe = v3;
Load_Stream(0, v3, 0x10u);
varGfxImagePtr = &varGfxReflectionProbe->reflectionImage;
Load_GfxImagePtr(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_expressionEntry_ptrArray@@YAX_NH@Z at 0x822aa790
void Assets::Load_expressionEntry_ptrArray(QDataStream *aStream, int count)
{
expressionEntry **v3; // r28
int v4; // r26
unsigned __int8 *v5; // r4
int type; // r10
Load_Stream(1, varexpressionEntry_ptr, 4 * count);
v3 = varexpressionEntry_ptr;
if ( count > 0 )
{
v4 = count;
do
{
varexpressionEntry_ptr = v3;
Load_Stream(0, v3, 4u);
if ( *varexpressionEntry_ptr )
{
v5 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v5;
varexpressionEntry = (expressionEntry *)v5;
*varexpressionEntry_ptr = (expressionEntry *)v5;
Load_Stream(1, v5, 0xCu);
type = varexpressionEntry->type;
varentryInternalData = &varexpressionEntry->data;
if ( type )
{
varOperand = (Operand *)&varexpressionEntry->data;
Load_Operand(0);
}
}
--v4;
++v3;
}
while ( v4 );
}
}
// ?Load_GameWorldSp@@YAX_N@Z at 0x822aa858
void Assets::Load_GameWorldSp(QDataStream *aStream)
{
Load_Stream(1, varGameWorldSp, 0x2Cu);
DB_PushStreamPos(4u);
varXString = &varGameWorldSp->name;
Load_XString(0);
varPathData = &varGameWorldSp->path;
Load_PathData(0);
DB_PopStreamPos();
}
// ?Load_PhysGeomList@@YAX_N@Z at 0x822aa8c8
void Assets::Load_PhysGeomList(QDataStream *aStream)
{
unsigned int count; // r4
unsigned __int8 *v2; // r11
Load_Stream(1, varPhysGeomList, 0x2Cu);
if ( varPhysGeomList->geoms )
{
count = varPhysGeomList->count;
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
varPhysGeomList->geoms = (PhysGeomInfo *)v2;
varPhysGeomInfo = (PhysGeomInfo *)v2;
Load_PhysGeomInfoArray(1, count);
}
}
// ?Load_GfxLightmapArrayArray@@YAX_NH@Z at 0x822aa940
void Assets::Load_GfxLightmapArrayArray(QDataStream *aStream, int count)
{
int v2; // r29
GfxLightmapArray *v3; // r31
v2 = count;
Load_Stream(1, varGfxLightmapArray, 8 * count);
v3 = varGfxLightmapArray;
if ( v2 > 0 )
{
do
{
varGfxLightmapArray = v3;
Load_Stream(0, v3, 8u);
varGfxImagePtr = &varGfxLightmapArray->primary;
Load_GfxImagePtr(0);
varGfxImagePtr = &varGfxLightmapArray->secondary;
Load_GfxImagePtr(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_GfxLightDef@@YAX_N@Z at 0x822aa9c8
void Assets::Load_GfxLightDef(QDataStream *aStream)
{
Load_Stream(1, varGfxLightDef, 0x10u);
DB_PushStreamPos(4u);
varXString = &varGfxLightDef->name;
Load_XString(0);
varGfxLightImage = &varGfxLightDef->attenuation;
Load_Stream(0, &varGfxLightDef->attenuation, 8u);
varGfxImagePtr = &varGfxLightImage->image;
Load_GfxImagePtr(0);
DB_PopStreamPos();
}
// ?Load_MaterialTextureDefInfo@@YAX_N@Z at 0x822aaa50
void Assets::Load_MaterialTextureDefInfo(QDataStream *aStream)
{
GfxImage *image; // r11
unsigned __int8 *v2; // r11
if ( varMaterialTextureDef->semantic == 11 )
{
image = varMaterialTextureDefInfo->image;
if ( varMaterialTextureDefInfo->image )
{
if ( image == (GfxImage *)-1 )
{
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
varMaterialTextureDefInfo->image = (GfxImage *)v2;
varwater_t = (water_t *)v2;
Load_water_t(1);
}
else
{
varMaterialTextureDefInfo->image = (GfxImage *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&image[-1].name + 3) >> 26) & 0x38)))[((unsigned int)&image[-1].name + 3) & 0x1FFFFFFF];
}
}
}
else
{
varGfxImagePtr = &varMaterialTextureDefInfo->image;
Load_GfxImagePtr(0);
}
}
// ?Load_MaterialPass@@YAX_N@Z at 0x822aaae0
void Assets::Load_MaterialPass(QDataStream *aStream)
{
MaterialPass *v1; // r11
MaterialVertexDeclaration *vertexDecl; // r10
MaterialVertexDeclaration *v3; // r4
MaterialPass *v4; // r11
MaterialVertexShader *vertexShader; // r10
int v6; // r4
Load_Stream(0, varMaterialPass, 0x54u);
v1 = varMaterialPass;
vertexDecl = varMaterialPass->vertexDecl;
if ( varMaterialPass->vertexDecl )
{
if ( vertexDecl == (MaterialVertexDeclaration *)-1 )
{
v3 = (MaterialVertexDeclaration *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = &v3->streamCount;
varMaterialVertexDeclaration = v3;
varMaterialPass->vertexDecl = v3;
Load_Stream(1, v3, 0x40u);
Load_BuildVertexDecl(&varMaterialPass->vertexDecl);
v1 = varMaterialPass;
}
else
{
varMaterialPass->vertexDecl = (MaterialVertexDeclaration *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&vertexDecl[-1].routing.decl[14]
+ 3) >> 26) & 0x38)))[((unsigned int)&vertexDecl[-1].routing.decl[14] + 3) & 0x1FFFFFFF];
}
}
varMaterialVertexShaderPtr = v1->vertexShaderArray;
Load_MaterialVertexShaderPtrArray(0, 15);
v4 = varMaterialPass;
vertexShader = varMaterialPass->vertexShader;
if ( vertexShader )
{
if ( vertexShader == (MaterialVertexShader *)-1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varMaterialVertexShader = (MaterialVertexShader *)g_streamPos;
varMaterialPass->vertexShader = (MaterialVertexShader *)g_streamPos;
Load_MaterialVertexShader(1);
v4 = varMaterialPass;
}
else
{
varMaterialPass->vertexShader = (MaterialVertexShader *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varMaterialPass->vertexShader[-1].prog.loadDef.physicalPartSize
+ 1) >> 26) & 0x38)))[((int)&varMaterialPass->vertexShader[-1].prog.loadDef.physicalPartSize + 1) & 0x1FFFFFFF];
}
}
varMaterialPixelShaderPtr = &v4->pixelShader;
Load_MaterialPixelShaderPtr(0);
if ( varMaterialPass->args )
{
v6 = varMaterialPass->stableArgCount + varMaterialPass->perObjArgCount + varMaterialPass->perPrimArgCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varMaterialShaderArgument = (MaterialShaderArgument *)g_streamPos;
varMaterialPass->args = (MaterialShaderArgument *)g_streamPos;
Load_MaterialShaderArgumentArray(1, v6);
}
}
// ?Load_SoundFile@@YAX_N@Z at 0x822aac58
void Assets::Load_SoundFile(QDataStream *aStream)
{
Load_Stream(1, varSoundFile, 0x10u);
varSoundFileRef = &varSoundFile->u;
Load_SoundFileRef(0);
}
// ?Load_XAnimParts@@YAX_N@Z at 0x822aaca8
void Assets::Load_XAnimParts(QDataStream *aStream)
{
XAnimParts *v1; // r11
int v2; // r4
int notifyCount; // r4
unsigned __int8 *v4; // r4
size_t dataByteCount; // r5
size_t v6; // r5
unsigned __int8 *v7; // r4
size_t v8; // r5
unsigned __int8 *v9; // r4
size_t v10; // r5
unsigned __int8 *v11; // r4
unsigned __int8 *v12; // r4
size_t randomDataByteCount; // r5
size_t v14; // r5
unsigned __int8 *v15; // r4
Load_Stream(1, varXAnimParts, 0x5Cu); // 92
DB_PushStreamPos(4u);
varXString = &varXAnimParts->name;
Load_XString(0);
v1 = varXAnimParts;
if ( varXAnimParts->names )
{
v2 = varXAnimParts->boneCount[11];
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
varScriptString = (unsigned __int16 *)g_streamPos;
varXAnimParts->names = (unsigned __int16 *)g_streamPos;
Load_ScriptStringArray(1, v2);
v1 = varXAnimParts;
}
if ( v1->notify )
{
notifyCount = v1->notifyCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXAnimNotifyInfo = (XAnimNotifyInfo *)g_streamPos;
v1->notify = (XAnimNotifyInfo *)g_streamPos;
Load_XAnimNotifyInfoArray(1, notifyCount);
v1 = varXAnimParts;
}
if ( v1->deltaPart )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXAnimDeltaPart = (XAnimDeltaPart *)g_streamPos;
v1->deltaPart = (XAnimDeltaPart *)g_streamPos;
Load_XAnimDeltaPart(1);
v1 = varXAnimParts;
}
if ( v1->dataByte )
{
v4 = g_streamPos;
dataByteCount = v1->dataByteCount;
varbyte = g_streamPos;
v1->dataByte = g_streamPos;
Load_Stream(1, v4, dataByteCount);
v1 = varXAnimParts;
}
if ( v1->dataShort )
{
v6 = __ROL4__(v1->dataShortCount, 1);
v7 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
g_streamPos = v7;
varshort = (__int16 *)v7;
v1->dataShort = (__int16 *)v7;
Load_Stream(1, v7, v6);
v1 = varXAnimParts;
}
if ( v1->dataInt )
{
v8 = __ROL4__(v1->dataIntCount, 2);
v9 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v9;
varint = (int *)v9;
v1->dataInt = (int *)v9;
Load_Stream(1, v9, v8);
v1 = varXAnimParts;
}
if ( v1->randomDataShort )
{
v10 = 2 * v1->randomDataShortCount;
v11 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
g_streamPos = v11;
varshort = (__int16 *)v11;
v1->randomDataShort = (__int16 *)v11;
Load_Stream(1, v11, v10);
v1 = varXAnimParts;
}
if ( v1->randomDataByte )
{
v12 = g_streamPos;
randomDataByteCount = v1->randomDataByteCount;
varbyte = g_streamPos;
v1->randomDataByte = g_streamPos;
Load_Stream(1, v12, randomDataByteCount);
v1 = varXAnimParts;
}
if ( v1->randomDataInt )
{
v14 = __ROL4__(v1->randomDataIntCount, 2);
v15 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v15;
varint = (int *)v15;
v1->randomDataInt = (int *)v15;
Load_Stream(1, v15, v14);
v1 = varXAnimParts;
}
varXAnimIndices = &v1->indices;
Load_XAnimIndices(0);
DB_PopStreamPos();
}
// ?Load_statement@@YAX_N@Z at 0x822aaef8
void Assets::Load_statement(QDataStream *aStream)
{
int numEntries; // r4
unsigned __int8 *v2; // r11
Load_Stream(0, varstatement, 8u);
if ( varstatement->entries )
{
numEntries = varstatement->numEntries;
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
varstatement->entries = (expressionEntry **)v2;
varexpressionEntry_ptr = (expressionEntry **)v2;
Load_expressionEntry_ptrArray(1, numEntries);
}
}
// ?Load_GameWorldSpPtr@@YAX_N@Z at 0x822aaf70
void Assets::Load_GameWorldSpPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
GameWorldSp **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varGameWorldSpPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varGameWorldSpPtr;
if ( *varGameWorldSpPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varGameWorldSpPtr = *(GameWorldSp **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varGameWorldSpPtr = (GameWorldSp *)v3;
varGameWorldSp = (GameWorldSp *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_GameWorldSp(1);
v5 = varGameWorldSpPtr;
*v5 = (GameWorldSp *)DB_AddXAsset((XAssetHeader *)0xE, (XAssetHeader *)*varGameWorldSpPtr, v6);
if ( inserted )
*inserted = *varGameWorldSpPtr;
}
DB_PopStreamPos();
}
// ?Load_GfxLightDefPtr@@YAX_N@Z at 0x822ab058
void Assets::Load_GfxLightDefPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
GfxLightDef **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varGfxLightDefPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varGfxLightDefPtr;
if ( *varGfxLightDefPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varGfxLightDefPtr = *(GfxLightDef **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varGfxLightDefPtr = (GfxLightDef *)v3;
varGfxLightDef = (GfxLightDef *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_GfxLightDef(1);
v5 = varGfxLightDefPtr;
*v5 = (GfxLightDef *)DB_AddXAsset((XAssetHeader *)0x12, (XAssetHeader *)*varGfxLightDefPtr, v6);
if ( inserted )
*inserted = *varGfxLightDefPtr;
}
DB_PopStreamPos();
}
// ?Load_MaterialTextureDef@@YAX_N@Z at 0x822ab140
void Assets::Load_MaterialTextureDef(QDataStream *aStream)
{
Load_Stream(0, varMaterialTextureDef, 0xCu);
varMaterialTextureDefInfo = &varMaterialTextureDef->u;
Load_MaterialTextureDefInfo(0);
}
// ?Load_MaterialPassArray@@YAX_NH@Z at 0x822ab190
void Assets::Load_MaterialPassArray(QDataStream *aStream, int count)
{
int v2; // r31
MaterialPass *v3; // r30
v2 = count;
Load_Stream(1, varMaterialPass, 84 * count);
v3 = varMaterialPass;
if ( v2 > 0 )
{
do
{
varMaterialPass = v3;
Load_MaterialPass(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_snd_alias_t@@YAX_N@Z at 0x822ab1e8
void Assets::Load_snd_alias_t(QDataStream *aStream)
{
snd_alias_t *v1; // r11
SoundFile *soundFile; // r10
SpeakerMap *speakerMap; // r10
Load_Stream(0, varsnd_alias_t, 0x5Cu);
varXString = &varsnd_alias_t->aliasName;
Load_XString(0);
varXString = &varsnd_alias_t->subtitle;
Load_XString(0);
varXString = &varsnd_alias_t->secondaryAliasName;
Load_XString(0);
varXString = &varsnd_alias_t->chainAliasName;
Load_XString(0);
v1 = varsnd_alias_t;
soundFile = varsnd_alias_t->soundFile;
if ( soundFile )
{
if ( soundFile == (SoundFile *)-1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varSoundFile = (SoundFile *)g_streamPos;
varsnd_alias_t->soundFile = (SoundFile *)g_streamPos;
Load_SoundFile(1);
v1 = varsnd_alias_t;
}
else
{
varsnd_alias_t->soundFile = (SoundFile *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varsnd_alias_t->soundFile[-1].u.streamSnd.filename.info.packed.length
+ 3) >> 26) & 0x38)))[((int)&varsnd_alias_t->soundFile[-1].u.streamSnd.filename.info.packed.length
+ 3) & 0x1FFFFFFF];
}
}
varSndCurvePtr = &v1->volumeFalloffCurve;
Load_SndCurvePtr(0);
speakerMap = varsnd_alias_t->speakerMap;
if ( speakerMap )
{
if ( speakerMap == (SpeakerMap *)-1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varSpeakerMap = (SpeakerMap *)g_streamPos;
varsnd_alias_t->speakerMap = (SpeakerMap *)g_streamPos;
Load_SpeakerMap(1);
}
else
{
varsnd_alias_t->speakerMap = (SpeakerMap *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varsnd_alias_t->speakerMap[-1].channelMaps[1][1].paEntries
+ 3) >> 26) & 0x38)))[((int)&varsnd_alias_t->speakerMap[-1].channelMaps[1][1].paEntries
+ 3) & 0x1FFFFFFF];
}
}
}
// ?Load_XAnimPartsPtr@@YAX_N@Z at 0x822ab348
void Assets::Load_XAnimPartsPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
XAnimParts **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varXAnimPartsPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varXAnimPartsPtr;
if ( *varXAnimPartsPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varXAnimPartsPtr = *(XAnimParts **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varXAnimPartsPtr = (XAnimParts *)v3;
varXAnimParts = (XAnimParts *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_XAnimParts(1);
v5 = varXAnimPartsPtr;
*v5 = (XAnimParts *)DB_AddXAsset((XAssetHeader *)2, (XAssetHeader *)*varXAnimPartsPtr, v6);
if ( inserted )
*inserted = *varXAnimPartsPtr;
}
DB_PopStreamPos();
}
// ?Load_GfxLight@@YAX_N@Z at 0x822ab430
void Assets::Load_GfxLight(QDataStream *aStream)
{
Load_Stream(1, varGfxLight, 0x40u);
varGfxLightDefPtr = &varGfxLight->def;
Load_GfxLightDefPtr(0);
}
// ?Load_MaterialTextureDefArray@@YAX_NH@Z at 0x822ab480
void Assets::Load_MaterialTextureDefArray(QDataStream *aStream, int count)
{
int v2; // r30
MaterialTextureDef *v3; // r31
v2 = count;
Load_Stream(1, varMaterialTextureDef, 12 * count);
v3 = varMaterialTextureDef;
if ( v2 > 0 )
{
do
{
varMaterialTextureDef = v3;
Load_Stream(0, v3, 0xCu);
varMaterialTextureDefInfo = &varMaterialTextureDef->u;
Load_MaterialTextureDefInfo(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_MaterialTechnique@@YAX_N@Z at 0x822ab500
void Assets::Load_MaterialTechnique(QDataStream *aStream)
{
int passCount; // r4
Load_Stream(1, varMaterialTechnique, 8u);
passCount = varMaterialTechnique->passCount;
varMaterialPass = varMaterialTechnique->passArray;
Load_MaterialPassArray(1, passCount);
varXString = &varMaterialTechnique->name;
Load_XString(0);
}
// ?Load_snd_alias_tArray@@YAX_NH@Z at 0x822ab568
void Assets::Load_snd_alias_tArray(QDataStream *aStream, int count)
{
int v2; // r31
snd_alias_t *v3; // r30
v2 = count;
Load_Stream(1, varsnd_alias_t, 92 * count);
v3 = varsnd_alias_t;
if ( v2 > 0 )
{
do
{
varsnd_alias_t = v3;
Load_snd_alias_t(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_snd_alias_list_t@@YAX_N@Z at 0x822ab620
void Assets::Load_snd_alias_list_t(QDataStream *aStream)
{
snd_alias_t *head; // r10
int count; // r4
unsigned __int8 *v3; // r10
Load_Stream(1, varsnd_alias_list_t, 0xCu);
DB_PushStreamPos(4u);
varXString = &varsnd_alias_list_t->aliasName;
Load_XString(0);
head = varsnd_alias_list_t->head;
if ( head )
{
if ( head == (snd_alias_t *)-1 )
{
count = varsnd_alias_list_t->count;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
varsnd_alias_list_t->head = (snd_alias_t *)v3;
varsnd_alias_t = (snd_alias_t *)v3;
Load_snd_alias_tArray(1, count);
}
else
{
varsnd_alias_list_t->head = (snd_alias_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varsnd_alias_list_t->head[-1].speakerMap
+ 3) >> 26) & 0x38)))[((int)&varsnd_alias_list_t->head[-1].speakerMap
+ 3) & 0x1FFFFFFF];
}
}
DB_PopStreamPos();
}
// ?Load_MaterialTechniquePtrArray@@YAX_NH@Z at 0x822ab6e8
void Assets::Load_MaterialTechniquePtrArray(QDataStream *aStream, int count)
{
MaterialTechnique **v2; // r31
int v3; // r26
int v4; // r11
Load_Stream(0, varMaterialTechniquePtr, 0x68u);
v2 = varMaterialTechniquePtr;
v3 = 26;
do
{
varMaterialTechniquePtr = v2;
Load_Stream(0, v2, 4u);
v4 = (int)*varMaterialTechniquePtr;
if ( *varMaterialTechniquePtr )
{
if ( v4 == -1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varMaterialTechnique = (MaterialTechnique *)g_streamPos;
*varMaterialTechniquePtr = (MaterialTechnique *)g_streamPos;
Load_MaterialTechnique(1);
}
else
{
*varMaterialTechniquePtr = (MaterialTechnique *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v4 - 1) >> 26) & 0x38)))[(v4 - 1) & 0x1FFFFFFF];
}
}
--v3;
++v2;
}
while ( v3 );
}
// ?Load_snd_alias_list_ptr@@YAX_N@Z at 0x822ab7a0
void Assets::Load_snd_alias_list_ptr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
SoundAliasList **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varsnd_alias_list_ptr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varsnd_alias_list_ptr;
if ( *varsnd_alias_list_ptr )
{
if ( v1 != -1 && v1 != -2 )
{
*varsnd_alias_list_ptr = *(snd_alias_list_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varsnd_alias_list_ptr = (snd_alias_list_t *)v3;
varsnd_alias_list_t = (snd_alias_list_t *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_snd_alias_list_t(1);
v5 = varsnd_alias_list_ptr;
*v5 = (snd_alias_list_t *)DB_AddXAsset((XAssetHeader *)8, (XAssetHeader *)*varsnd_alias_list_ptr, v6);
if ( inserted )
*inserted = *varsnd_alias_list_ptr;
}
DB_PopStreamPos();
}
// ?Load_MaterialTechniqueSet@@YAX_N@Z at 0x822ab888
void Assets::Load_MaterialTechniqueSet(QDataStream *aStream)
{
Load_Stream(1, varMaterialTechniqueSet, 116);
DB_PushStreamPos(4u);
varXString = &varMaterialTechniqueSet->name;
Load_XString(0);
varMaterialTechniquePtr = varMaterialTechniqueSet->techniques;
Load_MaterialTechniquePtrArray(0, 26);
DB_PopStreamPos();
}
// ?Load_MaterialTechniqueSetPtr@@YAX_N@Z at 0x822ab900
void Assets::Load_MaterialTechniqueSetPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
MaterialTechniqueSet **v5; // r31
XAssetHeader *v6; // r5
XAssetHeader *v7; // r3
Load_Stream(0, varMaterialTechniqueSetPtr, 4);
DB_PushStreamPos(0);
v1 = (int)*varMaterialTechniqueSetPtr;
if ( *varMaterialTechniqueSetPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varMaterialTechniqueSetPtr = *(MaterialTechniqueSet **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varMaterialTechniqueSetPtr = (MaterialTechniqueSet *)v3;
varMaterialTechniqueSet = (MaterialTechniqueSet *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_MaterialTechniqueSet(1);
v5 = varMaterialTechniqueSetPtr;
v7 = DB_AddXAsset((XAssetHeader *)6, (XAssetType)*varMaterialTechniqueSetPtr, v6);
*v5 = (MaterialTechniqueSet *)v7;
v7[2].xmodelPieces = (XModelPieces *)v7;
if ( inserted )
*inserted = *varMaterialTechniqueSetPtr;
}
DB_PopStreamPos();
}
// ?Load_Material@@YAX_N@Z at 0x822ab9f0
void Assets::Load_Material(QDataStream *aStream)
{
Material *v1; // r11
MaterialTextureDef *textureTable; // r10
int textureCount; // r4
MaterialConstantDef *constantTable; // r10
size_t v5; // r5
unsigned __int8 *v6; // r4
GfxStateBits *stateBitsTable; // r10
size_t v8; // r5
unsigned __int8 *v9; // r4
Load_Stream(1, varMaterial, 0x48u);
DB_PushStreamPos(4u);
varMaterialInfo = &varMaterial->info;
Load_Stream(0, varMaterial, 0x18u);
varXString = &varMaterialInfo->name;
Load_XString(0);
varMaterialTechniqueSetPtr = &varMaterial->techniqueSet;
Load_MaterialTechniqueSetPtr(0);
v1 = varMaterial;
textureTable = varMaterial->textureTable;
if ( textureTable )
{
if ( textureTable == (MaterialTextureDef *)-1 )
{
textureCount = varMaterial->textureCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varMaterialTextureDef = (MaterialTextureDef *)g_streamPos;
varMaterial->textureTable = (MaterialTextureDef *)g_streamPos;
Load_MaterialTextureDefArray(1, textureCount);
v1 = varMaterial;
}
else
{
varMaterial->textureTable = (MaterialTextureDef *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varMaterial->textureTable[-1].u.water
+ 3) >> 26) & 0x38)))[((int)&varMaterial->textureTable[-1].u.water + 3) & 0x1FFFFFFF];
}
}
constantTable = v1->constantTable;
if ( constantTable )
{
if ( constantTable == (MaterialConstantDef *)-1 )
{
v5 = __ROL4__(v1->constantCount, 5);
v6 = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0);
g_streamPos = v6;
varMaterialConstantDef = (MaterialConstantDef *)v6;
v1->constantTable = (MaterialConstantDef *)v6;
Load_Stream(1, v6, v5);
v1 = varMaterial;
}
else
{
v1->constantTable = (MaterialConstantDef *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&v1->constantTable[-1].literal[3]
+ 3) >> 26) & 0x38)))[((int)&v1->constantTable[-1].literal[3]
+ 3) & 0x1FFFFFFF];
}
}
stateBitsTable = v1->stateBitsTable;
if ( stateBitsTable )
{
if ( stateBitsTable == (GfxStateBits *)-1 )
{
v8 = __ROL4__(v1->stateBitsCount, 3);
v9 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v9;
varGfxStateBits = (GfxStateBits *)v9;
v1->stateBitsTable = (GfxStateBits *)v9;
Load_Stream(1, v9, v8);
DB_PopStreamPos();
return;
}
v1->stateBitsTable = (GfxStateBits *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&v1->stateBitsTable[-1].loadBits[1] + 3) >> 26) & 0x38)))[((int)&v1->stateBitsTable[-1].loadBits[1] + 3) & 0x1FFFFFFF];
}
DB_PopStreamPos();
}
// ?Load_MaterialHandle@@YAX_N@Z at 0x822abbb0
void Assets::Load_MaterialHandle(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
Material **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varMaterialHandle, 4u);
DB_PushStreamPos(0);
v1 = (int)*varMaterialHandle;
if ( *varMaterialHandle )
{
if ( v1 != -1 && v1 != -2 )
{
*varMaterialHandle = *(Material **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varMaterialHandle = (Material *)v3;
varMaterial = (Material *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_Material(1);
v5 = varMaterialHandle;
*v5 = (Material *)DB_AddXAsset((XAssetHeader *)4, (XAssetHeader *)*varMaterialHandle, v6);
if ( inserted )
*inserted = *varMaterialHandle;
}
DB_PopStreamPos();
}
// ?Load_Font@@YAX_N@Z at 0x822abc98
void Assets::Load_Font(QDataStream *aStream)
{
Glyph *glyphs; // r10
int glyphCount; // r10
Glyph *v3; // r4
Load_Stream(1, varFont, 0x18u);
DB_PushStreamPos(4u);
varXString = &varFont->fontName;
Load_XString(0);
varMaterialHandle = &varFont->material;
Load_MaterialHandle(0);
varMaterialHandle = &varFont->glowMaterial;
Load_MaterialHandle(0);
glyphs = varFont->glyphs;
if ( glyphs )
{
if ( glyphs == (Glyph *)-1 )
{
glyphCount = varFont->glyphCount;
v3 = (Glyph *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varFont->glyphs = v3;
g_streamPos = (unsigned __int8 *)v3;
varGlyph = v3;
Load_Stream(1, v3, 24 * glyphCount);
}
else
{
varFont->glyphs = (Glyph *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varFont->glyphs[-1].t1 + 3) >> 26) & 0x38)))[((int)&varFont->glyphs[-1].t1 + 3) & 0x1FFFFFFF];
}
}
DB_PopStreamPos();
}
// ?Load_MaterialMemory@@YAX_N@Z at 0x822abda0
void Assets::Load_MaterialMemory(QDataStream *aStream)
{
Load_Stream(0, varMaterialMemory, 8u);
varMaterialHandle = &varMaterialMemory->material;
Load_MaterialHandle(0);
}
// ?Load_sunflare_t@@YAX_N@Z at 0x822abdf0
void Assets::Load_sunflare_t(QDataStream *aStream)
{
Load_Stream(0, varsunflare_t, 0x60u);
varMaterialHandle = &varsunflare_t->spriteMaterial;
Load_MaterialHandle(0);
varMaterialHandle = &varsunflare_t->flareMaterial;
Load_MaterialHandle(0);
}
// ?Load_windowDef_t@@YAX_N@Z at 0x822abe60
void Assets::Load_windowDef_t(QDataStream *aStream)
{
Load_Stream(0, varwindowDef_t, 0xA8u);
varXString = &varwindowDef_t->name;
Load_XString(0);
varXString = &varwindowDef_t->group;
Load_XString(0);
varMaterialHandle = &varwindowDef_t->background;
Load_MaterialHandle(0);
}
// ?Load_listBoxDef_t@@YAX_N@Z at 0x822abee0
void Assets::Load_listBoxDef_t(QDataStream *aStream)
{
Load_Stream(1, varlistBoxDef_t, 0x168u);
varXString = &varlistBoxDef_t->doubleClick;
Load_XString(0);
varMaterialHandle = &varlistBoxDef_t->selectIcon;
Load_MaterialHandle(0);
}
// ?Load_GfxSurface@@YAX_N@Z at 0x822abf48
void Assets::Load_GfxSurface(QDataStream *aStream)
{
Load_Stream(0, varGfxSurface, 0x48u);
varMaterialHandle = &varGfxSurface->material;
Load_MaterialHandle(0);
}
// ?Load_MaterialHandleArray@@YAX_NH@Z at 0x822abf98
void Assets::Load_MaterialHandleArray(QDataStream *aStream, int count)
{
int v2; // r30
Material **v3; // r31
v2 = count;
Load_Stream(atStreamStart, varMaterialHandle, 4 * count);
v3 = varMaterialHandle;
if ( v2 > 0 )
{
do
{
varMaterialHandle = v3;
Load_MaterialHandle(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_FontHandle@@YAX_N@Z at 0x822abfe8
void Assets::Load_FontHandle(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
Font_s **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varFontHandle, 4u);
DB_PushStreamPos(0);
v1 = (int)*varFontHandle;
if ( *varFontHandle )
{
if ( v1 != -1 && v1 != -2 )
{
*varFontHandle = *(Font_s **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varFontHandle = (Font_s *)v3;
varFont = (Font_s *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_Font(1);
v5 = varFontHandle;
*v5 = (Font_s *)DB_AddXAsset((XAssetHeader *)0x14, (XAssetHeader *)*varFontHandle, v6);
if ( inserted )
*inserted = *varFontHandle;
}
DB_PopStreamPos();
}
// ?Load_MaterialMemoryArray@@YAX_NH@Z at 0x822ac0d0
void Assets::Load_MaterialMemoryArray(QDataStream *aStream, int count)
{
int v2; // r30
MaterialMemory *v3; // r31
v2 = count;
Load_Stream(1, varMaterialMemory, 8 * count);
v3 = varMaterialMemory;
if ( v2 > 0 )
{
do
{
varMaterialMemory = v3;
Load_Stream(0, v3, 8u);
varMaterialHandle = &varMaterialMemory->material;
Load_MaterialHandle(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_Window@@YAX_N@Z at 0x822ac140
void Assets::Load_Window(QDataStream *aStream)
{
Load_Stream(0, varWindow, 0xA8u);
varwindowDef_t = varWindow;
Load_windowDef_t(0);
}
// ?Load_FxElemMarkVisuals@@YAX_N@Z at 0x822ac1c0
void Assets::Load_FxElemMarkVisuals(QDataStream *aStream)
{
Material **v1; // r30
int v2; // r31
Load_Stream(0, varFxElemMarkVisuals, 8u);
varMaterialHandle = (Material **)varFxElemMarkVisuals;
Load_Stream(0, varFxElemMarkVisuals, 8u);
v1 = varMaterialHandle;
v2 = 2;
do
{
varMaterialHandle = v1;
Load_MaterialHandle(0);
--v2;
++v1;
}
while ( v2 );
}
// ?Load_XModel@@YAX_N@Z at 0x822ac228
void Assets::Load_XModel(QDataStream *aStream)
{
XModel *v1; // r11
unsigned __int16 *boneNames; // r10
int numBones; // r4
unsigned __int8 *parentList; // r10
unsigned __int8 *v5; // r4
size_t v6; // r5
__int16 *quats; // r10
unsigned __int8 *v8; // r4
size_t v9; // r5
float *trans; // r10
unsigned __int8 *v11; // r4
size_t v12; // r5
unsigned __int8 *partClassification; // r10
unsigned __int8 *v14; // r4
size_t v15; // r5
DObjAnimMat *baseMat; // r10
size_t v17; // r5
unsigned __int8 *v18; // r4
int numsurfs; // r4
int v20; // r4
int numCollSurfs; // r4
int v22; // r10
unsigned __int8 *v23; // r4
XModelHighMipBounds *v24; // r4
PhysGeomList *physGeoms; // r10
Load_Stream(1, varXModel, 0xCCu);
DB_PushStreamPos(4u);
varXString = &varXModel->name;
Load_XString(0);
v1 = varXModel;
boneNames = varXModel->boneNames;
if ( boneNames )
{
if ( boneNames == (unsigned __int16 *)-1 )
{
numBones = varXModel->numBones;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
varScriptString = (unsigned __int16 *)g_streamPos;
varXModel->boneNames = (unsigned __int16 *)g_streamPos;
Load_ScriptStringArray(1, numBones);
v1 = varXModel;
}
else
{
varXModel->boneNames = (unsigned __int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)varXModel->boneNames - 1) >> 26) & 0x38)))[((int)varXModel->boneNames - 1) & 0x1FFFFFFF];
}
}
parentList = v1->parentList;
if ( parentList )
{
if ( parentList == (unsigned __int8 *)-1 )
{
v5 = g_streamPos;
v6 = v1->numBones - v1->numRootBones;
varbyte = g_streamPos;
v1->parentList = g_streamPos;
Load_Stream(1, v5, v6);
v1 = varXModel;
}
else
{
v1->parentList = &(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1->parentList - 1) >> 26) & 0x38)))[(int)(v1->parentList - 1) & 0x1FFFFFFF];
}
}
quats = v1->quats;
if ( quats )
{
if ( quats == (__int16 *)-1 )
{
v8 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
v9 = 8 * (v1->numBones - v1->numRootBones);
g_streamPos = v8;
v1->quats = (__int16 *)v8;
varshort = (__int16 *)v8;
Load_Stream(1, v8, v9);
v1 = varXModel;
}
else
{
v1->quats = (__int16 *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)v1->quats - 1) >> 26) & 0x38)))[((int)v1->quats - 1) & 0x1FFFFFFF];
}
}
trans = v1->trans;
if ( trans )
{
if ( trans == (float *)-1 )
{
v11 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v12 = 16 * (v1->numBones - v1->numRootBones);
g_streamPos = v11;
v1->trans = (float *)v11;
varfloat = (float *)v11;
Load_Stream(1, v11, v12);
v1 = varXModel;
}
else
{
v1->trans = (float *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)v1->trans - 1) >> 26) & 0x38)))[((int)v1->trans - 1) & 0x1FFFFFFF];
}
}
partClassification = v1->partClassification;
if ( partClassification )
{
if ( partClassification == (unsigned __int8 *)-1 )
{
v14 = g_streamPos;
v15 = v1->numBones;
varbyte = g_streamPos;
v1->partClassification = g_streamPos;
Load_Stream(1, v14, v15);
v1 = varXModel;
}
else
{
v1->partClassification = &(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1->partClassification - 1) >> 26) & 0x38)))[(int)(v1->partClassification - 1) & 0x1FFFFFFF];
}
}
baseMat = v1->baseMat;
if ( baseMat )
{
if ( baseMat == (DObjAnimMat *)-1 )
{
v17 = __ROL4__(v1->numBones, 5);
v18 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v18;
varDObjAnimMat = (DObjAnimMat *)v18;
v1->baseMat = (DObjAnimMat *)v18;
Load_Stream(1, v18, v17);
v1 = varXModel;
}
else
{
v1->baseMat = (DObjAnimMat *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&v1->baseMat[-1].transWeight + 3) >> 26) & 0x38)))[((int)&v1->baseMat[-1].transWeight + 3) & 0x1FFFFFFF];
}
}
if ( v1->surfs )
{
numsurfs = v1->numsurfs;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXSurface = (XSurface *)g_streamPos;
v1->surfs = (XSurface *)g_streamPos;
Load_XSurfaceArray(1, numsurfs);
v1 = varXModel;
}
if ( v1->materialHandles )
{
v20 = v1->numsurfs;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varMaterialHandle = (Material **)g_streamPos;
v1->materialHandles = (Material **)g_streamPos;
Load_MaterialHandleArray(1, v20);
v1 = varXModel;
}
if ( v1->collSurfs )
{
numCollSurfs = v1->numCollSurfs;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXModelCollSurf = (XModelCollSurf_s *)g_streamPos;
v1->collSurfs = (XModelCollSurf_s *)g_streamPos;
Load_XModelCollSurfArray(1, numCollSurfs);
v1 = varXModel;
}
if ( v1->boneInfo )
{
v22 = v1->numBones;
v23 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v1->boneInfo = (XBoneInfo *)v23;
g_streamPos = v23;
varXBoneInfo = (XBoneInfo *)v23;
Load_Stream(1, v23, 8 * (v22 + __ROL4__(v22, 2)));
v1 = varXModel;
}
varXModelStreamInfo = &v1->streamInfo;
Load_Stream(0, &v1->streamInfo, 4u);
if ( varXModelStreamInfo->highMipBounds )
{
v24 = (XModelHighMipBounds *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varXModelStreamInfo->highMipBounds = v24;
varXModelHighMipBounds = v24;
g_streamPos = (unsigned __int8 *)v24;
Load_Stream(1, v24, 8 * (varXModel->lodInfo[0].numsurfs + __ROL4__(varXModel->lodInfo[0].numsurfs, 1)));
}
varPhysPresetPtr = &varXModel->physPreset;
Load_PhysPresetPtr(0);
physGeoms = varXModel->physGeoms;
if ( physGeoms )
{
if ( physGeoms == (PhysGeomList *)-1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varPhysGeomList = (PhysGeomList *)g_streamPos;
varXModel->physGeoms = (PhysGeomList *)g_streamPos;
Load_PhysGeomList(1);
DB_PopStreamPos();
return;
}
varXModel->physGeoms = (PhysGeomList *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varXModel->physGeoms[-1].mass.productsOfInertia[2]
+ 3) >> 26) & 0x38)))[((int)&varXModel->physGeoms[-1].mass.productsOfInertia[2]
+ 3) & 0x1FFFFFFF];
}
DB_PopStreamPos();
}
// ?Load_GfxSurfaceArray@@YAX_NH@Z at 0x822ac6b0
void Assets::Load_GfxSurfaceArray(QDataStream *aStream, int count)
{
int v2; // r30
GfxSurface *v3; // r31
v2 = count;
Load_Stream(1, varGfxSurface, 72 * count);
v3 = varGfxSurface;
if ( v2 > 0 )
{
do
{
varGfxSurface = v3;
Load_Stream(0, v3, 0x48u);
varMaterialHandle = &varGfxSurface->material;
Load_MaterialHandle(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_itemDefData_t@@YAX_N@Z at 0x822ac730
void Assets::Load_itemDefData_t(QDataStream *aStream)
{
int type; // r11
unsigned __int8 *v2; // r11
unsigned __int8 *v3; // r11
unsigned __int8 *v4; // r4
type = varitemDef_t->type;
switch ( type )
{
case 6:
varlistBoxDef_ptr = &varitemDefData_t->listBox;
Load_Stream(0, varitemDefData_t, 4u);
if ( *varlistBoxDef_ptr )
{
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
*varlistBoxDef_ptr = (listBoxDef_s *)v2;
varlistBoxDef_t = (listBoxDef_s *)v2;
Load_listBoxDef_t(1);
}
break;
case 4:
case 9:
case 16:
case 18:
case 11:
case 14:
case 10:
case 0:
case 17:
vareditFieldDef_ptr = (editFieldDef_s **)varitemDefData_t;
Load_Stream(0, varitemDefData_t, 4u);
if ( *vareditFieldDef_ptr )
{
v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v4;
*vareditFieldDef_ptr = (editFieldDef_s *)v4;
vareditFieldDef_t = (editFieldDef_s *)v4;
Load_Stream(1, v4, 0x20u);
}
break;
case 12:
varmultiDef_ptr = (multiDef_s **)varitemDefData_t;
Load_Stream(0, varitemDefData_t, 4u);
if ( *varmultiDef_ptr )
{
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varmultiDef_ptr = (multiDef_s *)v3;
varMultiDef = (multiDef_s *)v3;
Load_MultiDef(1);
}
break;
case 13:
varXString = (const char **)varitemDefData_t;
Load_XString(0);
break;
}
}
// ?Load_FxElemMarkVisualsArray@@YAX_NH@Z at 0x822ac918
void Assets::Load_FxElemMarkVisualsArray(QDataStream *aStream, int count)
{
int v2; // r31
FxElemMarkVisuals *v3; // r30
v2 = count;
Load_Stream(1, varFxElemMarkVisuals, 8 * count);
v3 = varFxElemMarkVisuals;
if ( v2 > 0 )
{
do
{
varFxElemMarkVisuals = v3;
Load_FxElemMarkVisuals(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_XModelPtr@@YAX_N@Z at 0x822ac970
void Assets::Load_XModelPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
XModel **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varXModelPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varXModelPtr;
if ( *varXModelPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varXModelPtr = *(XModel **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varXModelPtr = (XModel *)v3;
varXModel = (XModel *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_XModel(1);
v5 = varXModelPtr;
*v5 = (XModel *)DB_AddXAsset((XAssetHeader *)3, (XAssetHeader *)*varXModelPtr, v6);
if ( inserted )
*inserted = *varXModelPtr;
}
DB_PopStreamPos();
}
// ?Load_GfxStaticModelDrawInst@@YAX_N@Z at 0x822aca58
void Assets::Load_GfxStaticModelDrawInst(QDataStream *aStream)
{
Load_Stream(0, varGfxStaticModelDrawInst, 0x2Cu);
varXModelPtr = &varGfxStaticModelDrawInst->model;
Load_XModelPtr(0);
}
// ?Load_itemDef_t@@YAX_N@Z at 0x822acaa8
void Assets::Load_itemDef_t(QDataStream *aStream)
{
ItemDef *v1; // r11
unsigned __int8 *v2; // r10
Load_Stream(1, varitemDef_t, 0x1D4u);
varWindow = &varitemDef_t->window;
Load_Stream(0, varitemDef_t, 0xA8u);
varwindowDef_t = varWindow;
Load_windowDef_t(0);
varXString = &varitemDef_t->text;
Load_XString(0);
varXString = &varitemDef_t->mouseEnterText;
Load_XString(0);
varXString = &varitemDef_t->mouseExitText;
Load_XString(0);
varXString = &varitemDef_t->mouseEnter;
Load_XString(0);
varXString = &varitemDef_t->mouseExit;
Load_XString(0);
varXString = &varitemDef_t->action;
Load_XString(0);
varXString = &varitemDef_t->onAccept;
Load_XString(0);
varXString = &varitemDef_t->onFocus;
Load_XString(0);
varXString = &varitemDef_t->leaveFocus;
Load_XString(0);
varXString = &varitemDef_t->dvar;
Load_XString(0);
varXString = &varitemDef_t->dvarTest;
Load_XString(0);
v1 = varitemDef_t;
if ( varitemDef_t->onKey )
{
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
varitemDef_t->onKey = (ItemKeyHandler *)v2;
varItemKeyHandler = (ItemKeyHandler *)v2;
Load_ItemKeyHandler(1);
v1 = varitemDef_t;
}
varXString = &v1->enableDvar;
Load_XString(0);
varsnd_alias_list_ptr = &varitemDef_t->focusSound;
Load_snd_alias_list_ptr(0);
varitemDefData_t = &varitemDef_t->typeData;
Load_itemDefData_t(0);
varstatement = &varitemDef_t->visibleExp;
Load_statement(0);
varstatement = &varitemDef_t->textExp;
Load_statement(0);
varstatement = &varitemDef_t->materialExp;
Load_statement(0);
varstatement = &varitemDef_t->rectXExp;
Load_statement(0);
varstatement = &varitemDef_t->rectYExp;
Load_statement(0);
varstatement = &varitemDef_t->rectWExp;
Load_statement(0);
varstatement = &varitemDef_t->rectHExp;
Load_statement(0);
varstatement = &varitemDef_t->forecolorAExp;
Load_statement(0);
}
// ?Load_cStaticModel_t@@YAX_N@Z at 0x822acd18
void Assets::Load_cStaticModel_t(QDataStream *aStream)
{
Load_Stream(0, varcStaticModel_t, 0x50u);
varXModelPtr = &varcStaticModel_t->xmodel;
Load_XModelPtr(0);
}
// ?Load_FxElemVisuals@@YAX_N@Z at 0x822acd68
void Assets::Load_FxElemVisuals(QDataStream *aStream)
{
int elemType; // r11
elemType = varFxElemDef->elemType;
switch ( elemType )
{
case 5:
varXModelPtr = (XModel **)varFxElemVisuals;
Load_XModelPtr(0);
break;
case 10:
varFxEffectDefRef = (FxEffectDefRef *)varFxElemVisuals;
Load_FxEffectDefRef(0);
break;
case 8:
varXString = (const char **)varFxElemVisuals;
Load_XString(0);
break;
default:
if ( elemType != 6 && elemType != 7 )
{
varMaterialHandle = (Material **)varFxElemVisuals;
Load_MaterialHandle(0);
}
break;
}
}
// ?Load_XModelPiece@@YAX_N@Z at 0x822ace00
void Assets::Load_XModelPiece(QDataStream *aStream)
{
Load_Stream(0, varXModelPiece, 0x10u);
varXModelPtr = &varXModelPiece->model;
Load_XModelPtr(0);
}
// ?Load_XModelPtrArray@@YAX_NH@Z at 0x822ace50
void Assets::Load_XModelPtrArray(QDataStream *aStream, int count)
{
XModel **v2; // r30
int v3; // r31
Load_Stream(0, varXModelPtr, 0x40u);
v2 = varXModelPtr;
v3 = 16;
do
{
varXModelPtr = v2;
Load_XModelPtr(0);
--v3;
++v2;
}
while ( v3 );
}
// ?Load_GfxStaticModelDrawInstArray@@YAX_NH@Z at 0x822acea0
void Assets::Load_GfxStaticModelDrawInstArray(QDataStream *aStream, int count)
{
int v2; // r30
GfxStaticModelDrawInst *v3; // r31
v2 = count;
Load_Stream(1, varGfxStaticModelDrawInst, 44 * count);
v3 = varGfxStaticModelDrawInst;
if ( v2 > 0 )
{
do
{
varGfxStaticModelDrawInst = v3;
Load_Stream(0, v3, 0x2Cu);
varXModelPtr = &varGfxStaticModelDrawInst->model;
Load_XModelPtr(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_cStaticModel_tArray@@YAX_NH@Z at 0x822acf48
void Assets::Load_cStaticModel_tArray(QDataStream *aStream, int count)
{
int v2; // r30
cStaticModel_s *v3; // r31
v2 = count;
Load_Stream(1, varcStaticModel_t, 80 * count);
v3 = varcStaticModel_t;
if ( v2 > 0 )
{
do
{
varcStaticModel_t = v3;
Load_Stream(0, v3, 0x50u);
varXModelPtr = &varcStaticModel_t->xmodel;
Load_XModelPtr(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_FxElemVisualsArray@@YAX_NH@Z at 0x822acfc8
void Assets::Load_FxElemVisualsArray(QDataStream *aStream, int count)
{
int v2; // r31
FxElemVisuals *v3; // r30
v2 = count;
Load_Stream(1, varFxElemVisuals, 4 * count);
v3 = varFxElemVisuals;
if ( v2 > 0 )
{
do
{
varFxElemVisuals = v3;
Load_FxElemVisuals(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_XModelPieceArray@@YAX_NH@Z at 0x822ad020
void Assets::Load_XModelPieceArray(QDataStream *aStream, int count)
{
int v2; // r30
XModelPiece *v3; // r31
v2 = count;
Load_Stream(1, varXModelPiece, 16 * count);
v3 = varXModelPiece;
if ( v2 > 0 )
{
do
{
varXModelPiece = v3;
Load_Stream(0, v3, 0x10u);
varXModelPtr = &varXModelPiece->model;
Load_XModelPtr(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_GfxWorldDpvsStatic@@YAX_N@Z at 0x822ad090
void Assets::Load_GfxWorldDpvsStatic(QDataStream *aStream)
{
bool v1; // r3
GfxWorldDpvsStatic *v2; // r31
unsigned __int8 *v3; // r4
size_t smodelCount; // r5
bool v5; // r3
unsigned __int8 *v6; // r4
size_t v7; // r5
bool v8; // r3
unsigned __int8 *v9; // r4
size_t v10; // r5
bool v11; // r3
unsigned __int8 *v12; // r4
size_t staticSurfaceCount; // r5
bool v14; // r3
unsigned __int8 *v15; // r4
size_t v16; // r5
bool v17; // r3
unsigned __int8 *v18; // r4
size_t v19; // r5
bool v20; // r3
size_t v21; // r5
unsigned __int8 *v22; // r4
size_t v23; // r5
unsigned __int8 *v24; // r4
size_t v25; // r5
unsigned __int8 *v26; // r4
unsigned __int8 *v27; // r11
GfxCullGroup *v28; // r4
int v29; // r4
bool v30; // r3
size_t v31; // r5
unsigned __int8 *v32; // r4
bool v33; // r3
size_t v34; // r5
unsigned __int8 *v35; // r4
Load_Stream(0, varGfxWorldDpvsStatic, 0x64u);
DB_PushStreamPos(1u);
v2 = varGfxWorldDpvsStatic;
if ( varGfxWorldDpvsStatic->smodelVisData[0] )
{
v3 = g_streamPos;
smodelCount = varGfxWorldDpvsStatic->smodelCount;
varraw_byte = g_streamPos;
varGfxWorldDpvsStatic->smodelVisData[0] = g_streamPos;
Load_Stream(v1, v3, smodelCount);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v2->smodelVisData[1] )
{
v6 = g_streamPos;
v7 = v2->smodelCount;
varraw_byte = g_streamPos;
v2->smodelVisData[1] = g_streamPos;
Load_Stream(v5, v6, v7);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v2->smodelVisData[2] )
{
v9 = g_streamPos;
v10 = v2->smodelCount;
varraw_byte = g_streamPos;
v2->smodelVisData[2] = g_streamPos;
Load_Stream(v8, v9, v10);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v2->surfaceVisData[0] )
{
v12 = g_streamPos;
staticSurfaceCount = v2->staticSurfaceCount;
varraw_byte = g_streamPos;
v2->surfaceVisData[0] = g_streamPos;
Load_Stream(v11, v12, staticSurfaceCount);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v2->surfaceVisData[1] )
{
v15 = g_streamPos;
v16 = v2->staticSurfaceCount;
varraw_byte = g_streamPos;
v2->surfaceVisData[1] = g_streamPos;
Load_Stream(v14, v15, v16);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v2->surfaceVisData[2] )
{
v18 = g_streamPos;
v19 = v2->staticSurfaceCount;
varraw_byte = g_streamPos;
v2->surfaceVisData[2] = g_streamPos;
Load_Stream(v17, v18, v19);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v2->lodData )
{
v21 = 8 * v2->smodelVisDataCount;
v22 = (unsigned __int8 *)((unsigned int)(g_streamPos + 127) & 0xFFFFFF80);
g_streamPos = v22;
varraw_uint128 = (unsigned int *)v22;
v2->lodData = (unsigned int *)v22;
Load_Stream(v20, v22, v21);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
if ( v2->sortedSurfIndex )
{
v23 = 2 * v2->staticSurfaceCount;
v24 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
g_streamPos = v24;
varushort = (unsigned __int16 *)v24;
v2->sortedSurfIndex = (unsigned __int16 *)v24;
Load_Stream(1, v24, v23);
v2 = varGfxWorldDpvsStatic;
}
if ( v2->smodelInsts )
{
v25 = 28 * v2->smodelCount;
v26 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v26;
v2->smodelInsts = (GfxStaticModelInst *)v26;
varGfxStaticModelInst = (GfxStaticModelInst *)v26;
Load_Stream(1, v26, v25);
v2 = varGfxWorldDpvsStatic;
}
if ( v2->surfaces )
{
v27 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v2->surfaces = (GfxSurface *)v27;
g_streamPos = v27;
varGfxSurface = (GfxSurface *)v27;
Load_GfxSurfaceArray(1, varGfxWorld->surfaceCount);
v2 = varGfxWorldDpvsStatic;
}
if ( v2->cullGroups )
{
v28 = (GfxCullGroup *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v2->cullGroups = v28;
varGfxCullGroup = v28;
g_streamPos = (unsigned __int8 *)v28;
Load_Stream(1, v28, 32 * varGfxWorld->cullGroupCount);
v2 = varGfxWorldDpvsStatic;
}
if ( v2->smodelDrawInsts )
{
v29 = v2->smodelCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxStaticModelDrawInst = (GfxStaticModelDrawInst *)g_streamPos;
v2->smodelDrawInsts = (GfxStaticModelDrawInst *)g_streamPos;
Load_GfxStaticModelDrawInstArray(1, v29);
v2 = varGfxWorldDpvsStatic;
}
DB_PushStreamPos(1u);
if ( v2->surfaceMaterials )
{
v31 = 8 * v2->staticSurfaceCount;
v32 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v32;
varGfxDrawSurfFields = (GfxDrawSurfFields *)v32;
v2->surfaceMaterials = (GfxDrawSurfFields *)v32;
Load_Stream(v30, v32, v31);
v2 = varGfxWorldDpvsStatic;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v2->surfaceCastsSunShadow )
{
v34 = 4 * v2->surfaceVisDataCount;
v35 = (unsigned __int8 *)((unsigned int)(g_streamPos + 127) & 0xFFFFFF80);
g_streamPos = v35;
varraw_uint128 = (unsigned int *)v35;
v2->surfaceCastsSunShadow = (unsigned int *)v35;
Load_Stream(v33, v35, v34);
}
DB_PopStreamPos();
}
// ?Load_itemDef_ptrArray@@YAX_NH@Z at 0x822ad3f0
void Assets::Load_itemDef_ptrArray(QDataStream *aStream, int count)
{
int v2; // r31
ItemDef **v3; // r29
v2 = count;
Load_Stream(1, varitemDef_ptr, 4 * count);
v3 = varitemDef_ptr;
if ( v2 > 0 )
{
do
{
varitemDef_ptr = v3;
Load_Stream(0, v3, 4u);
if ( *varitemDef_ptr )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varitemDef_t = (ItemDef *)g_streamPos;
*varitemDef_ptr = (ItemDef *)g_streamPos;
Load_itemDef_t(1);
}
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_FxElemDefVisuals@@YAX_N@Z at 0x822ad488
void Assets::Load_FxElemDefVisuals(QDataStream *aStream)
{
FxElemDef *v1; // r9
unsigned __int8 *v2; // r11
int visualCount; // r4
unsigned __int8 *v4; // r11
int v5; // r4
v1 = varFxElemDef;
if ( varFxElemDef->elemType == 9 )
{
if ( varFxElemDefVisuals->markArray )
{
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
varFxElemDefVisuals->markArray = (FxElemMarkVisuals *)v2;
visualCount = v1->visualCount;
varFxElemMarkVisuals = (FxElemMarkVisuals *)v2;
Load_FxElemMarkVisualsArray(1, visualCount);
}
}
else if ( varFxElemDef->visualCount > 1u )
{
if ( varFxElemDefVisuals->markArray )
{
v4 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v4;
varFxElemDefVisuals->markArray = (FxElemMarkVisuals *)v4;
v5 = v1->visualCount;
varFxElemVisuals = (FxElemVisuals *)v4;
Load_FxElemVisualsArray(1, v5);
}
}
else
{
varFxElemVisuals = (FxElemVisuals *)varFxElemDefVisuals;
Load_FxElemVisuals(0);
}
}
// ?Load_XModelPieces@@YAX_N@Z at 0x822ad540
void Assets::Load_XModelPieces(QDataStream *aStream)
{
int numpieces; // r4
unsigned __int8 *v2; // r11
Load_Stream(1, varXModelPieces, 0xCu);
varXString = &varXModelPieces->name;
Load_XString(0);
if ( varXModelPieces->pieces )
{
numpieces = varXModelPieces->numpieces;
v2 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v2;
varXModelPieces->pieces = (XModelPiece *)v2;
varXModelPiece = (XModelPiece *)v2;
Load_XModelPieceArray(1, numpieces);
}
}
// ?Load_GfxWorld@@YAX_N@Z at 0x822ad5c8
void Assets::Load_GfxWorld(QDataStream *aStream)
{
GfxWorld *v1; // r11
size_t v2; // r5
unsigned __int8 *v3; // r4
D3DIndexBuffer *p_indexBuffer; // r30
unsigned __int16 *indices; // r28
GfxWorld *v6; // r11
size_t v7; // r5
unsigned __int8 *v8; // r4
GfxWorld *v9; // r30
GfxLight *sunLight; // r11
int reflectionProbeCount; // r4
bool v12; // r3
size_t v13; // r5
unsigned __int8 *v14; // r4
GfxWorld *v15; // r11
int cellCount; // r4
int lightmapCount; // r4
bool v18; // r3
GfxWorld *v19; // r30
size_t v20; // r5
unsigned __int8 *v21; // r4
bool v22; // r3
size_t v23; // r5
unsigned __int8 *v24; // r4
size_t v25; // r5
unsigned __int8 *v26; // r4
int materialMemoryCount; // r4
bool v28; // r3
GfxWorld *v29; // r30
unsigned __int8 *v30; // r4
int v31; // r11
bool v32; // r3
unsigned int v33; // r11
unsigned __int8 *v34; // r4
bool v35; // r3
size_t v36; // r5
unsigned __int8 *v37; // r4
bool v38; // r3
unsigned __int8 *v39; // r4
size_t v40; // r5
bool v41; // r3
unsigned __int8 *v42; // r4
int v43; // r11
bool v44; // r3
unsigned __int8 *v45; // r4
int v46; // r11
bool v47; // r3
unsigned __int8 *v48; // r4
size_t v49; // r5
int primaryLightCount; // r4
int v51; // r4
Load_Stream(1, varGfxWorld, 0x33Cu);
DB_PushStreamPos(4u);
varXString = &varGfxWorld->name;
Load_XString(0);
varXString = &varGfxWorld->baseName;
Load_XString(0);
v1 = varGfxWorld;
if ( varGfxWorld->indices )
{
v2 = 2 * varGfxWorld->indexCount;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
g_streamPos = v3;
varr_index_t = (unsigned __int16 *)v3;
varGfxWorld->indices = (unsigned __int16 *)v3;
Load_Stream(1, v3, v2);
v1 = varGfxWorld;
}
varGfxIndexBuffer = &v1->indexBuffer;
Load_Stream(0, &v1->indexBuffer, 0x20u);
p_indexBuffer = &varGfxWorld->indexBuffer;
indices = varGfxWorld->indices;
XGSetIndexBufferHeader(2 * varGfxWorld->indexCount, 0, D3DFMT_INDEX16, 0, 0, &varGfxWorld->indexBuffer);
XGOffsetResourceAddress(p_indexBuffer, indices);
varGfxWorldStreamInfo = &varGfxWorld->streamInfo;
Load_GfxWorldStreamInfo(0);
v6 = varGfxWorld;
if ( varGfxWorld->skyStartSurfs )
{
v7 = 4 * varGfxWorld->skySurfCount;
v8 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v8;
varint = (int *)v8;
varGfxWorld->skyStartSurfs = (int *)v8;
Load_Stream(1, v8, v7);
v6 = varGfxWorld;
}
varGfxImagePtr = &v6->skyImage;
Load_GfxImagePtr(0);
v9 = varGfxWorld;
sunLight = varGfxWorld->sunLight;
if ( sunLight )
{
if ( sunLight == (GfxLight *)-1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxLight = (GfxLight *)g_streamPos;
varGfxWorld->sunLight = (GfxLight *)g_streamPos;
Load_GfxLight(1);
v9 = varGfxWorld;
}
else
{
varGfxWorld->sunLight = (GfxLight *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ ((((unsigned int)&varGfxWorld->sunLight[-1].def + 3) >> 26) & 0x38)))[((int)&varGfxWorld->sunLight[-1].def + 3) & 0x1FFFFFFF];
}
}
if ( v9->reflectionProbes )
{
reflectionProbeCount = v9->reflectionProbeCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxReflectionProbe = (GfxReflectionProbe *)g_streamPos;
v9->reflectionProbes = (GfxReflectionProbe *)g_streamPos;
Load_GfxReflectionProbeArray(1, reflectionProbeCount);
v9 = varGfxWorld;
}
DB_PushStreamPos(1u);
if ( v9->reflectionProbeTextures )
{
v13 = 4 * v9->reflectionProbeCount;
v14 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v14;
varGfxRawTexture = (GfxTexture *)v14;
v9->reflectionProbeTextures = (GfxTexture *)v14;
Load_Stream(v12, v14, v13);
v9 = varGfxWorld;
}
DB_PopStreamPos();
varGfxWorldDpvsPlanes = &v9->dpvsPlanes;
Load_GfxWorldDpvsPlanes(0);
v15 = varGfxWorld;
if ( varGfxWorld->cells )
{
cellCount = varGfxWorld->dpvsPlanes.cellCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxCell = (GfxCell *)g_streamPos;
varGfxWorld->cells = (GfxCell *)g_streamPos;
Load_GfxCellArray(1, cellCount);
v15 = varGfxWorld;
}
if ( v15->lightmaps )
{
lightmapCount = v15->lightmapCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxLightmapArray = (GfxLightmapArray *)g_streamPos;
v15->lightmaps = (GfxLightmapArray *)g_streamPos;
Load_GfxLightmapArrayArray(1, lightmapCount);
v15 = varGfxWorld;
}
varGfxLightGrid = &v15->lightGrid;
Load_GfxLightGrid(0);
DB_PushStreamPos(1u);
v19 = varGfxWorld;
if ( varGfxWorld->lightmapPrimaryTextures )
{
v20 = 4 * varGfxWorld->lightmapCount;
v21 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v21;
varGfxRawTexture = (GfxTexture *)v21;
varGfxWorld->lightmapPrimaryTextures = (GfxTexture *)v21;
Load_Stream(v18, v21, v20);
v19 = varGfxWorld;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v19->lightmapSecondaryTextures )
{
v23 = 4 * v19->lightmapCount;
v24 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v24;
varGfxRawTexture = (GfxTexture *)v24;
v19->lightmapSecondaryTextures = (GfxTexture *)v24;
Load_Stream(v22, v24, v23);
v19 = varGfxWorld;
}
DB_PopStreamPos();
if ( v19->models )
{
v25 = 56 * v19->modelCount;
v26 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v26;
v19->models = (GfxBrushModel *)v26;
varGfxBrushModel = (GfxBrushModel *)v26;
Load_Stream(1, v26, v25);
v19 = varGfxWorld;
}
if ( v19->materialMemory )
{
materialMemoryCount = v19->materialMemoryCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varMaterialMemory = (MaterialMemory *)g_streamPos;
v19->materialMemory = (MaterialMemory *)g_streamPos;
Load_MaterialMemoryArray(1, materialMemoryCount);
v19 = varGfxWorld;
}
varGfxWorldVertexData = &v19->vd;
Load_GfxWorldVertexData(0);
varGfxWorldVertexLayerData = &varGfxWorld->vld;
Load_GfxWorldVertexLayerData(0);
varsunflare_t = &varGfxWorld->sun;
Load_sunflare_t(0);
varGfxImagePtr = &varGfxWorld->outdoorImage;
Load_GfxImagePtr(0);
DB_PushStreamPos(1u);
v29 = varGfxWorld;
if ( varGfxWorld->cellCasterBits )
{
v30 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v31 = ((varGfxWorld->dpvsPlanes.cellCount + 31) >> 5) * varGfxWorld->dpvsPlanes.cellCount;
g_streamPos = v30;
varraw_uint = (unsigned int *)v30;
varGfxWorld->cellCasterBits = (unsigned int *)v30;
Load_Stream(v28, v30, 4 * v31);
v29 = varGfxWorld;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v29->sceneDynModel )
{
v33 = v29->dpvsDyn.dynEntClientCount[0];
v34 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v34;
varGfxSceneDynModel = (GfxSceneDynModel *)v34;
v29->sceneDynModel = (GfxSceneDynModel *)v34;
Load_Stream(v32, v34, 6 * v33);
v29 = varGfxWorld;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v29->sceneDynBrush )
{
v36 = 4 * v29->dpvsDyn.dynEntClientCount[1];
v37 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v37;
varGfxSceneDynBrush = (GfxSceneDynBrush *)v37;
v29->sceneDynBrush = (GfxSceneDynBrush *)v37;
Load_Stream(v35, v37, v36);
v29 = varGfxWorld;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v29->primaryLightEntityShadowVis )
{
v39 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v40 = (v29->primaryLightCount - v29->sunPrimaryLightIndex - 1) << 14;
g_streamPos = v39;
varraw_uint = (unsigned int *)v39;
v29->primaryLightEntityShadowVis = (unsigned int *)v39;
Load_Stream(v38, v39, v40);
v29 = varGfxWorld;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v29->primaryLightDynEntShadowVis[0] )
{
v42 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v43 = (v29->primaryLightCount - v29->sunPrimaryLightIndex - 1) * v29->dpvsDyn.dynEntClientCount[0];
g_streamPos = v42;
v29->primaryLightDynEntShadowVis[0] = (unsigned int *)v42;
varraw_uint = (unsigned int *)v42;
Load_Stream(v41, v42, 4 * v43);
v29 = varGfxWorld;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v29->primaryLightDynEntShadowVis[1] )
{
v45 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v46 = (v29->primaryLightCount - v29->sunPrimaryLightIndex - 1) * v29->dpvsDyn.dynEntClientCount[1];
g_streamPos = v45;
v29->primaryLightDynEntShadowVis[1] = (unsigned int *)v45;
varraw_uint = (unsigned int *)v45;
Load_Stream(v44, v45, 4 * v46);
v29 = varGfxWorld;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v29->nonSunPrimaryLightForModelDynEnt )
{
v48 = g_streamPos;
v49 = v29->dpvsDyn.dynEntClientCount[0];
varraw_byte = g_streamPos;
v29->nonSunPrimaryLightForModelDynEnt = g_streamPos;
Load_Stream(v47, v48, v49);
v29 = varGfxWorld;
}
DB_PopStreamPos();
if ( v29->shadowGeom )
{
primaryLightCount = v29->primaryLightCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxShadowGeometry = (GfxShadowGeometry *)g_streamPos;
v29->shadowGeom = (GfxShadowGeometry *)g_streamPos;
Load_GfxShadowGeometryArray(1, primaryLightCount);
v29 = varGfxWorld;
}
if ( v29->lightRegion )
{
v51 = v29->primaryLightCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varGfxLightRegion = (GfxLightRegion *)g_streamPos;
v29->lightRegion = (GfxLightRegion *)g_streamPos;
Load_GfxLightRegionArray(1, v51);
v29 = varGfxWorld;
}
varGfxWorldDpvsStatic = &v29->dpvs;
Load_GfxWorldDpvsStatic(0);
varGfxWorldDpvsDynamic = &varGfxWorld->dpvsDyn;
Load_GfxWorldDpvsDynamic(0);
DB_PopStreamPos();
}
// ?Load_menuDef_t@@YAX_N@Z at 0x822adca0
void Assets::Load_menuDef_t(QDataStream *aStream)
{
menuDef_t *v1; // r11
int itemCount; // r4
Load_Stream(1, varmenuDef_t, 0x134u);
DB_PushStreamPos(4u);
varWindow = &varmenuDef_t->window;
Load_Stream(0, varmenuDef_t, 0xA8u);
varwindowDef_t = varWindow;
Load_windowDef_t(0);
varXString = &varmenuDef_t->font;
Load_XString(0);
varXString = &varmenuDef_t->onOpen;
Load_XString(0);
varXString = &varmenuDef_t->onClose;
Load_XString(0);
varXString = &varmenuDef_t->onESC;
Load_XString(0);
v1 = varmenuDef_t;
if ( varmenuDef_t->onKey )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varItemKeyHandler = (ItemKeyHandler *)g_streamPos;
varmenuDef_t->onKey = (ItemKeyHandler *)g_streamPos;
Load_ItemKeyHandler(1);
v1 = varmenuDef_t;
}
varstatement = &v1->visibleExp;
Load_statement(0);
varXString = &varmenuDef_t->allowedBinding;
Load_XString(0);
varXString = &varmenuDef_t->soundName;
Load_XString(0);
varstatement = &varmenuDef_t->rectXExp;
Load_statement(0);
varstatement = &varmenuDef_t->rectYExp;
Load_statement(0);
if ( varmenuDef_t->items )
{
itemCount = varmenuDef_t->itemCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varitemDef_ptr = (ItemDef **)g_streamPos;
varmenuDef_t->items = (ItemDef **)g_streamPos;
Load_itemDef_ptrArray(1, itemCount);
}
DB_PopStreamPos();
}
// ?Load_FxElemDef@@YAX_N@Z at 0x822ade30
void Assets::Load_FxElemDef(QDataStream *aStream)
{
FxElemDef *v1; // r11
int v2; // r10
FxElemVelStateSample *v3; // r4
int v4; // r10
FxElemVisStateSample *v5; // r4
Load_Stream(0, (void *)varFxElemDef, 0xFCu);
v1 = varFxElemDef;
if ( varFxElemDef->velSamples )
{
v2 = varFxElemDef->velIntervalCount + 1;
v3 = (FxElemVelStateSample *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varFxElemDef->velSamples = v3;
g_streamPos = (unsigned __int8 *)v3;
varFxElemVelStateSample = v3;
Load_Stream(1, (void *)v3, 96 * v2);
v1 = varFxElemDef;
}
if ( v1->visSamples )
{
v4 = v1->visStateIntervalCount + 1;
v5 = (FxElemVisStateSample *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v1->visSamples = v5;
g_streamPos = (unsigned __int8 *)v5;
varFxElemVisStateSample = v5;
Load_Stream(1, (void *)v5, 48 * v4);
v1 = varFxElemDef;
}
varFxElemDefVisuals = &v1->visuals;
Load_FxElemDefVisuals(0);
varFxEffectDefRef = &varFxElemDef->effectOnImpact;
Load_FxEffectDefRef(0);
varFxEffectDefRef = &varFxElemDef->effectOnDeath;
Load_FxEffectDefRef(0);
varFxEffectDefRef = &varFxElemDef->effectEmitted;
Load_FxEffectDefRef(0);
if ( varFxElemDef->trailDef )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varFxTrailDef = (FxTrailDef *)g_streamPos;
varFxElemDef->trailDef = (FxTrailDef *)g_streamPos;
Load_FxTrailDef(1);
}
}
// ?Load_GfxWorldPtr@@YAX_N@Z at 0x822adfd8
void Assets::Load_GfxWorldPtr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r30
GfxWorld **v5; // r31
XAssetHeader *v6; // r5
Load_Stream(0, varGfxWorldPtr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varGfxWorldPtr;
if ( *varGfxWorldPtr )
{
if ( v1 != -1 && v1 != -2 )
{
*varGfxWorldPtr = *(GfxWorld **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
return;
}
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varGfxWorldPtr = (GfxWorld *)v3;
varGfxWorld = (GfxWorld *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_GfxWorld(1);
v5 = varGfxWorldPtr;
*v5 = (GfxWorld *)DB_AddXAsset((XAssetHeader *)0x11, (XAssetHeader *)*varGfxWorldPtr, v6);
if ( inserted )
*inserted = *varGfxWorldPtr;
}
DB_PopStreamPos();
}
// ?Load_menuDef_ptr@@YAX_N@Z at 0x822ae0c0
void Assets::Load_menuDef_ptr(QDataStream *aStream)
{
int v1; // r11
bool v2; // cr58
unsigned __int8 *v3; // r11
const void **inserted; // r31
XAssetHeader *v5; // r5
int v6; // r4
Load_Stream(0, varmenuDef_ptr, 4u);
DB_PushStreamPos(0);
v1 = (int)*varmenuDef_ptr;
if ( *varmenuDef_ptr )
{
if ( v1 == -1 || v1 == -2 )
{
v2 = v1 == -2;
v3 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v3;
*varmenuDef_ptr = (menuDef_t *)v3;
varmenuDef_t = (menuDef_t *)v3;
if ( v2 )
inserted = DB_InsertPointer();
else
inserted = 0;
Load_menuDef_t(1);
Load_MenuAsset(varmenuDef_ptr, v6, v5);
if ( inserted )
*inserted = *varmenuDef_ptr;
}
else
{
*varmenuDef_ptr = *(menuDef_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
DB_PopStreamPos();
}
// ?Load_FxElemDefArray@@YAX_NH@Z at 0x822ae1b0
void Assets::Load_FxElemDefArray(QDataStream *aStream, int count)
{
int v2; // r31
FxElemDef *v3; // r30
v2 = count;
Load_Stream(1, (void *)varFxElemDef, 252 * count);
v3 = varFxElemDef;
if ( v2 > 0 )
{
do
{
varFxElemDef = v3;
Load_FxElemDef(0);
--v2;
++v3;
}
while ( v2 );
}
}
// ?Load_menuDef_ptrArray@@YAX_NH@Z at 0x822ae208
QVector<menuDef_t> Assets::Load_menuDef_ptrArray(QDataStream *aStream, int count)
{
QVector<menuDef_t> result;
QVector<qint32> menuDefPtr;
for (int i = 0; i < count; i++) {
menuDef_t menuDef;
*aStream
>> menuDef.
result << menuDef;
}
v2 = count;
Load_Stream(1, varmenuDef_ptr, 4 * count);
v3 = varmenuDef_ptr;
if ( v2 > 0 )
{
do
{
varmenuDef_ptr = v3;
Load_menuDef_ptr(0);
--v2;
++v3;
}
while ( v2 );
}
return result;
}
// ?Load_FxEffectDef@@YAX_N@Z at 0x822ae260
FxEffectDef Assets::Load_FxEffectDef(QDataStream *aStream)
{
FxEffectDef result;
*aStream
>> result.namePtr
>> result.flags
>> result.totalSize
>> result.msecLoopingLife
>> result.elemDefCountLooping
>> result.elemDefCountOneShot
>> result.elemDefCountEmission
>> result.elemDefsPtr;
if (result.namePtr)
{
result.name = Load_XStringCustom(aStream);
}
if (result.elemDefsPtr)
{
result.elemDefs = Load_FxElemDefArray(aStream, result.elemDefCountEmission + result.elemDefCountOneShot + result.elemDefCountLooping);
}
return result;
}
// ?Load_FxEffectDefHandle@@YAX_N@Z at 0x822ae308
FxEffectDef Assets::Load_FxEffectDefHandle(QDataStream *aStream)
{
FxEffectDef result;
qint32 fxEffectDefPtr;
*aStream >> fxEffectDefPtr;
if (fxEffectDefPtr)
{
if (fxEffectDefPtr == -1 || fxEffectDefPtr == -2)
{
result = Load_FxEffectDef(aStream);
}
else {
*varFxEffectDefHandle = *(const FxEffectDef **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
DB_PopStreamPos();
}
}
return result
}
// ?Load_WeaponDef@@YAX_N@Z at 0x822ae3f0
WeaponDef Assets::Load_WeaponDef(QDataStream *aStream)
{
WeaponDef result;
*aStream
>> result.szInternalNamePtr
>> result.szDisplayNamePtr
>> result.szOverlayNamePtr
>> result.gunXModelPtr
>> result.handXModelPtr;
for (int i = 0; i < 33; i++) {
*aStream >> result.szXAnimsPtr[i];
}
*aStream
>> result.szModeNamePtr
>> result.hideTags[8];
for (int i = 0; i < 8; i++)
{
*aStream >> result.hideTags[i];
}
for (int i = 0; i < 16; i++)
{
*aStream >> result.notetrackSoundMapKeys[i];
}
for (int i = 0; i < 16; i++)
{
*aStream >> result.notetrackSoundMapValues[i];
}
*aStream
>> result.playerAnimType
>> result.weapType
>> result.weapClass
>> result.penetrateType
>> result.impactType
>> result.inventoryType
>> result.fireType
>> result.offhandClass
>> result.stance
>> result.viewFlashEffectPtr
>> result.worldFlashEffectPtr
>> result.pickupSoundPtr
>> result.pickupSoundPlayerPtr
>> result.ammoPickupSoundPtr
>> result.ammoPickupSoundPlayerPtr
>> result.projectileSoundPtr
>> result.pullbackSoundPtr
>> result.pullbackSoundPlayerPtr
>> result.fireSoundPtr
>> result.fireSoundPlayerPtr
>> result.fireLoopSoundPtr
>> result.fireLoopSoundPlayerPtr
>> result.fireStopSoundPtr
>> result.fireStopSoundPlayerPtr
>> result.fireLastSoundPtr
>> result.fireLastSoundPlayerPtr
>> result.emptyFireSoundPtr
>> result.emptyFireSoundPlayerPtr
>> result.meleeSwipeSoundPtr
>> result.meleeSwipeSoundPlayerPtr
>> result.meleeHitSoundPtr
>> result.meleeMissSoundPtr
>> result.rechamberSoundPtr
>> result.rechamberSoundPlayerPtr
>> result.reloadSoundPtr
>> result.reloadSoundPlayerPtr
>> result.reloadEmptySoundPtr
>> result.reloadEmptySoundPlayerPtr
>> result.reloadStartSoundPtr
>> result.reloadStartSoundPlayerPtr
>> result.reloadEndSoundPtr
>> result.reloadEndSoundPlayerPtr
>> result.detonateSoundPtr
>> result.detonateSoundPlayerPtr
>> result.nightVisionWearSoundPtr
>> result.nightVisionWearSoundPlayerPtr
>> result.nightVisionRemoveSoundPtr
>> result.nightVisionRemoveSoundPlayerPtr
>> result.altSwitchSoundPtr
>> result.altSwitchSoundPlayerPtr
>> result.raiseSoundPtr
>> result.raiseSoundPlayerPtr
>> result.firstRaiseSoundPtr
>> result.firstRaiseSoundPlayerPtr
>> result.putawaySoundPtr
>> result.putawaySoundPlayerPtr
>> result.bounceSoundPtr
>> result.viewShellEjectEffectPtr
>> result.worldShellEjectEffectPtr
>> result.viewLastShotEjectEffectPtr
>> result.worldLastShotEjectEffectPtr
>> result.reticleCenterPtr
>> result.reticleSidePtr
>> result.iReticleCenterSize
>> result.iReticleSideSize
>> result.iReticleMinOfs
>> result.activeReticleType
>> result.vStandMove[0]
>> result.vStandMove[1]
>> result.vStandMove[2]
>> result.vStandRot[0]
>> result.vStandRot[1]
>> result.vStandRot[2]
>> result.vDuckedOfs[0]
>> result.vDuckedOfs[1]
>> result.vDuckedOfs[2]
>> result.vDuckedMove[0]
>> result.vDuckedMove[1]
>> result.vDuckedMove[2]
>> result.vDuckedRot[0]
>> result.vDuckedRot[1]
>> result.vDuckedRot[2]
>> result.vProneOfs[0]
>> result.vProneOfs[1]
>> result.vProneOfs[2]
>> result.vProneMove[0]
>> result.vProneMove[1]
>> result.vProneMove[2]
>> result.vProneRot[0]
>> result.vProneRot[1]
>> result.vProneRot[2]
>> result.fPosMoveRate
>> result.fPosProneMoveRate
>> result.fStandMoveMinSpeed
>> result.fDuckedMoveMinSpeed
>> result.fProneMoveMinSpeed
>> result.fPosRotRate
>> result.fPosProneRotRate
>> result.fStandRotMinSpeed
>> result.fDuckedRotMinSpeed
>> result.fProneRotMinSpeed
>> result.worldModelPtr
>> result.worldClipModelPtr
>> result.rocketModelPtr
>> result.knifeModelPtr
>> result.worldKnifeModelPtr
>> result.hudIconPtr
>> result.hudIconRatio
>> result.ammoCounterIconPtr
>> result.ammoCounterIconRatio
>> result.iStartAmmo
>> result.szAmmoNamePtr
>> result.iAmmoIndex
>> result.szClipNamePtr
>> result.iClipIndex
>> result.iMaxAmmo
>> result.iClipSize
>> result.shotCount
>> result.szSharedAmmoCapNamePtr
>> result.iSharedAmmoCapIndex
>> result.iSharedAmmoCap
>> result.damage
>> result.playerDamage
>> result.iMeleeDamage
>> result.iDamageType
>> result.iFireDelay
>> result.iMeleeDelay
>> result.meleeChargeDelay
>> result.iDetonateDelay
>> result.iFireTime
>> result.iRechamberTime
>> result.iRechamberBoltTime
>> result.iHoldFireTime
>> result.iDetonateTime
>> result.iMeleeTime
>> result.meleeChargeTime
>> result.iReloadTime
>> result.reloadShowRocketTime
>> result.iReloadEmptyTime
>> result.iReloadAddTime
>> result.iReloadStartTime
>> result.iReloadStartAddTime
>> result.iReloadEndTime
>> result.iDropTime
>> result.iRaiseTime
>> result.iAltDropTime
>> result.iAltRaiseTime
>> result.quickDropTime
>> result.quickRaiseTime
>> result.iFirstRaiseTime
>> result.iEmptyRaiseTime
>> result.iEmptyDropTime
>> result.sprintInTime
>> result.sprintLoopTime
>> result.sprintOutTime
>> result.nightVisionWearTime
>> result.nightVisionWearTimeFadeOutEnd
>> result.nightVisionWearTimePowerUp
>> result.nightVisionRemoveTime
>> result.nightVisionRemoveTimePowerDown
>> result.nightVisionRemoveTimeFadeInStart
>> result.fuseTime
>> result.aiFuseTime
>> result.requireLockonToFire
>> result.noAdsWhenMagEmpty
>> result.avoidDropCleanup
>> result.autoAimRange
>> result.aimAssistRange
>> result.aimAssistRangeAds
>> result.aimPadding
>> result.enemyCrosshairRange
>> result.crosshairColorChange
>> result.moveSpeedScale
>> result.adsMoveSpeedScale
>> result.sprintDurationScale
>> result.fAdsZoomFov
>> result.fAdsZoomInFrac
>> result.fAdsZoomOutFrac
>> result.overlayMaterialPtr
>> result.overlayMaterialLowResPtr
>> result.overlayReticle
>> result.overlayInterface
>> result.overlayWidth
>> result.overlayHeight
>> result.fAdsBobFactor
>> result.fAdsViewBobMult
>> result.fHipSpreadStandMin
>> result.fHipSpreadDuckedMin
>> result.fHipSpreadProneMin
>> result.hipSpreadStandMax
>> result.hipSpreadDuckedMax
>> result.hipSpreadProneMax
>> result.fHipSpreadDecayRate
>> result.fHipSpreadFireAdd
>> result.fHipSpreadTurnAdd
>> result.fHipSpreadMoveAdd
>> result.fHipSpreadDuckedDecay
>> result.fHipSpreadProneDecay
>> result.fHipReticleSidePos
>> result.iAdsTransInTime
>> result.iAdsTransOutTime
>> result.fAdsIdleAmount
>> result.fHipIdleAmount
>> result.adsIdleSpeed
>> result.hipIdleSpeed
>> result.fIdleCrouchFactor
>> result.fIdleProneFactor
>> result.fGunMaxPitch
>> result.fGunMaxYaw
>> result.swayMaxAngle
>> result.swayLerpSpeed
>> result.swayPitchScale
>> result.swayYawScale
>> result.swayHorizScale
>> result.swayVertScale
>> result.swayShellShockScale
>> result.adsSwayMaxAngle
>> result.adsSwayLerpSpeed
>> result.adsSwayPitchScale
>> result.adsSwayYawScale
>> result.adsSwayHorizScale
>> result.adsSwayVertScale
>> result.bRifleBullet
>> result.armorPiercing
>> result.bBoltAction
>> result.aimDownSight
>> result.bRechamberWhileAds
>> result.adsViewErrorMin
>> result.adsViewErrorMax
>> result.bCookOffHold
>> result.bClipOnly
>> result.adsFireOnly
>> result.cancelAutoHolsterWhenEmpty
>> result.suppressAmmoReserveDisplay
>> result.enhanced
>> result.laserSightDuringNightvision
>> result.killIconPtr
>> result.killIconRatio
>> result.flipKillIcon
>> result.dpadIconPtr
>> result.dpadIconRatio
>> result.bNoPartialReload
>> result.bSegmentedReload
>> result.iReloadAmmoAdd
>> result.iReloadStartAdd
>> result.szAltWeaponNamePtr
>> result.dpadIconRatio
>> result.dpadIconRatio
>> result.dpadIconRatio
>> result.altWeaponIndex
>> result.iDropAmmoMin
>> result.iDropAmmoMax
>> result.blocksProne
>> result.silenced
>> result.iExplosionRadius
>> result.iExplosionRadiusMin
>> result.iExplosionInnerDamage
>> result.iExplosionOuterDamage
>> result.damageConeAngle
>> result.iProjectileSpeed
>> result.iProjectileSpeedUp
>> result.iProjectileSpeedForward
>> result.iProjectileActivateDist
>> result.projLifetime
>> result.timeToAccelerate
>> result.projectileCurvature
>> result.projectileModelPtr
>> result.projExplosion
>> result.projExplosionEffectPtr
>> result.projExplosionEffectForceNormalUp
>> result.projDudEffectPtr
>> result.projExplosionSoundPtr
>> result.projDudSoundPtr
>> result.bProjImpactExplode
>> result.stickiness
>> result.bProjImpactExplode
>> result.hasDetonator
>> result.bProjImpactExplode
>> result.timedDetonation
>> result.rotate
>> result.holdButtonToThrow
>> result.freezeMovementWhenFiring
>> result.lowAmmoWarningThreshold
>> result.bProjImpactExplode;
for (int i = 0; i < 29; i++) {
*aStream >> result.parallelBounce[i];
}
for (int i = 0; i < 29; i++) {
*aStream >> result.perpendicularBounce[i];
}
*aStream
>> result.projTrailEffectPtr
>> result.vProjectileColor[0]
>> result.vProjectileColor[1]
>> result.vProjectileColor[2]
>> result.guidedMissileType
>> result.maxSteeringAccel
>> result.projIgnitionDelay
>> result.projIgnitionEffect
>> result.projIgnitionSoundPtr
>> result.fAdsAimPitch
>> result.fAdsCrosshairInFrac
>> result.fAdsCrosshairOutFrac
>> result.adsGunKickReducedKickBullets
>> result.adsGunKickReducedKickPercent
>> result.fAdsGunKickPitchMin
>> result.fAdsGunKickPitchMax
>> result.fAdsGunKickYawMin
>> result.fAdsGunKickYawMax
>> result.fAdsGunKickAccel
>> result.fAdsGunKickSpeedMax
>> result.fAdsGunKickSpeedDecay
>> result.fAdsGunKickStaticDecay
>> result.fAdsViewKickPitchMin
>> result.fAdsViewKickPitchMax
>> result.fAdsViewKickYawMin
>> result.fAdsViewKickYawMax
>> result.fAdsViewKickCenterSpeed
>> result.fAdsViewScatterMin
>> result.fAdsViewScatterMax
>> result.fAdsSpread
>> result.hipGunKickReducedKickBullets
>> result.hipGunKickReducedKickPercent
>> result.fHipGunKickPitchMin
>> result.fHipGunKickPitchMax
>> result.fHipGunKickYawMin
>> result.fHipGunKickYawMax
>> result.fHipGunKickAccel
>> result.fHipGunKickSpeedMax
>> result.fHipGunKickSpeedDecay
>> result.fHipGunKickStaticDecay
>> result.fHipViewKickPitchMin
>> result.fHipViewKickPitchMax
>> result.fHipViewKickYawMin
>> result.fHipViewKickYawMax
>> result.fHipViewKickCenterSpeed
>> result.fHipViewScatterMin
>> result.fHipViewScatterMax
>> result.fightDist
>> result.maxDist
>> result.accuracyGraphNamePtr[0]
>> result.accuracyGraphNamePtr[1]
>> result.accuracyGraphKnotsPtr[0]
>> result.accuracyGraphKnotsPtr[1]
>> result.originalAccuracyGraphKnotsPtr[0]
>> result.originalAccuracyGraphKnotsPtr[1]
>> result.accuracyGraphKnotCount[0]
>> result.accuracyGraphKnotCount[1]
>> result.originalAccuracyGraphKnotCount[0]
>> result.originalAccuracyGraphKnotCount[1]
>> result.iPositionReloadTransTime
>> result.leftArc
>> result.rightArc
>> result.topArc
>> result.bottomArc
>> result.accuracy
>> result.aiSpread
>> result.playerSpread
>> result.minTurnSpeed[0]
>> result.minTurnSpeed[1]
>> result.maxTurnSpeed[0]
>> result.maxTurnSpeed[1]
>> result.pitchConvergenceTime
>> result.yawConvergenceTime
>> result.suppressTime
>> result.maxRange
>> result.fAnimHorRotateInc
>> result.fPlayerPositionDist
>> result.szUseHintStringPtr
>> result.dropHintStringPtr
>> result.iUseHintStringIndex
>> result.dropHintStringIndex
>> result.horizViewJitter
>> result.vertViewJitter
>> result.szScriptPtr
>> result.fOOPosAnimLength[0]
>> result.fOOPosAnimLength[1]
>> result.minDamage
>> result.minPlayerDamage
>> result.fMaxDamageRange
>> result.fMinDamageRange
>> result.destabilizationRateTime
>> result.destabilizationCurvatureMax
>> result.destabilizeDistance;
for (int i = 0; i < 29; i++) {
*aStream >> result.locationDamageMultipliers[i];
}
*aStream
>> result.fireRumblePtr
>> result.meleeImpactRumblePtr
>> result.adsDofStart
>> result.adsDofEnd;
if (result.szInternalNamePtr == -1) {
result.szInternalName = Load_XStringCustom(aStream);
}
if (result.szDisplayNamePtr == -1) {
result.szDisplayName = Load_XStringCustom(aStream);
}
if (result.szOverlayNamePtr == -1) {
result.szOverlayName = Load_XStringCustom(aStream);
}
if (result.gunXModelPtr) {
result.gunXModel = Load_XModelPtrArray(aStream, 16);
}
if (result.handXModelPtr) {
result.handXModel = Load_XModelPtr(aStream);
}
for (int i = 0; i < 33; i++) {
if (result.szXAnimsPtr[i]) {
result.szXAnims[i] = Load_XStringCustom(aStream);
}
}
if (result.szModeNamePtr) {
result.szModeName = Load_XStringCustom(aStream);
}
if (result.hideTagsPtr) {
result.hideTags = Load_ScriptStringArray(aStream, 8);
}
if (result.notetrackSoundMapKeysPtr) {
result.notetrackSoundMapKeys = Load_ScriptStringArray(aStream, 16);
}
if (result.notetrackSoundMapValuesPtr) {
result.notetrackSoundMapValues = Load_ScriptStringArray(aStream, 16);
}
if (result.viewFlashEffectPtr) {
result.viewFlashEffect = Load_FxEffectDefHandle(aStream);
}
if (result.worldFlashEffectPtr) {
result.worldFlashEffect = Load_FxEffectDefHandle(aStream);
}
if (result.pickupSoundPtr) {
result.pickupSound = Load_SndAliasCustom(aStream);
}
if (result.pickupSoundPlayerPtr) {
result.pickupSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.ammoPickupSoundPtr) {
result.ammoPickupSound = Load_SndAliasCustom(aStream);
}
if (result.ammoPickupSoundPlayerPtr) {
result.ammoPickupSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.projectileSoundPtr) {
result.projectileSound = Load_SndAliasCustom(aStream);
}
if (result.pullbackSoundPtr) {
result.pullbackSound = Load_SndAliasCustom(aStream);
}
if (result.pullbackSoundPlayerPtr) {
result.pullbackSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.fireSoundPtr) {
result.fireSound = Load_SndAliasCustom(aStream);
}
if (result.fireSoundPlayerPtr) {
result.fireSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.fireLoopSoundPtr) {
result.fireLoopSound = Load_SndAliasCustom(aStream);
}
if (result.fireLoopSoundPlayerPtr) {
result.fireLoopSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.fireStopSoundPtr) {
result.fireStopSound = Load_SndAliasCustom(aStream);
}
if (result.fireStopSoundPlayerPtr) {
result.fireStopSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.fireLastSoundPtr) {
result.fireLastSound = Load_SndAliasCustom(aStream);
}
if (result.fireLastSoundPlayerPtr) {
result.fireLastSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.emptyFireSoundPtr) {
result.emptyFireSound = Load_SndAliasCustom(aStream);
}
if (result.emptyFireSoundPlayerPtr) {
result.emptyFireSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.meleeSwipeSoundPtr) {
result.meleeSwipeSound = Load_SndAliasCustom(aStream);
}
if (result.meleeSwipeSoundPlayerPtr) {
result.meleeSwipeSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.meleeHitSoundPtr) {
result.meleeHitSound = Load_SndAliasCustom(aStream);
}
if (result.meleeMissSoundPtr) {
result.meleeMissSound = Load_SndAliasCustom(aStream);
}
if (result.rechamberSoundPtr) {
result.rechamberSound = Load_SndAliasCustom(aStream);
}
if (result.rechamberSoundPlayerPtr) {
result.rechamberSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.reloadSoundPtr) {
result.reloadSound = Load_SndAliasCustom(aStream);
}
if (result.reloadSoundPlayerPtr) {
result.reloadSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.reloadEmptySoundPtr) {
result.reloadEmptySound = Load_SndAliasCustom(aStream);
}
if (result.reloadEmptySoundPlayerPtr) {
result.reloadEmptySoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.reloadStartSoundPtr) {
result.reloadStartSound = Load_SndAliasCustom(aStream);
}
if (result.reloadStartSoundPlayerPtr) {
result.reloadStartSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.reloadEndSoundPtr) {
result.reloadEndSound = Load_SndAliasCustom(aStream);
}
if (result.reloadEndSoundPlayerPtr) {
result.reloadEndSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.nightVisionWearSoundPtr) {
result.nightVisionWearSound = Load_SndAliasCustom(aStream);
}
if (result.detonateSoundPlayerPtr) {
result.detonateSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.nightVisionWearSoundPtr) {
result.nightVisionWearSound = Load_SndAliasCustom(aStream);
}
if (result.nightVisionRemoveSoundPtr) {
result.nightVisionRemoveSound = Load_SndAliasCustom(aStream);
}
if (result.nightVisionRemoveSoundPlayerPtr) {
result.nightVisionRemoveSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.altSwitchSoundPtr) {
result.altSwitchSound = Load_SndAliasCustom(aStream);
}
if (result.altSwitchSoundPlayerPtr) {
result.altSwitchSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.raiseSoundPtr) {
result.raiseSound = Load_SndAliasCustom(aStream);
}
if (result.raiseSoundPlayerPtr) {
result.raiseSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.firstRaiseSoundPtr) {
result.firstRaiseSound = Load_SndAliasCustom(aStream);
}
if (result.firstRaiseSoundPlayerPtr) {
result.firstRaiseSoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.putawaySoundPtr) {
result.putawaySound = Load_SndAliasCustom(aStream);
}
if (result.putawaySoundPlayerPtr) {
result.putawaySoundPlayer = Load_SndAliasCustom(aStream);
}
if (result.bounceSoundPtr)
{
if (result.bounceSoundPtr == -1)
{
result.bounceSound = Load_snd_alias_list_nameArray(aStream, 29);
}
else
{
// Resolve contents from g_streamBlocks
//varWeaponDef->bounceSound = (snd_alias_list_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)varWeaponDef->bounceSound
// - 1) >> 26) & 0x38)))[((int)varWeaponDef->bounceSound - 1) & 0x1FFFFFFF];
}
}
if (result.viewShellEjectEffectPtr) {
result.viewShellEjectEffect = Load_FxEffectDefHandle(aStream);
}
if (result.worldShellEjectEffectPtr) {
result.worldShellEjectEffect = Load_FxEffectDefHandle(aStream);
}
if (result.viewLastShotEjectEffectPtr) {
result.viewLastShotEjectEffect = Load_FxEffectDefHandle(aStream);
}
if (result.worldLastShotEjectEffectPtr) {
result.worldLastShotEjectEffect = Load_FxEffectDefHandle(aStream);
}
if (result.reticleCenterPtr) {
result.reticleCenter = Load_MaterialHandle(aStream);
}
if (result.reticleSidePtr) {
result.reticleSide = Load_MaterialHandle(aStream);
}
if (result.worldModelPtr) {
result.worldModel = Load_XModelPtrArray(aStream, 16);
}
if (result.worldClipModelPtr) {
result.worldClipModel = Load_XModelPtr(aStream);
}
if (result.rocketModelPtr) {
result.rocketModel = Load_XModelPtr(aStream);
}
if (result.knifeModelPtr) {
result.knifeModel = Load_XModelPtr(aStream);
}
if (result.worldKnifeModelPtr) {
result.worldKnifeModel = Load_XModelPtr(aStream);
}
if (result.hudIconPtr) {
result.hudIcon = Load_MaterialHandle(aStream);
}
if (result.ammoCounterIconPtr) {
result.ammoCounterIcon = Load_MaterialHandle(aStream);
}
if (result.szAmmoNamePtr == -1) {
result.szAmmoName = Load_XStringCustom(aStream);
}
if (result.szAmmoNamePtr == -1) {
result.szAmmoName = Load_XStringCustom(aStream);
}
if (result.szSharedAmmoCapNamePtr == -1) {
result.szSharedAmmoCapName = Load_XStringCustom(aStream);
}
if (result.overlayMaterialPtr) {
result.overlayMaterial = Load_MaterialHandle(aStream);
}
if (result.overlayMaterialLowResPtr) {
result.overlayMaterialLowRes = Load_MaterialHandle(aStream);
}
if (result.killIconPtr) {
result.killIcon = Load_MaterialHandle(aStream);
}
if (result.dpadIconPtr) {
result.dpadIcon = Load_MaterialHandle(aStream);
}
if (result.szAltWeaponNamePtr == -1) {
result.szAltWeaponName = Load_XStringCustom(aStream);
}
if (result.projectileModelPtr) {
result.projectileModel = Load_XModelPtr(aStream);
}
if (result.projExplosionEffectPtr) {
result.projExplosionEffect = Load_FxEffectDefHandle(aStream);
}
if (result.projDudEffectPtr) {
result.projDudEffect = Load_FxEffectDefHandle(aStream);
}
if (result.projExplosionSoundPtr) {
result.projExplosionSound = Load_SndAliasCustom(aStream);
}
if (result.projDudSoundPtr) {
result.projDudSound = Load_SndAliasCustom(aStream);
}
if (result.projTrailEffectPtr) {
result.projTrailEffect = Load_FxEffectDefHandle(aStream);
}
if (result.projIgnitionEffectPtr) {
result.projIgnitionEffect = Load_FxEffectDefHandle(aStream);
}
if (result.projIgnitionSoundPtr) {
result.projIgnitionSound = Load_SndAliasCustom(aStream);
}
if (result.accuracyGraphNamePtr[0] == -1) {
result.accuracyGraphName[0] = Load_XStringCustom(aStream);
}
if (result.accuracyGraphKnotsPtr[0])
{
if (result.accuracyGraphKnotsPtr[0] == -1)
{
for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[0]; i++) {
*aStream >> result.accaccuracyGraphKnots[i];
}
}
else
{
// Resolve contents from g_streamBlocks
//varWeaponDef->accuracyGraphKnots[0] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&(*varWeaponDef->accuracyGraphKnots[0])[0]
// - 1) >> 26) & 0x38)))[((int)&(*varWeaponDef->accuracyGraphKnots[0])[0] - 1) & 0x1FFFFFFF];
}
}
if (result.originalAccuracyGraphKnotsPtr[0])
{
if (result.originalAccuracyGraphKnotsPtr[0] == -1)
{
for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[0]; i++) {
*aStream >> result.originalAccuracyGraphKnots[i];
}
}
else
{
// Resolve contents from g_streamBlocks
//v5->originalAccuracyGraphKnots[0] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&(*v5->originalAccuracyGraphKnots[0])[0]
// - 1) >> 26) & 0x38)))[((int)&(*v5->originalAccuracyGraphKnots[0])[0] - 1) & 0x1FFFFFFF];
}
}
if (result.accuracyGraphNamePtr[1] == -1) {
result.accuracyGraphName[1] = Load_XStringCustom(aStream);
}
if (result.accuracyGraphKnotsPtr[1])
{
if (result.accuracyGraphKnotsPtr[1] == -1)
{
for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[1]; i++) {
*aStream >> result.accuracyGraphKnots[i];
}
}
else
{
// Resolve contents from g_streamBlocks
//varWeaponDef->accuracyGraphKnots[1] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&(*varWeaponDef->accuracyGraphKnots[1])[0]
// - 1) >> 26) & 0x38)))[((int)&(*varWeaponDef->accuracyGraphKnots[1])[0] - 1) & 0x1FFFFFFF];
}
}
if (result.originalAccuracyGraphKnotsPtr[1])
{
if (result.originalAccuracyGraphKnotsPtr[1] == -1)
{
for (int i = 0; i < varWeaponDef->accuracyGraphKnotCount[1]; i++) {
*aStream >> result.originalAccuracyGraphKnots[i];
}
}
else
{
// Resolve contents from g_streamBlocks
//v12->originalAccuracyGraphKnots[1] = (float (*)[2])&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + ((((unsigned int)&(*v12->originalAccuracyGraphKnots[1])[0]
// - 1) >> 26) & 0x38)))[((int)&(*v12->originalAccuracyGraphKnots[1])[0] - 1) & 0x1FFFFFFF];
}
}
if (result.szUseHintStringPtr == -1) {
result.szUseHintString = Load_XStringCustom(aStream);
}
if (result.dropHintStringPtr == -1) {
result.dropHintString = Load_XStringCustom(aStream);
}
if (result.szScriptPtr == -1) {
result.szScript = Load_XStringCustom(aStream);
}
if (result.fireRumblePtr == -1) {
result.fireRumble = Load_XStringCustom(aStream);
}
if (result.meleeImpactRumblePtr == -1) {
result.meleeImpactRumble = Load_XStringCustom(aStream);
}
return result;
}
// ?Load_MenuList@@YAX_N@Z at 0x822aeff8
MenuList Assets::Load_MenuList(QDataStream *aStream)
{
MenuList result;
*aStream >>
result.namePtr
result.menuCount
result.menusPtr;
if (result.namePtr) {
result.name = Load_XStringCustom(aStream);
}
if (result.menusPtr)
{
result.menus << Load_menuDef_ptrArray(aStream, result.menuCount);
}
return result;
}
// ?Load_DynEntityDef@@YAX_N@Z at 0x822af090
DynEntityDef Assets::Load_DynEntityDef(QDataStream *aStream)
{
DynEntityDef result;
*aStream
>> result.type
>> result.pose
>> result.xModelPtr
>> result.brushModel
>> result.physicsBrushModel
>> result.destroyFxPtr
>> result.destroyPiecesPtr
>> result.physPresetPtr
>> result.health
>> result.mass
>> result.contents;
if (result.xModelPtr) {
result.xModel = Load_XModelPtr(aStream);
}
if (result.destroyFxPtr) {
result.destroyFx = Load_FxEffectDefHandle(aStream);
}
if (result.destroyPiecesPtr) {
result.destroyPieces = Load_XModelPiecesPtr(aStream);
}
if (result.physPresetPtr) {
result.physPreset = Load_PhysPresetPtr(aStream);
}
return result;
}
// ?Load_FxEffectDefHandleArray@@YAX_NH@Z at 0x822af148
QVector<FxEffectDefHandle> Assets::Load_FxEffectDefHandleArray(QDataStream *aStream, int count)
{
QVector<FxEffectDefHandle> result;
for (int i = 0; i < count; i++) {
}
v2 = count;
Load_Stream(0, varFxEffectDefHandle, 4 * count);
v3 = varFxEffectDefHandle;
if ( v2 > 0 )
{
do
{
varFxEffectDefHandle = v3;
Load_FxEffectDefHandle(0);
--v2;
++v3;
}
while ( v2 );
}
return result;
}
// ?Load_WeaponDefPtr@@YAX_N@Z at 0x822af1a0
WeaponDef Assets::Load_WeaponDefPtr(QDataStream *aStream)
{
WeaponDef result;
qint32 weaponDefPtr;
*aStream >> weaponDefPtr;
if (weaponDefPtr)
{
if (weaponDefPtr == -1 || weaponDefPtr == -2)
{
result = Load_WeaponDef(aStream);
}
else
{
// Resolve contents from g_streamBlocks
//*varWeaponDefPtr = *(WeaponDef **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
return result;
}
// ?Load_FxImpactEntry@@YAX_N@Z at 0x822af288
FxImpactEntry Assets::Load_FxImpactEntry(QDataStream *aStream)
{
FxImpactEntry result;
for (int i = 0; i < 29; i++) {
qint32 nonFleshPtr;
*aStream >> nonFleshPtr;
result.nonFleshPtrs[i] = nonFleshPtr
}
for (int i = 0; i < 4; i++) {
qint32 fleshPtr;
*aStream >> fleshPtr;
result.fleshPtrs[i] = fleshPtr
}
for (int i = 0; i < 29; i++) {
qint32 nonFleshPtr;
*aStream >> nonFleshPtr;
result.nonFleshPtrs[i] = nonFleshPtr
}
for (int i = 0; i < 4; i++) {
qint32 fleshPtr;
*aStream >> fleshPtr;
result.fleshPtrs[i] = fleshPtr
}
v2 = 29;
do
{
varFxEffectDefHandle = v1;
Load_FxEffectDefHandle(0);
--v2;
++v1;
}
while ( v2 );
varFxEffectDefHandle = varFxImpactEntry->flesh;
Load_Stream(0, varFxImpactEntry->flesh, 0x10u);
v3 = varFxEffectDefHandle;
v4 = 4;
do
{
varFxEffectDefHandle = v3;
Load_FxEffectDefHandle(0);
--v4;
++v3;
}
while ( v4 );
return result;
}
// ?Load_MenuListPtr@@YAX_N@Z at 0x822af328
MenuList Assets::Load_MenuListPtr(QDataStream *aStream)
{
MenuList result;
qint32 menuListPtr;
*aStream >> menuListPtr;
if (menuListPtr)
{
if (menuListPtr == -1 || menuListPtr == -2)
{
result = Load_MenuList(aStream);
}
else {
// Resolve contents from g_streamBlocks
//*varMenuListPtr = *(MenuList **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
return result;
}
// ?Load_DynEntityDefArray@@YAX_NH@Z at 0x822af410
QVector<DynEntityDef> Assets::Load_DynEntityDefArray(QDataStream *aStream, int count)
{
QVector<DynEntityDef> result;
for (int i = 0; i < count; i++) {
result << Load_DynEntityDef(aStream);
}
return result;
}
// ?Load_FxImpactEntryArray@@YAX_NH@Z at 0x822af470
QVector<FxImpactEntry> Assets::Load_FxImpactEntryArray(QDataStream *aStream, int count)
{
QVector<FxImpactEntry> result;
for (int i = 0; i < count; i++) {
result << Assets::Load_FxImpactEntry(aStream);
}
return result;
}
// ?Load_clipMap_t@@YAX_N@Z at 0x822af4c0
clipMap_t Assets::Load_clipMap_t(QDataStream *aStream)
{
clipMap_t result;
*aStream
>> result.namePtr
>> result.isInUse
>> result.planeCount
>> result.planesPtr
>> result.numStaticModels
>> result.staticModelListPtr
>> result.numMaterials
>> result.materialsPtr
>> result.numBrushSides
>> result.brushsidesPtr
>> result.numBrushEdges
>> result.brushEdgesPtr
>> result.numNodes
>> result.nodesPtr
>> result.leafsPtr
>> result.leafbrushNodesCount
>> result.leafbrushNodesPtr
>> result.numLeafBrushes
>> result.leafbrushesPtr
>> result.numLeafSurfaces
>> result.leafsurfacesPtr
>> result.vertCount
>> result.verts[0]
>> result.verts[1]
>> result.verts[2]
>> result.triCount
>> result.triIndicesPtr
>> result.triEdgeIsWalkablePtr
>> result.borderCount
>> result.bordersPtr
>> result.partitionCount
>> result.partitionsPtr
>> result.aabbTreeCount
>> result.aabbTreesPtr
>> result.numSubModels
>> result.cmodelsPtr
>> result.numBrushes
>> result.brushesPtr
>> result.numClusters
>> result.clusterBytes
>> result.visibilityPtr
>> result.vised
>> result.visibilityPtr
>> result.visibilityPtr
>> result.visibilityPtr
>> result.visibilityPtr;
if (result.namePtr == -1) {
result.name = Assets::Load_XStringCustom(aStream);
}
if (result.planesPtr)
{
if (result.planesPtr == -1)
{
for (int i = 0; i < result.planeCount; i++) {
result.planes << Asset::Load_cplane_s(aStream);
}
}
else
{
//varclipMap_t->planes = (cplane_s *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)&varclipMap_t->planes[-1].pad[1] >> 26) & 0x38)))[(int)&varclipMap_t->planes[-1].pad[1] & 0x1FFFFFFF];
}
}
if (result.staticModelListPtr)
{
result.staticModelList = Load_cStaticModel_tArray(aStream, result.numStaticModels);
}
if (result.materialsPtr)
{
result.materials = Load_dmaterial_tArray(aStream, result.numMaterials);
}
if (result.brushsidesPtr)
{
result.brushsides = Load_cbrushside_tArray(aStream, result.numBrushSides);
}
if (result.brushEdgesPtr)
{
result.brushEdges = Load_cbrushedge_tArray(aStream, result.numBrushEdges);
}
if (result.nodesPtr)
{
result.nodes = Load_cNode_tArray(aStream, result.numNodes);
}
if (result.leafsPtr)
{
result.leafs = Load_cLeaf_tArray(aStream, result.numLeafs);
}
if (result.leafbrushesPtr)
{
result.leafbrushes = Load_LeafBrushArray(aStream, result.numLeafBrushes);
}
if ( v1->leafbrushNodes )
{
leafbrushNodesCount = v1->leafbrushNodesCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varcLeafBrushNode_t = (CLeafBrushNode *)g_streamPos;
v1->leafbrushNodes = (CLeafBrushNode *)g_streamPos;
Load_cLeafBrushNode_tArray(1, leafbrushNodesCount);
v1 = varclipMap_t;
}
if ( v1->leafsurfaces )
{
v17 = 4 * v1->numLeafSurfaces;
v18 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v18;
varuint = (unsigned int *)v18;
v1->leafsurfaces = (unsigned int *)v18;
Load_Stream(1, v18, v17);
v1 = varclipMap_t;
}
if ( v1->verts )
{
vertCount = v1->vertCount;
v20 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v1->verts = (float (*)[3])v20;
g_streamPos = v20;
varvec3_t = (float (*)[3])v20;
Load_Stream(1, v20, 12 * vertCount);
v1 = varclipMap_t;
}
if ( v1->triIndices )
{
triCount = v1->triCount;
v22 = (unsigned __int8 *)((unsigned int)(g_streamPos + 1) & 0xFFFFFFFE);
v1->triIndices = (unsigned __int16 *)v22;
g_streamPos = v22;
varUnsignedShort = (unsigned __int16 *)v22;
Load_Stream(1, v22, 6 * triCount);
v1 = varclipMap_t;
}
if ( v1->triEdgeIsWalkable )
{
v23 = g_streamPos;
v24 = v1->triCount;
v1->triEdgeIsWalkable = g_streamPos;
g_streamPos = v23;
varbyte = v23;
Load_Stream(1, v23, ((3 * v24 + 31) >> 3) & 0xFFFFFFFC);
v1 = varclipMap_t;
}
if ( v1->borders )
{
v25 = 28 * v1->borderCount;
v26 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v1->borders = (CollisionBorder *)v26;
g_streamPos = v26;
varCollisionBorder = (CollisionBorder *)v26;
Load_Stream(1, v26, v25);
v1 = varclipMap_t;
}
if ( v1->partitions )
{
partitionCount = v1->partitionCount;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varCollisionPartition = (CollisionPartition *)g_streamPos;
v1->partitions = (CollisionPartition *)g_streamPos;
Load_CollisionPartitionArray(1, partitionCount);
v1 = varclipMap_t;
}
if ( v1->aabbTrees )
{
v28 = 32 * v1->aabbTreeCount;
v29 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v29;
varCollisionAabbTree = (CollisionAabbTree *)v29;
v1->aabbTrees = (CollisionAabbTree *)v29;
Load_Stream(1, v29, v28);
v1 = varclipMap_t;
}
if ( v1->cmodels )
{
numSubModels = v1->numSubModels;
v31 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v1->cmodels = (cmodel_t *)v31;
g_streamPos = v31;
varcmodel_t = (cmodel_t *)v31;
Load_Stream(1, v31, 72 * numSubModels);
v1 = varclipMap_t;
}
if ( v1->brushes )
{
numBrushes = v1->numBrushes;
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0);
varcbrush_t = (cbrush_t *)g_streamPos;
v1->brushes = (cbrush_t *)g_streamPos;
Load_cbrush_tArray(1, numBrushes);
v1 = varclipMap_t;
}
if ( v1->visibility )
{
v33 = g_streamPos;
v34 = v1->clusterBytes * v1->numClusters;
v1->visibility = g_streamPos;
varbyte = v33;
Load_Stream(1, v33, v34);
v1 = varclipMap_t;
}
varMapEntsPtr = &v1->mapEnts;
Load_MapEntsPtr(0);
v35 = varclipMap_t;
box_brush = varclipMap_t->box_brush;
if ( box_brush )
{
if ( box_brush == (cbrush_t *)-1 )
{
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 15) & 0xFFFFFFF0);
varcbrush_t = (cbrush_t *)g_streamPos;
varclipMap_t->box_brush = (cbrush_t *)g_streamPos;
Load_CBrush(1);
v35 = varclipMap_t;
}
else
{
varclipMap_t->box_brush = (cbrush_t *)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
+ (((unsigned int)varclipMap_t->box_brush[-1].edgeCount[5] >> 26) & 0x38)))[(int)varclipMap_t->box_brush[-1].edgeCount[5] & 0x1FFFFFFF];
}
}
if ( v35->dynEntDefList[0] )
{
v37 = v35->dynEntCount[0];
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varDynEntityDef = (DynEntityDef *)g_streamPos;
v35->dynEntDefList[0] = (DynEntityDef *)g_streamPos;
Load_DynEntityDefArray(1, v37);
v35 = varclipMap_t;
}
if ( v35->dynEntDefList[1] )
{
v38 = v35->dynEntCount[1];
g_streamPos = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
varDynEntityDef = (DynEntityDef *)g_streamPos;
v35->dynEntDefList[1] = (DynEntityDef *)g_streamPos;
Load_DynEntityDefArray(1, v38);
v35 = varclipMap_t;
}
DB_PushStreamPos(1u);
if ( v35->dynEntPoseList[0] )
{
v40 = __ROL4__(v35->dynEntCount[0], 5);
v41 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v41;
varDynEntityPose = (DynEntityPose *)v41;
v35->dynEntPoseList[0] = (DynEntityPose *)v41;
Load_Stream(v39, v41, v40);
v35 = varclipMap_t;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v35->dynEntPoseList[1] )
{
v43 = __ROL4__(v35->dynEntCount[1], 5);
v44 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
g_streamPos = v44;
varDynEntityPose = (DynEntityPose *)v44;
v35->dynEntPoseList[1] = (DynEntityPose *)v44;
Load_Stream(v42, v44, v43);
v35 = varclipMap_t;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v35->dynEntClientList[0] )
{
v46 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v47 = 4 * (v35->dynEntCount[0] + __ROL4__(v35->dynEntCount[0], 1));
g_streamPos = v46;
varDynEntityClient = (DynEntityClient *)v46;
v35->dynEntClientList[0] = (DynEntityClient *)v46;
Load_Stream(v45, v46, v47);
v35 = varclipMap_t;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v35->dynEntClientList[1] )
{
v49 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v50 = 4 * (v35->dynEntCount[1] + __ROL4__(v35->dynEntCount[1], 1));
g_streamPos = v49;
varDynEntityClient = (DynEntityClient *)v49;
v35->dynEntClientList[1] = (DynEntityClient *)v49;
Load_Stream(v48, v49, v50);
v35 = varclipMap_t;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v35->dynEntCollList[0] )
{
v52 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v53 = 4 * (v35->dynEntCount[0] + __ROL4__(v35->dynEntCount[0], 2));
g_streamPos = v52;
varDynEntityColl = (DynEntityColl *)v52;
v35->dynEntCollList[0] = (DynEntityColl *)v52;
Load_Stream(v51, v52, v53);
v35 = varclipMap_t;
}
DB_PopStreamPos();
DB_PushStreamPos(1u);
if ( v35->dynEntCollList[1] )
{
v55 = (unsigned __int8 *)((unsigned int)(g_streamPos + 3) & 0xFFFFFFFC);
v56 = 4 * (v35->dynEntCount[1] + __ROL4__(v35->dynEntCount[1], 2));
g_streamPos = v55;
varDynEntityColl = (DynEntityColl *)v55;
v35->dynEntCollList[1] = (DynEntityColl *)v55;
Load_Stream(v54, v55, v56);
}
DB_PopStreamPos();
DB_PopStreamPos();
}
// ?Load_FxImpactTable@@YAX_N@Z at 0x822afc40
FxImpactTable Assets::Load_FxImpactTable(QDataStream *aStream)
{
FxImpactTable result;
*aStream
>> result.namePtr
>> result.tablePtr;
if (result.namePtr == -1) {
result.name = Assets::Load_XStringCustom(aStream);
}
if (result.tablePtr)
{
result.table = Assets::Load_FxImpactEntryArray(1, 12);
}
DB_PopStreamPos();
}
// ?Load_clipMap_ptr@@YAX_N@Z at 0x822afcd8
clipMap_t Assets::Load_clipMap_ptr(QDataStream *aStream)
{
clipMap_t result;
qint32 clipMapPtr;
*aStream >> clipMapPtr;
if (clipMapPtr)
{
if (clipMapPtr != -1 || clipMapPtr != -2)
{
result = Assets::Load_clipMap_t(aStream);
}
else
{
// Resolve contents to g_streamBlocks
//*varclipMap_ptr = *(clipMap_t **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
}
// ?Load_FxImpactTablePtr@@YAX_N@Z at 0x822afdc0
FxImpactTable Assets::Load_FxImpactTablePtr(QDataStream *aStream)
{
FxImpactTable result;
qint32 fxImpactTablePtr;
*aStream >> fxImpactTablePtr;
if (fxImpactTablePtr)
{
if (fxImpactTablePtr == -1 || fxImpactTablePtr != -2)
{
result = Assets::Load_FxImpactTable(aStream);
}
else
{
// Resolve contents to g_streamBlocks
//*varFxImpactTablePtr = *(FxImpactTable **)&(*(unsigned __int8 **)((char *)&g_streamBlocks->data
// + (((unsigned int)(v1 - 1) >> 26) & 0x38)))[(v1 - 1) & 0x1FFFFFFF];
}
}
return result;
}
struct XAsset
{
XAssetType type;
XAssetHeader header;
};
// ?Load_XAssetHeader@@YAX_N@Z at 0x822afea8
XAssetHeader Assets::Load_XAssetHeader(QDataStream *aStream, XAsset aAsset)
{
XAssetHeader result;
switch (aAsset.type)
{
case ASSET_TYPE_PHYSPRESET:
result = Assets::Load_PhysPresetPtr(aStream);
break;
case ASSET_TYPE_XANIMPARTS:
result = Assets::Load_XAnimPartsPtr(aStream);
break;
case ASSET_TYPE_XMODEL:
result = Assets::Load_XModelPtr(aStream);
break;
case ASSET_TYPE_MATERIAL:
result = Assets::Load_MaterialHandle(aStream);
break;
case ASSET_TYPE_PIXELSHADER:
result = Assets::Load_MaterialPixelShaderPtr(aStream);
break;
case ASSET_TYPE_TECHNIQUE_SET:
result = Assets::Load_MaterialTechniqueSetPtr(aStream);
break;
case ASSET_TYPE_IMAGE:
varGfxImagePtr = (GfxImage **)varXAssetHeader;
result = Assets::Load_GfxImagePtr(aStream);
break;
case ASSET_TYPE_SOUND:
result = Assets::Load_snd_alias_list_ptr(aStream);
break;
case ASSET_TYPE_SOUND_CURVE:
result = Assets::Load_SndCurvePtr(aStream);
break;
case ASSET_TYPE_LOADED_SOUND:
result = Assets::Load_LoadedSoundPtr(aStream);
break;
case ASSET_TYPE_CLIPMAP:
case ASSET_TYPE_CLIPMAP_PVS:
varclipMap_ptr = (clipMap_t **)varXAssetHeader;
result = Assets::Load_clipMap_ptr(aStream);
break;
case ASSET_TYPE_COMWORLD:
result = Assets::Load_ComWorldPtr(aStream);
break;
case ASSET_TYPE_GAMEWORLD_SP:
result = Assets::Load_GameWorldSpPtr(aStream);
break;
case ASSET_TYPE_GAMEWORLD_MP:
result = Assets::Load_GameWorldMpPtr(aStream);
break;
case ASSET_TYPE_MAP_ENTS:
result = Assets::Load_MapEntsPtr(aStream);
break;
case ASSET_TYPE_GFXWORLD:
result = Assets::Load_GfxWorldPtr(aStream);
break;
case ASSET_TYPE_LIGHT_DEF:
result = Assets::Load_GfxLightDefPtr(aStream);
break;
case ASSET_TYPE_FONT:
result = Assets::Load_FontHandle(aStream);
break;
case ASSET_TYPE_MENULIST:
result = Assets::Load_MenuListPtr(aStream);
break;
case ASSET_TYPE_MENU:
result = Assets::Load_menuDef_ptr(aStream);
break;
case ASSET_TYPE_LOCALIZE_ENTRY:
result = Assets::Load_LocalizeEntryPtr(aStream);
break;
case ASSET_TYPE_WEAPON:
result = Assets::Load_WeaponDefPtr(aStream);
break;
case ASSET_TYPE_SNDDRIVER_GLOBALS:
result = Assets::Load_SndDriverGlobalsPtr(aStream);
break;
case ASSET_TYPE_FX:
result = Assets::Load_FxEffectDefHandle(aStream);
break;
case ASSET_TYPE_IMPACT_FX:
result = Assets::Load_FxImpactTablePtr(aStream);
break;
case ASSET_TYPE_RAWFILE:
result = Assets::Load_RawFilePtr(aStream);
break;
case ASSET_TYPE_STRINGTABLE:
result = Assets::Load_StringTablePtr(aStream);
break;
}
return result;
}
// ?Load_XAsset@@YAX_N@Z at 0x822b0220
XAsset Assets::Load_XAsset(QDataStream *aStream)
{
XAsset result;
*aStream
>> result.type
>> result.header
result.header = Load_XAssetHeader(aStream, result);
return result;
}