Hexray decompiles for tungsten.
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idAAS2DebugAreaModel@@QAA@XZ
|
||||
// EA : 0x825AE5B8
|
||||
// RVA : 0x005AE5B8
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
idAAS2DebugAreaModel *__fastcall idAAS2DebugAreaModel::idAAS2DebugAreaModel(idAAS2DebugAreaModel *this)
|
||||
{
|
||||
idResource::idResource(this);
|
||||
this->__vftable = (idAAS2DebugAreaModel_vtbl *)&idAAS2DebugAreaModel::`vftable';
|
||||
idAAS2DebugAreaModelData::idAAS2DebugAreaModelData(this: &this->data);
|
||||
this->sourceTimestamp = -1;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219576
|
||||
// EA : 0x825AE614
|
||||
// RVA : 0x005AE614
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219576()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idResource::~idResource(this: *(idResource **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idAAS2DebugAreaModel@@UAA@XZ
|
||||
// EA : 0x825AE658
|
||||
// RVA : 0x005AE658
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2DebugAreaModel::~idAAS2DebugAreaModel(idAAS2DebugAreaModel *this)
|
||||
{
|
||||
this->__vftable = (idAAS2DebugAreaModel_vtbl *)&idAAS2DebugAreaModel::`vftable';
|
||||
idAAS2DebugAreaModelData::~idAAS2DebugAreaModelData(this: &this->data);
|
||||
idResource::~idResource(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219598
|
||||
// EA : 0x825AE6AC
|
||||
// RVA : 0x005AE6AC
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219598()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idResource::~idResource(this: *(idResource **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?LoadResource@idAAS2DebugAreaModel@@UAAXXZ
|
||||
// EA : 0x825AE750
|
||||
// RVA : 0x005AE750
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2DebugAreaModel::LoadResource(idAAS2DebugAreaModel *this)
|
||||
{
|
||||
idAAS2DebugAreaModelData *p_data; // r29
|
||||
const char *str; // r6
|
||||
idResource::resourceError_t v4; // r3
|
||||
idStr v5; // [sp+50h] [-140h] BYREF
|
||||
char v6[288]; // [sp+70h] [-120h] BYREF
|
||||
|
||||
p_data = &this->data;
|
||||
idAAS2DebugAreaModelData::Free(this: &this->data);
|
||||
str = this->name.str;
|
||||
this->sourceTimestamp = -1;
|
||||
fileSystem->FixLongFilename(
|
||||
this: fileSystem,
|
||||
a2: "generated",
|
||||
a3: idAAS2DebugAreaModelData::BINARY_FILE_EXTENSION,
|
||||
a4: str,
|
||||
a5: v6,
|
||||
a6: 256);
|
||||
v5.len = 0;
|
||||
v5.allocedAndFlag = 20;
|
||||
v5.data = v5.baseBuffer;
|
||||
v5.baseBuffer[0] = 0;
|
||||
v4 = idAAS2DebugAreaModelData::LoadBinary(this: p_data, binaryFileName: v6, errorMsg: &v5);
|
||||
if ( v4 != RESOURCE_ERROR_NONE )
|
||||
{
|
||||
if ( v4 >= RESOURCE_ERROR_FATAL )
|
||||
{
|
||||
idResource::SetResourceError(this, fmt: v5.data);
|
||||
idLib::Error(fmt: "Resource Fatal Error: %s", v5.data);
|
||||
}
|
||||
idResource::SetResourceError(this, fmt: "Could not gen binary in retail '%s'", this->name.str);
|
||||
}
|
||||
idStr::FreeData(this: &v5);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// $LN36
|
||||
// EA : 0x825AE82C
|
||||
// RVA : 0x005AE82C
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _LN36()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 400 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?ReloadIfStale@idAAS2DebugAreaModel@@UAA_NXZ
|
||||
// EA : 0x825AE858
|
||||
// RVA : 0x005AE858
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idAAS2DebugAreaModel::ReloadIfStale(idAAS2DebugAreaModel *this)
|
||||
{
|
||||
_BYTE v3[264]; // [sp+50h] [-120h] BYREF
|
||||
|
||||
if ( fileSystem->GetTimestamp(this: fileSystem, a2: this->name.str, a3: false) == this->sourceTimestamp )
|
||||
return 0;
|
||||
fileSystem->FixLongFilename(
|
||||
this: fileSystem,
|
||||
a2: "generated",
|
||||
a3: idAAS2DebugAreaModelData::BINARY_FILE_EXTENSION,
|
||||
a4: this->name.str,
|
||||
a5: v3,
|
||||
a6: 256);
|
||||
fileSystem->RemoveFile(this: fileSystem, a2: v3, a3: FSPATH_BASE);
|
||||
this->LoadResource(this);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?WriteResourceFile@idAAS2DebugAreaModel@@UBAXXZ
|
||||
// EA : 0x825AE920
|
||||
// RVA : 0x005AE920
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2DebugAreaModel::WriteResourceFile(idAAS2DebugAreaModel *this)
|
||||
{
|
||||
idAAS2DebugAreaModelGenerator::WriteToBinary(
|
||||
uniqueIdName: this->name.str,
|
||||
fileName: this->name.str,
|
||||
sourceTimestamp: this->sourceTimestamp,
|
||||
data: &this->data);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idAAS2DebugAreaModel::resourceList''
|
||||
// EA : 0x83335040
|
||||
// RVA : 0x01335040
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idAAS2DebugAreaModel::resourceList__()
|
||||
{
|
||||
idResourceList::idResourceList(this: &idAAS2DebugAreaModel::resourceList, typeName: "aasDebugAreaModel");
|
||||
idAAS2DebugAreaModel::resourceList.__vftable = (idTypedResourceList<idAAS2DebugAreaModel>_vtbl *)&idTypedResourceList<idAAS2DebugAreaModel>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idAAS2DebugAreaModel::resourceList__);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetResourceList@idAAS2DebugAreaModel@@UBAPAVidResourceList@@XZ
|
||||
// EA : 0x825AE640
|
||||
// RVA : 0x005AE640
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodel.h
|
||||
// ========================================================================
|
||||
|
||||
idTypedResourceList<idAAS2DebugAreaModel> *__fastcall idAAS2DebugAreaModel::GetResourceList(idAAS2DebugAreaModel *this)
|
||||
{
|
||||
return &idAAS2DebugAreaModel::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,436 @@
|
||||
|
||||
// ========================================================================
|
||||
// `idAAS2DebugAreaModelData::LoadBinary'::`2'::idLocalFileBuffer::~idLocalFileBuffer
|
||||
// EA : 0x825AE9E0
|
||||
// RVA : 0x005AE9E0
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall _idAAS2DebugAreaModelData::LoadBinary_::_2_::idLocalFileBuffer::~idLocalFileBuffer(int a1)
|
||||
{
|
||||
void *v1; // r4
|
||||
|
||||
v1 = *(void **)(a1 + 4);
|
||||
if ( v1 != nullptr )
|
||||
{
|
||||
idMem::Free(this: &mem, ptr: v1, align: ALIGN_16);
|
||||
*(_DWORD *)(a1 + 4) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Draw@idAAS2DebugAreaModelData@@QBAXPAVidRenderWorld@@ABV?$idList@H$04@@@Z
|
||||
// EA : 0x825AECE8
|
||||
// RVA : 0x005AECE8
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2DebugAreaModelData::Draw(
|
||||
idAAS2DebugAreaModelData *this,
|
||||
idRenderWorld *rw,
|
||||
const idList<int,5> *visibleAreas)
|
||||
{
|
||||
int num; // r10
|
||||
int v7; // r19
|
||||
int v8; // r21
|
||||
int v9; // r28
|
||||
idAAS2DebugAreaModelData::debugAreaInfo_t *v10; // r25
|
||||
int v11; // r26
|
||||
idAAS2DebugAreaModelData::areaTri_t *list; // r11
|
||||
idAAS2DebugAreaModelData::areaTri_t *v13; // r30
|
||||
idWinding v14; // [sp+50h] [-90h] BYREF
|
||||
float v15[32]; // [sp+60h] [-80h] BYREF
|
||||
|
||||
num = visibleAreas->num;
|
||||
v15[0] = 0.0;
|
||||
v7 = 0;
|
||||
v15[1] = 1.0;
|
||||
v15[2] = 0.0;
|
||||
v15[3] = 0.5;
|
||||
if ( num > 0 )
|
||||
{
|
||||
v8 = 0;
|
||||
do
|
||||
{
|
||||
v9 = 0;
|
||||
v10 = &this->areas.list[visibleAreas->list[v8]];
|
||||
if ( v10->tris.num > 0 )
|
||||
{
|
||||
v11 = 0;
|
||||
do
|
||||
{
|
||||
list = v10->tris.list;
|
||||
v13 = &v10->tris.list[v11];
|
||||
v14.__vftable = (idWinding_vtbl *)&idWinding::`vftable';
|
||||
memset(&v14.numPoints, 0, 12);
|
||||
idWinding::AddPoint(this: &v14, v: &this->vertices.list[list[v11].v0]);
|
||||
idWinding::AddPoint(this: &v14, v: &this->vertices.list[v13->v1]);
|
||||
idWinding::AddPoint(this: &v14, v: &this->vertices.list[v13->v2]);
|
||||
rw->DebugFilledPolygon(this: rw, a2: (const idVec4 *)v15, a3: &v14, a4: 0, a5: true);
|
||||
v14.__vftable = (idWinding_vtbl *)&idWinding::`vftable';
|
||||
idMem::Free(this: &mem, ptr: v14.p, align: ALIGN_16);
|
||||
++v9;
|
||||
v14.p = nullptr;
|
||||
++v11;
|
||||
}
|
||||
while ( v9 < v10->tris.num );
|
||||
}
|
||||
++v7;
|
||||
++v8;
|
||||
}
|
||||
while ( v7 < visibleAreas->num );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$220514
|
||||
// EA : 0x825AEE60
|
||||
// RVA : 0x005AEE60
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_220514()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idWinding::~idWinding(this: (idWinding *)(v0 - 224 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?BuildResourceNameFromAASName@idAAS2DebugAreaModelData@@SAXPBDAAVidStr@@@Z
|
||||
// EA : 0x825AEE88
|
||||
// RVA : 0x005AEE88
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2DebugAreaModelData::BuildResourceNameFromAASName(const char *aasName, idStr *resourceName)
|
||||
{
|
||||
idStr::operator=(this: resourceName, text: aasName);
|
||||
idStr::Append(this: resourceName, text: (char *)idAAS2DebugAreaModelData::TEXT_FILE_EXTENSION);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Free@idAAS2DebugAreaModelData@@QAAXXZ
|
||||
// EA : 0x825AF098
|
||||
// RVA : 0x005AF098
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2DebugAreaModelData::Free(idAAS2DebugAreaModelData *this)
|
||||
{
|
||||
char *list; // r3
|
||||
|
||||
idList<idThread *,58>::Clear((idList<idVehicleState *,5> *)this);
|
||||
if ( this->areas.listStatic == 0 || this->areas.listStatic == 2 )
|
||||
{
|
||||
list = (char *)this->areas.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idList<idDeclVehicleUpgrade const *,5>>(ptr: list, num: this->areas.size);
|
||||
this->areas.list = nullptr;
|
||||
this->areas.size = 0;
|
||||
}
|
||||
this->areas.num = 0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idAAS2DebugAreaModelData@@QAA@XZ
|
||||
// EA : 0x825AF180
|
||||
// RVA : 0x005AF180
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
idAAS2DebugAreaModelData *__fastcall idAAS2DebugAreaModelData::idAAS2DebugAreaModelData(idAAS2DebugAreaModelData *this)
|
||||
{
|
||||
this->vertices.list = nullptr;
|
||||
this->vertices.granularity = 0;
|
||||
this->vertices.memTag = 5;
|
||||
this->vertices.listStatic = 0;
|
||||
this->vertices.size = 0;
|
||||
this->vertices.num = 0;
|
||||
idList<idThread *,58>::Clear((idList<idVehicleState *,5> *)this);
|
||||
this->areas.granularity = 0;
|
||||
this->areas.memTag = 5;
|
||||
this->areas.listStatic = 0;
|
||||
this->areas.list = nullptr;
|
||||
this->areas.size = 0;
|
||||
this->areas.num = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221093
|
||||
// EA : 0x825AF1E4
|
||||
// RVA : 0x005AF1E4
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221093()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: *(idStaticList<idVehicleState *,4> **)(v0 - 128 + 148));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idAAS2DebugAreaModelData@@QAA@XZ
|
||||
// EA : 0x825AF218
|
||||
// RVA : 0x005AF218
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2DebugAreaModelData::~idAAS2DebugAreaModelData(idAAS2DebugAreaModelData *this)
|
||||
{
|
||||
char *list; // r3
|
||||
|
||||
if ( this->areas.listStatic == 0 || this->areas.listStatic == 2 )
|
||||
{
|
||||
list = (char *)this->areas.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idList<idDeclVehicleUpgrade const *,5>>(ptr: list, num: this->areas.size);
|
||||
this->areas.list = nullptr;
|
||||
this->areas.size = 0;
|
||||
}
|
||||
this->areas.num = 0;
|
||||
idList<idThread *,58>::Clear((idList<idVehicleState *,5> *)this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221128
|
||||
// EA : 0x825AF278
|
||||
// RVA : 0x005AF278
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221128()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: *(idStaticList<idVehicleState *,4> **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?LoadBinary@idAAS2DebugAreaModelData@@QAA?AW4resourceError_t@idResource@@PBDAAVidStr@@@Z
|
||||
// EA : 0x825AF2A8
|
||||
// RVA : 0x005AF2A8
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idAAS2DebugAreaModelData::LoadBinary(
|
||||
idAAS2DebugAreaModelData *this,
|
||||
const char *binaryFileName,
|
||||
idStr *errorMsg)
|
||||
{
|
||||
unsigned __int64 v3; // r26
|
||||
char **p_areas; // r24
|
||||
idFile *v8; // r3
|
||||
idResource::resourceError_t v10; // r3
|
||||
idResource::resourceError_t v11; // r30
|
||||
unsigned int v12; // r30
|
||||
void *v13; // r23
|
||||
int v14; // r22
|
||||
int v15; // r25
|
||||
idList<idAAS2DebugAreaModelData::areaTri_t,5> *v16; // r27
|
||||
int v17; // r29
|
||||
int v18; // r28
|
||||
idAAS2DebugAreaModelData::areaTri_t *v19; // r30
|
||||
idFileLocal v20; // [sp+50h] [-420h] BYREF
|
||||
int v21; // [sp+54h] [-41Ch] BYREF
|
||||
int v22; // [sp+58h] [-418h] BYREF
|
||||
int v23[5]; // [sp+5Ch] [-414h] BYREF
|
||||
idResource::resourceHeader_t v24; // [sp+70h] [-400h] BYREF
|
||||
idFile_Memory v25; // [sp+B0h] [-3C0h] BYREF
|
||||
char v26[256]; // [sp+200h] [-270h] BYREF
|
||||
char v27; // [sp+300h] [-170h] BYREF
|
||||
|
||||
p_areas = (char **)&this->areas;
|
||||
idList<idThread *,58>::Clear((idList<idVehicleState *,5> *)this);
|
||||
LODWORD(v3) = 0;
|
||||
if ( this->areas.listStatic == 0 || this->areas.listStatic == 2 )
|
||||
{
|
||||
if ( *p_areas != nullptr )
|
||||
idListArrayDelete<idList<idDeclVehicleUpgrade const *,5>>(ptr: *p_areas, num: this->areas.size);
|
||||
*p_areas = nullptr;
|
||||
this->areas.size = 0;
|
||||
}
|
||||
this->areas.num = 0;
|
||||
v8 = fileSystem->OpenFileRead(this: fileSystem, a2: binaryFileName, a3: 1, a4: 0);
|
||||
v20.file = v8;
|
||||
if ( v8 == nullptr )
|
||||
{
|
||||
idStr::operator=(this: errorMsg, text: idResource::resourceErrorMessage[1]);
|
||||
idFileLocal::~idFileLocal(this: &v20);
|
||||
return 1;
|
||||
}
|
||||
v24.versionHi = 0;
|
||||
v24.versionLo = 0;
|
||||
v24.sourceFileNameLen = 0;
|
||||
v24.uniqueIdNameLen = 0;
|
||||
v24.resourceId = 0xFFFF;
|
||||
v24.headerVersionHi = 1;
|
||||
v24.headerVersionLo = 1;
|
||||
v24.platform = 4;
|
||||
v24.sourceTimestamp = 0xFFFFFF;
|
||||
v24.pad[0] = 0;
|
||||
v24.pad[1] = 0;
|
||||
v24.pad[2] = 0;
|
||||
v24.hash = v3;
|
||||
v24.dataOffset = v3;
|
||||
v24.totalSize = v3;
|
||||
v10 = idResource::ReadBinaryHeader(
|
||||
file: v8,
|
||||
expectedResourceId: 0x41415344u,
|
||||
expectedVersionHi: 1u,
|
||||
expectedVersionLo: 0,
|
||||
header: &v24,
|
||||
sourceFileName: &v27,
|
||||
uniqueIdName: v26);
|
||||
v11 = v10;
|
||||
if ( v10 != RESOURCE_ERROR_NONE )
|
||||
{
|
||||
idStr::operator=(this: errorMsg, text: idResource::resourceErrorMessage[v10]);
|
||||
idFileLocal::~idFileLocal(this: &v20);
|
||||
return v11;
|
||||
}
|
||||
v12 = LODWORD(v24.totalSize) - LODWORD(v24.dataOffset);
|
||||
v23[1] = LODWORD(v24.totalSize) - LODWORD(v24.dataOffset);
|
||||
v13 = idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\engine\\aas2file\\AAS2DebugAreaModelData.cpp(106) : TAG_AAS",
|
||||
size: LODWORD(v24.totalSize) - LODWORD(v24.dataOffset),
|
||||
tag: TAG_AAS,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
v23[2] = (int)v13;
|
||||
if ( v20.file->Read(this: v20.file, a2: v13, a3: v12) != v12 )
|
||||
{
|
||||
idStr::operator=(this: errorMsg, text: idResource::resourceErrorMessage[7]);
|
||||
if ( v13 != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v13, align: ALIGN_16);
|
||||
idFileLocal::~idFileLocal(this: &v20);
|
||||
return 7;
|
||||
}
|
||||
idFile_Memory::idFile_Memory(this: &v25);
|
||||
idFile_Memory::SetReadOnlyData(this: &v25, data: (const char *)v13, length: v12);
|
||||
v25.Read(this: &v25, a2: v23, a3: 4u);
|
||||
if ( v23[0] <= 0 )
|
||||
{
|
||||
idStr::operator=(this: errorMsg, text: "Bad number of vertices");
|
||||
idFile_Memory::~idFile_Memory(this: &v25);
|
||||
if ( v13 != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v13, align: ALIGN_16);
|
||||
LABEL_34:
|
||||
idFileLocal::~idFileLocal(this: &v20);
|
||||
return 6;
|
||||
}
|
||||
idList<idVec3,37>::SetNum(this: &this->vertices, newNum: v23[0]);
|
||||
v25.Read(this: &v25, a2: this->vertices.list, a3: 12 * v23[0]);
|
||||
v25.Read(this: &v25, a2: &v22, a3: 4u);
|
||||
if ( v22 <= 0 )
|
||||
{
|
||||
idStr::operator=(this: errorMsg, text: "Bad number of areas");
|
||||
idFile_Memory::~idFile_Memory(this: &v25);
|
||||
if ( v13 != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v13, align: ALIGN_16);
|
||||
goto LABEL_34;
|
||||
}
|
||||
idList<idAAS2DebugAreaModelData::debugAreaInfo_t,5>::SetNum(this: &this->areas, newNum: v22);
|
||||
v14 = 0;
|
||||
if ( v22 > 0 )
|
||||
{
|
||||
v15 = 0;
|
||||
while ( 1 )
|
||||
{
|
||||
v25.Read(this: &v25, a2: &v21, a3: 4u);
|
||||
if ( v21 < 0 )
|
||||
break;
|
||||
v16 = (idList<idAAS2DebugAreaModelData::areaTri_t,5> *)&(*p_areas)[v15];
|
||||
idList<idAnimWebBlendEquation::existingNode_t,5>::SetNum(this: v16, newNum: v21);
|
||||
v17 = 0;
|
||||
if ( v21 > 0 )
|
||||
{
|
||||
v18 = 0;
|
||||
do
|
||||
{
|
||||
v19 = &v16->list[v18];
|
||||
v25.Read(this: &v25, a2: v19, a3: 4u);
|
||||
v25.Read(this: &v25, a2: &v19->v1, a3: 4u);
|
||||
v25.Read(this: &v25, a2: &v19->v2, a3: 4u);
|
||||
++v17;
|
||||
++v18;
|
||||
}
|
||||
while ( v17 < v21 );
|
||||
}
|
||||
++v14;
|
||||
v15 += 16;
|
||||
if ( v14 >= v22 )
|
||||
goto LABEL_29;
|
||||
}
|
||||
idStr::operator=(this: errorMsg, text: "Bad number of area tris");
|
||||
idFile_Memory::~idFile_Memory(this: &v25);
|
||||
if ( v13 != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v13, align: ALIGN_16);
|
||||
goto LABEL_34;
|
||||
}
|
||||
LABEL_29:
|
||||
idFile_Memory::~idFile_Memory(this: &v25);
|
||||
if ( v13 != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v13, align: ALIGN_16);
|
||||
idFileLocal::~idFileLocal(this: &v20);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221172
|
||||
// EA : 0x825AF72C
|
||||
// RVA : 0x005AF72C
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221172()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idFileLocal::~idFileLocal(this: (idFileLocal *)(v0 - 1136 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221173
|
||||
// EA : 0x825AF754
|
||||
// RVA : 0x005AF754
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221173()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
_idAAS2DebugAreaModelData::LoadBinary_::_2_::idLocalFileBuffer::~idLocalFileBuffer(a1: v0 - 1136 + 96);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221174
|
||||
// EA : 0x825AF77C
|
||||
// RVA : 0x005AF77C
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodeldata.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221174()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idFile_Memory::~idFile_Memory(this: (idFile_Memory *)(v0 - 1136 + 176));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?WriteToBinary@idAAS2DebugAreaModelGenerator@@SA_NPBD0IABVidAAS2DebugAreaModelData@@@Z
|
||||
// EA : 0x825AF860
|
||||
// RVA : 0x005AF860
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodelgenerator.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idAAS2DebugAreaModelGenerator::WriteToBinary(
|
||||
const char *uniqueIdName,
|
||||
const char *fileName,
|
||||
unsigned int sourceTimestamp,
|
||||
const idAAS2DebugAreaModelData *data)
|
||||
{
|
||||
unsigned __int64 v4; // r27
|
||||
int v9; // r23
|
||||
int v10; // r24
|
||||
unsigned int (__fastcall *Write)(struct idFile_Memory *, const void *, unsigned int); // ctr
|
||||
int v12; // r29
|
||||
int v13; // r28
|
||||
int v14; // r30
|
||||
char *filePtr; // r30
|
||||
unsigned int v16; // r3
|
||||
int v18; // [sp+50h] [-210h] BYREF
|
||||
int v19; // [sp+54h] [-20Ch] BYREF
|
||||
int num; // [sp+58h] [-208h] BYREF
|
||||
idResource::resourceHeader_t v21; // [sp+60h] [-200h] BYREF
|
||||
idFile_Memory v22; // [sp+A0h] [-1C0h] BYREF
|
||||
|
||||
idFile_Memory::idFile_Memory(this: &v22);
|
||||
num = data->vertices.num;
|
||||
v22.Write(this: &v22, a2: &num, a3: 4u);
|
||||
v22.Write(this: &v22, a2: data->vertices.list, a3: 12 * num);
|
||||
v19 = data->areas.num;
|
||||
v22.Write(this: &v22, a2: &v19, a3: 4u);
|
||||
LODWORD(v4) = 0;
|
||||
v9 = 0;
|
||||
if ( v19 > 0 )
|
||||
{
|
||||
v10 = 0;
|
||||
do
|
||||
{
|
||||
HIDWORD(v4) = &data->areas.list[v10];
|
||||
Write = v22.Write;
|
||||
v18 = *(_DWORD *)(HIDWORD(v4) + 4);
|
||||
Write(this: &v22, a2: &v18, a3: 4u);
|
||||
v12 = 0;
|
||||
if ( v18 > 0 )
|
||||
{
|
||||
v13 = 0;
|
||||
do
|
||||
{
|
||||
v14 = v13 + *(_DWORD *)HIDWORD(v4);
|
||||
v22.Write(this: &v22, a2: (const void *)v14, a3: 4u);
|
||||
v22.Write(this: &v22, a2: (const void *)(v14 + 4), a3: 4u);
|
||||
v22.Write(this: &v22, a2: (const void *)(v14 + 8), a3: 4u);
|
||||
++v12;
|
||||
v13 += 12;
|
||||
}
|
||||
while ( v12 < v18 );
|
||||
}
|
||||
++v9;
|
||||
++v10;
|
||||
}
|
||||
while ( v9 < v19 );
|
||||
}
|
||||
v21.sourceTimestamp = sourceTimestamp;
|
||||
v21.sourceFileNameLen = 0;
|
||||
v21.uniqueIdNameLen = 0;
|
||||
filePtr = v22.filePtr;
|
||||
v21.headerVersionHi = 1;
|
||||
v21.headerVersionLo = 1;
|
||||
v21.resourceId = 1094800196;
|
||||
v21.versionHi = idAAS2DebugAreaModelData::BINARY_VERSION_HI;
|
||||
v21.versionLo = idAAS2DebugAreaModelData::BINARY_VERSION_LO;
|
||||
v21.platform = 4;
|
||||
v21.pad[0] = 0;
|
||||
v21.pad[1] = 0;
|
||||
v21.pad[2] = 0;
|
||||
v21.uniqueId = v4;
|
||||
v21.hash = v4;
|
||||
v21.dataOffset = 0x100000004LL;
|
||||
v21.totalSize = v4;
|
||||
v16 = (unsigned __int64)idFile_Memory::Length(this: &v22) >> 32;
|
||||
if ( idResource::WriteBinary(
|
||||
uniqueIdName,
|
||||
sourceFileName: fileName,
|
||||
fileExtension: idAAS2DebugAreaModelData::BINARY_FILE_EXTENSION,
|
||||
header: &v21,
|
||||
data: filePtr,
|
||||
dataLen: v16) )
|
||||
{
|
||||
idFile_Memory::~idFile_Memory(this: &v22);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
idFile_Memory::~idFile_Memory(this: &v22);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224652
|
||||
// EA : 0x825AFA94
|
||||
// RVA : 0x005AFA94
|
||||
// PDB : w:\tech5\engine\aas2file\aas2debugareamodelgenerator.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224652()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idFile_Memory::~idFile_Memory(this: (idFile_Memory *)(v0 - 608 + 160));
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,87 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetResourceList@idAAS2File@@UBAPAVidResourceList@@XZ
|
||||
// EA : 0x825B3640
|
||||
// RVA : 0x005B3640
|
||||
// PDB : w:\tech5\engine\aas2file\aas2file.h
|
||||
// ========================================================================
|
||||
|
||||
idTypedResourceList<idAAS2File> *__fastcall idAAS2File::GetResourceList(idAAS2File *this)
|
||||
{
|
||||
return &idAAS2File::resourceList;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FloodAddVisitedArea@idAAS2File@@ABAXH@Z
|
||||
// EA : 0x825BCD80
|
||||
// RVA : 0x005BCD80
|
||||
// PDB : w:\tech5\engine\aas2file\aas2file.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2File::FloodAddVisitedArea(
|
||||
idAAS2File *this,
|
||||
int areaNum,
|
||||
int a3,
|
||||
int a4,
|
||||
int a5,
|
||||
int a6,
|
||||
int a7,
|
||||
int a8,
|
||||
int a9,
|
||||
int a10,
|
||||
int a11,
|
||||
int a12,
|
||||
int a13,
|
||||
int a14)
|
||||
{
|
||||
a14 = areaNum;
|
||||
idList<idAnimWebBlendTree *,5>::Append(
|
||||
this: (idList<enum encounterGroupRole_t,5> *)&this->visitedAreas,
|
||||
obj: (const encounterGroupRole_t *)&a14);
|
||||
this->areas.list[areaNum].flags |= 0x8000u;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FloodClearVisitedAreas@idAAS2File@@ABAXH@Z
|
||||
// EA : 0x825BCDE8
|
||||
// RVA : 0x005BCDE8
|
||||
// PDB : w:\tech5\engine\aas2file\aas2file.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAAS2File::FloodClearVisitedAreas(idAAS2File *this, int offset)
|
||||
{
|
||||
int v3; // r9
|
||||
int v4; // r10
|
||||
int v5; // r11
|
||||
unsigned __int16 *p_flags; // r8
|
||||
idList<int,37> *p_visitedAreas; // r31
|
||||
int size; // r11
|
||||
|
||||
v3 = offset;
|
||||
if ( offset < this->visitedAreas.num )
|
||||
{
|
||||
v4 = offset;
|
||||
do
|
||||
{
|
||||
++v3;
|
||||
v5 = this->visitedAreas.list[v4++];
|
||||
p_flags = &this->areas.list[v5].flags;
|
||||
*p_flags &= ~0x8000u;
|
||||
}
|
||||
while ( v3 < this->visitedAreas.num );
|
||||
}
|
||||
p_visitedAreas = &this->visitedAreas;
|
||||
if ( offset <= this->visitedAreas.size
|
||||
|| idList<idNavSpline *,5>::Resize(
|
||||
this: (idList<idSpawnArea::GeneratedPosition *,5> *)&this->visitedAreas,
|
||||
newsize: offset) )
|
||||
{
|
||||
size = p_visitedAreas->size;
|
||||
if ( offset < size )
|
||||
size = offset;
|
||||
p_visitedAreas->num = size;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,994 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?CreateState@idCollisionGridLocal@@UBAXAAVidCollisionGridState@@@Z
|
||||
// EA : 0x825BDAA8
|
||||
// RVA : 0x005BDAA8
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionGridLocal::CreateState(idCollisionGridLocal *this, idCollisionGridState *state)
|
||||
{
|
||||
int v4; // r31
|
||||
int v5; // r29
|
||||
|
||||
idCollisionGridState::Create(this: state, num: this->grid.indices.num, material_: nullptr);
|
||||
v4 = 0;
|
||||
if ( this->grid.indices.num > 0 )
|
||||
{
|
||||
v5 = 0;
|
||||
do
|
||||
{
|
||||
if ( this->grid.indices.list[v5] == idGenGridModel::INVALID_INDEX )
|
||||
idCollisionGridState::Inactivate(this: state, id: v4);
|
||||
else
|
||||
idCollisionGridState::Activate(this: state, id: v4);
|
||||
++v4;
|
||||
++v5;
|
||||
}
|
||||
while ( v4 < this->grid.indices.num );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?IsValid@idCollisionGridLocal@@UBA_NXZ
|
||||
// EA : 0x825BDB28
|
||||
// RVA : 0x005BDB28
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
unsigned int __fastcall idCollisionGridLocal::IsValid(idCollisionGridLocal *this)
|
||||
{
|
||||
return (-this->grid.parts.num & (unsigned int)~this->grid.parts.num) >> 31;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetBinaryFileName@idCollisionGridLocal@@QBA?AVidStr@@PBD@Z
|
||||
// EA : 0x825BDC40
|
||||
// RVA : 0x005BDC40
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCollisionGridLocal *__fastcall idCollisionGridLocal::GetBinaryFileName(
|
||||
idCollisionGridLocal *this,
|
||||
idStr *result,
|
||||
const char *modelName)
|
||||
{
|
||||
char v6[288]; // [sp+60h] [-120h] BYREF
|
||||
|
||||
this->name.str = (const char *)20;
|
||||
this->trackedMemory = (int)&this->nextOnHashChain;
|
||||
this->__vftable = nullptr;
|
||||
HIBYTE(this->nextOnHashChain) = 0;
|
||||
if ( idStr::Icmpn(s1: modelName, s2: "maps/", n: 5) != 0 )
|
||||
{
|
||||
fileSystem->FixLongFilename(this: fileSystem, a2: "generated", a3: "bcg", a4: modelName, a5: v6, a6: 256);
|
||||
idStr::operator=((idStr *)this, text: v6);
|
||||
}
|
||||
else
|
||||
{
|
||||
idStr::operator=((idStr *)this, text: modelName);
|
||||
idStr::SetFileExtension((idStr *)this, extension: "bcg");
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$227548
|
||||
// EA : 0x825BDD0C
|
||||
// RVA : 0x005BDD0C
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_227548()
|
||||
{
|
||||
int v0; // r12
|
||||
int v1; // r31
|
||||
|
||||
v1 = v0 - 384;
|
||||
if ( (*(_DWORD *)(v0 - 384 + 80) & 1) != 0 )
|
||||
{
|
||||
*(_DWORD *)(v1 + 80) &= ~1u;
|
||||
idStrStatic<260>::~idStrStatic<260>(this: *(idStr **)(v1 + 404));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?ReloadIfStale@idCollisionGridLocal@@UAA_NXZ
|
||||
// EA : 0x825BDD58
|
||||
// RVA : 0x005BDD58
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idCollisionGridLocal::ReloadIfStale(idCollisionGridLocal *this)
|
||||
{
|
||||
idStr v3[2]; // [sp+50h] [-40h] BYREF
|
||||
|
||||
idCollisionGridLocal::GetBinaryFileName(
|
||||
this: (idCollisionGridLocal *)v3,
|
||||
result: (idStr *)this,
|
||||
modelName: this->name.str);
|
||||
if ( fileSystem->GetTimestamp(this: fileSystem, a2: v3[0].data, a3: false) == this->binaryTimeStamp )
|
||||
{
|
||||
if ( idStr::Icmpn(s1: v3[0].data, s2: "maps/", n: 5) == 0
|
||||
|| fileSystem->GetTimestamp(this: fileSystem, a2: this->name.str, a3: false) == this->sourceTimeStamp )
|
||||
{
|
||||
idStr::FreeData(this: v3);
|
||||
return 0;
|
||||
}
|
||||
fileSystem->RemoveFile(this: fileSystem, a2: v3[0].data, a3: FSPATH_BASE);
|
||||
}
|
||||
this->LoadResource(this);
|
||||
idStr::FreeData(this: v3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$227593
|
||||
// EA : 0x825BDE50
|
||||
// RVA : 0x005BDE50
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_227593()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 144 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FreeData@idCollisionGridLocal@@QAAXXZ
|
||||
// EA : 0x825BDE78
|
||||
// RVA : 0x005BDE78
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionGridLocal::FreeData(idCollisionGridLocal *this)
|
||||
{
|
||||
idList<idVehicleState *,5> *p_grid; // r31
|
||||
|
||||
p_grid = (idList<idVehicleState *,5> *)&this->grid;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->grid.vertices);
|
||||
idList<idThread *,58>::Clear(this: p_grid + 2);
|
||||
idList<idThread *,58>::Clear(this: p_grid + 3);
|
||||
idList<idThread *,58>::Clear(this: p_grid + 4);
|
||||
idList<idThread *,58>::Clear(this: p_grid + 5);
|
||||
idList<idThread *,58>::Clear(this: p_grid);
|
||||
this->binaryTimeStamp = -1;
|
||||
this->sourceTimeStamp = -1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idCollisionGridLocal@@UAA@XZ
|
||||
// EA : 0x825BE498
|
||||
// RVA : 0x005BE498
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionGridLocal::~idCollisionGridLocal(idCollisionGridLocal *this)
|
||||
{
|
||||
this->__vftable = (idCollisionGridLocal_vtbl *)&idCollisionGridLocal::`vftable';
|
||||
idCollisionGridLocal::FreeData(this);
|
||||
idSoundBSPFile::~idSoundBSPFile(this: &this->grid);
|
||||
this->__vftable = (idCollisionGridLocal_vtbl *)&idCollisionGrid::`vftable';
|
||||
idResource::~idResource(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$228114
|
||||
// EA : 0x825BE4FC
|
||||
// RVA : 0x005BE4FC
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_228114()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idCollisionGrid::~idCollisionGrid(this: *(idCollisionGrid **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$228115
|
||||
// EA : 0x825BE524
|
||||
// RVA : 0x005BE524
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_228115()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idSoundBSPFile::~idSoundBSPFile(this: (idGenGridModel *)(*(_DWORD *)(v0 - 112 + 132) + 36));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idCollisionGridLocal@@QAA@XZ
|
||||
// EA : 0x825BED80
|
||||
// RVA : 0x005BED80
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCollisionGridLocal *__fastcall idCollisionGridLocal::idCollisionGridLocal(idCollisionGridLocal *this)
|
||||
{
|
||||
idResource::idResource(this);
|
||||
this->__vftable = (idCollisionGridLocal_vtbl *)&idCollisionGridLocal::`vftable';
|
||||
idGenGridModel::idGenGridModel(this: &this->grid);
|
||||
this->binaryTimeStamp = -1;
|
||||
this->sourceTimeStamp = -1;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$228767
|
||||
// EA : 0x825BEDE0
|
||||
// RVA : 0x005BEDE0
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_228767()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idCollisionGrid::~idCollisionGrid(this: *(idCollisionGrid **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?RasterizePolygon@idGridRasterize@@SAXABVidGenGridModel@@AAVidCollisionGridState@@PBVidVec2i@@H@Z
|
||||
// EA : 0x825BF310
|
||||
// RVA : 0x005BF310
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idGridRasterize::RasterizePolygon(__int64 state, const idVec2i *pos, int num, long double a4)
|
||||
{
|
||||
int v4; // r16
|
||||
int v5; // r21
|
||||
double v8; // fp29
|
||||
int v9; // r15
|
||||
double v10; // fp24
|
||||
_DWORD *v11; // r18
|
||||
int v12; // r11
|
||||
const idVec2i *v13; // r20
|
||||
int v14; // r9
|
||||
int y; // r8
|
||||
int v16; // r4
|
||||
unsigned __int64 v17; // kr00_8
|
||||
unsigned __int64 v18; // kr08_8
|
||||
int v19; // r8
|
||||
int v20; // r25
|
||||
int v21; // r9
|
||||
__int64 v22; // r6
|
||||
int v23; // r23
|
||||
__int64 v24; // r7
|
||||
int v25; // r29
|
||||
int v26; // r26
|
||||
int v27; // r30
|
||||
int v28; // r30
|
||||
int v29; // r11
|
||||
double v30; // fp23
|
||||
__int64 v31; // r9
|
||||
double v32; // fp31
|
||||
double v33; // fp25
|
||||
long double v34; // fp2
|
||||
__int64 v35; // r5
|
||||
double v36; // fp28
|
||||
double v37; // fp30
|
||||
double v38; // fp27
|
||||
long double v39; // fp2
|
||||
double v40; // fp26
|
||||
gridRasterizeEdge_t *v41; // r3
|
||||
gridRasterizeEdge_t *v42; // r10
|
||||
double v43; // fp0
|
||||
char v44; // r11
|
||||
double v45; // fp0
|
||||
double v46; // fp0
|
||||
gridRasterizeEdge_t *i; // r11
|
||||
int v48; // r25
|
||||
gridRasterizeEdge_t *v49; // r26
|
||||
gridRasterizeEdge_t *v50; // r21
|
||||
gridRasterizeEdge_t *v51; // r10
|
||||
gridRasterizeEdge_t *next; // r7
|
||||
gridRasterizeEdge_t *prev; // r11
|
||||
gridRasterizeEdge_t *v54; // r11
|
||||
gridRasterizeEdge_t *j; // r9
|
||||
gridRasterizeEdge_t *k; // r28
|
||||
unsigned int x; // r11
|
||||
unsigned __int16 v58; // r9
|
||||
int v59; // r30
|
||||
int v60; // r29
|
||||
float *v61; // r30
|
||||
float *v62; // r27
|
||||
char v63; // r28
|
||||
int v64; // r29
|
||||
int v65; // r10
|
||||
char v66; // r11
|
||||
int v67; // r11
|
||||
_DWORD *v68; // r11
|
||||
_DWORD *v69; // r11
|
||||
int v70; // r9
|
||||
int v71; // r11
|
||||
int v72; // r7
|
||||
float **v73; // r11
|
||||
gridRasterizeEdge_t *v74; // [sp+50h] [-2550h]
|
||||
signed int v75; // [sp+60h] [-2540h]
|
||||
unsigned __int64 v76; // [sp+68h] [-2538h]
|
||||
int v77; // [sp+70h] [-2530h]
|
||||
signed int v78; // [sp+74h] [-252Ch]
|
||||
idList<gridRasterizeEdge_t,5> v79; // [sp+A0h] [-2500h] BYREF
|
||||
int v80; // [sp+B0h] [-24F0h] BYREF
|
||||
idCollisionGridState *v81; // [sp+25BCh] [+1Ch]
|
||||
|
||||
v81 = (idCollisionGridState *)state;
|
||||
v4 = 0;
|
||||
v79.granularity = 1;
|
||||
v79.num = 0;
|
||||
v79.size = 256;
|
||||
v5 = HIDWORD(state);
|
||||
*(_WORD *)&v79.memTag = 1281;
|
||||
v79.list = (gridRasterizeEdge_t *)&v80;
|
||||
LODWORD(state) = *(_DWORD *)(HIDWORD(state) + 128);
|
||||
v74 = nullptr;
|
||||
v8 = (float)state;
|
||||
v78 = state;
|
||||
v9 = 0x7FFFFFFF;
|
||||
v77 = *(_DWORD *)(HIDWORD(state) + 112);
|
||||
v75 = 0x80000000;
|
||||
v10 = (float)((float)1.0 / (float)state);
|
||||
if ( num > 0 )
|
||||
{
|
||||
v11 = (_DWORD *)(HIDWORD(state) + 120);
|
||||
v12 = num - 1;
|
||||
v13 = pos;
|
||||
do
|
||||
{
|
||||
v14 = v11[1];
|
||||
y = v13->y;
|
||||
v16 = pos[v12].y;
|
||||
LODWORD(v76) = y - v14;
|
||||
v17 = __PAIR64__(v13->x - *v11, y - v14);
|
||||
v18 = __PAIR64__(pos[v12].x - *v11, v16 - v14);
|
||||
if ( v16 - v14 > y - v14 )
|
||||
{
|
||||
v17 = __PAIR64__(v76, v16 - v14);
|
||||
HIDWORD(v76) = v13->x - *v11;
|
||||
v18 = v76;
|
||||
}
|
||||
v19 = *(_DWORD *)(v5 + 112) - 1;
|
||||
__twllei(v78, 0);
|
||||
__twlgei(v78 & ~(__ROL4__(HIDWORD(v18), 1) - 1), 0xFFFFFFFF);
|
||||
v20 = SHIDWORD(v18) / v78;
|
||||
if ( SHIDWORD(v18) / v78 >= v19 )
|
||||
v20 = v19;
|
||||
v21 = *(_DWORD *)(v5 + 116);
|
||||
HIDWORD(v22) = v78 & ~(__ROL4__(v18, 1) - 1);
|
||||
__twllei(v78, 0);
|
||||
__twlgei(HIDWORD(v22), 0xFFFFFFFF);
|
||||
v23 = (int)v18 / v78;
|
||||
if ( (int)v18 / v78 >= v21 - 1 )
|
||||
v23 = v21 - 1;
|
||||
__twllei(v78, 0);
|
||||
HIDWORD(v24) = v78 & ~(__ROL4__(HIDWORD(v17), 1) - 1);
|
||||
__twlgei(HIDWORD(v24), 0xFFFFFFFF);
|
||||
v25 = SHIDWORD(v17) / v78;
|
||||
if ( SHIDWORD(v17) / v78 >= v19 )
|
||||
v25 = *(_DWORD *)(v5 + 112) - 1;
|
||||
__twllei(v78, 0);
|
||||
__twlgei(v78 & ~(__ROL4__(v17, 1) - 1), 0xFFFFFFFF);
|
||||
v26 = (int)v17 / v78;
|
||||
if ( (int)v17 / v78 >= v21 - 1 )
|
||||
v26 = v21 - 1;
|
||||
if ( v23 == v26 )
|
||||
{
|
||||
v27 = v20;
|
||||
if ( v20 >= v25 )
|
||||
{
|
||||
v27 = v25;
|
||||
if ( v20 > v25 )
|
||||
v25 = v20;
|
||||
}
|
||||
for ( ; v27 <= v25; ++v27 )
|
||||
idCollisionGridState::Inactivate(this: v81, id: v27 + v23 * v77);
|
||||
}
|
||||
else
|
||||
{
|
||||
v28 = HIDWORD(v17) - HIDWORD(v18);
|
||||
v29 = v17 - v18;
|
||||
if ( HIDWORD(v17) == HIDWORD(v18) )
|
||||
{
|
||||
v30 = 1.0e30;
|
||||
}
|
||||
else
|
||||
{
|
||||
LODWORD(v24) = abs32(v28);
|
||||
v30 = (float)((float)1.0 / (float)v24);
|
||||
}
|
||||
LODWORD(v31) = HIDWORD(v18);
|
||||
HIDWORD(v31) = v29 ^ (v29 >> 31);
|
||||
LODWORD(v22) = abs32(v29);
|
||||
v32 = (float)v31;
|
||||
*(double *)&a4 = (float)((float)v31 * (float)v10);
|
||||
v33 = (float)((float)1.0 / (float)v22);
|
||||
v34 = floor(x: a4);
|
||||
LODWORD(v35) = v18;
|
||||
v36 = (float)v35;
|
||||
v37 = (float)((float)*(double *)&v34 * (float)v8);
|
||||
v38 = (float)((float)((float)*(double *)&v34 * (float)v8) + (float)v8);
|
||||
*(double *)&v34 = (float)((float)v35 * (float)v10);
|
||||
v39 = floor(x: v34);
|
||||
v40 = (float)((float)*(double *)&v39 * (float)v8);
|
||||
v41 = idList<gridRasterizeEdge_t,5>::Alloc(this: &v79);
|
||||
v41->x = v20;
|
||||
v41->xEnd = v25;
|
||||
v41->y = v23;
|
||||
v41->yEnd = v26;
|
||||
if ( v28 != 0 )
|
||||
{
|
||||
v44 = 1;
|
||||
if ( SHIDWORD(v18) >= SHIDWORD(v17) )
|
||||
v44 = -1;
|
||||
v41->delta.x = (float)v30 * (float)v8;
|
||||
v41->xDir = v44;
|
||||
if ( SHIDWORD(v18) <= SHIDWORD(v17) )
|
||||
v45 = (float)((float)v38 - (float)v32);
|
||||
else
|
||||
v45 = (float)((float)v32 - (float)v37);
|
||||
v43 = (float)((float)v45 * (float)v30);
|
||||
v42 = nullptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
v42 = nullptr;
|
||||
v41->xDir = 0;
|
||||
v41->delta.x = 1900671690;
|
||||
v43 = 1.0e30;
|
||||
}
|
||||
v41->t.x = v43;
|
||||
v41->delta.y = (float)v33 * (float)v8;
|
||||
if ( (int)v18 <= (int)v17 )
|
||||
v46 = (float)((float)v40 - (float)v36);
|
||||
else
|
||||
v46 = (float)((float)v36 - (float)v40);
|
||||
v41->t.y = (float)v46 * (float)v33;
|
||||
v41->next = nullptr;
|
||||
v41->prev = nullptr;
|
||||
if ( v23 < v9 )
|
||||
v9 = v23;
|
||||
if ( v26 > v75 )
|
||||
v75 = v26;
|
||||
for ( i = v74; i != nullptr; i = i->next )
|
||||
{
|
||||
if ( i->y >= (unsigned int)(unsigned __int16)v23 )
|
||||
break;
|
||||
v42 = i;
|
||||
}
|
||||
v41->next = i;
|
||||
v41->prev = v42;
|
||||
if ( i != nullptr )
|
||||
i->prev = v41;
|
||||
if ( v42 != nullptr )
|
||||
v42->next = v41;
|
||||
else
|
||||
v74 = v41;
|
||||
}
|
||||
v12 = v4++;
|
||||
++v13;
|
||||
}
|
||||
while ( v4 < num );
|
||||
}
|
||||
v48 = v9 * v77;
|
||||
if ( v9 <= v75 )
|
||||
{
|
||||
v49 = nullptr;
|
||||
v50 = v74;
|
||||
do
|
||||
{
|
||||
v51 = v50;
|
||||
if ( v50 != nullptr )
|
||||
{
|
||||
do
|
||||
{
|
||||
if ( v51->y > v9 )
|
||||
break;
|
||||
next = v51->next;
|
||||
if ( v51->next != nullptr )
|
||||
next->prev = v51->prev;
|
||||
prev = v51->prev;
|
||||
if ( prev != nullptr )
|
||||
prev->next = v51->next;
|
||||
else
|
||||
v50 = v51->next;
|
||||
v54 = v49;
|
||||
for ( j = nullptr; v54 != nullptr; v54 = v54->next )
|
||||
{
|
||||
if ( v51->x < (int)v54->x )
|
||||
break;
|
||||
j = v54;
|
||||
}
|
||||
v51->next = v54;
|
||||
v51->prev = j;
|
||||
if ( v54 != nullptr )
|
||||
v54->prev = v51;
|
||||
if ( j != nullptr )
|
||||
j->next = v51;
|
||||
else
|
||||
v49 = v51;
|
||||
v51 = next;
|
||||
}
|
||||
while ( next != nullptr );
|
||||
}
|
||||
for ( k = v49; k != nullptr; k = k->next->next )
|
||||
{
|
||||
if ( k->next == nullptr )
|
||||
break;
|
||||
x = k->next->x;
|
||||
v58 = k->x;
|
||||
if ( v58 >= x )
|
||||
v58 = k->next->x;
|
||||
v59 = v58;
|
||||
if ( k->x > (unsigned int)k->next->x )
|
||||
LOWORD(x) = k->x;
|
||||
v60 = (unsigned __int16)x;
|
||||
if ( v58 <= (int)(unsigned __int16)x )
|
||||
{
|
||||
do
|
||||
{
|
||||
idCollisionGridState::Inactivate(this: v81, id: v59 + v48);
|
||||
++v59;
|
||||
}
|
||||
while ( v59 <= v60 );
|
||||
}
|
||||
}
|
||||
v61 = (float *)v49;
|
||||
if ( v49 != nullptr )
|
||||
{
|
||||
do
|
||||
{
|
||||
v62 = *(float **)v61;
|
||||
v63 = 0;
|
||||
v64 = v48;
|
||||
while ( 1 )
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
idCollisionGridState::Inactivate(this: v81, id: *((unsigned __int16 *)v61 + 12) + v64);
|
||||
if ( v61[4] >= (double)v61[5] )
|
||||
break;
|
||||
v65 = *((unsigned __int16 *)v61 + 12);
|
||||
if ( v65 == *((unsigned __int16 *)v61 + 14) )
|
||||
{
|
||||
if ( *(_DWORD *)v61 != 0 )
|
||||
*(float *)(*(_DWORD *)v61 + 4) = v61[1];
|
||||
v68 = *((_DWORD **)v61 + 1);
|
||||
if ( v68 != nullptr )
|
||||
{
|
||||
*v68 = *(_DWORD *)v61;
|
||||
goto LABEL_91;
|
||||
}
|
||||
goto LABEL_90;
|
||||
}
|
||||
v66 = *((_BYTE *)v61 + 32);
|
||||
v61[4] = v61[2] + v61[4];
|
||||
v63 = 1;
|
||||
*((_WORD *)v61 + 12) = v66 + (_WORD)v65;
|
||||
}
|
||||
v67 = *((unsigned __int16 *)v61 + 13);
|
||||
if ( v67 != v9 )
|
||||
break;
|
||||
v61[5] = v61[3] + v61[5];
|
||||
v64 += v77;
|
||||
*((_WORD *)v61 + 13) = v67 + 1;
|
||||
}
|
||||
if ( v67 == *((unsigned __int16 *)v61 + 15) )
|
||||
{
|
||||
if ( *(_DWORD *)v61 != 0 )
|
||||
*(float *)(*(_DWORD *)v61 + 4) = v61[1];
|
||||
v69 = *((_DWORD **)v61 + 1);
|
||||
if ( v69 != nullptr )
|
||||
{
|
||||
*v69 = *(_DWORD *)v61;
|
||||
goto LABEL_91;
|
||||
}
|
||||
LABEL_90:
|
||||
v49 = *(gridRasterizeEdge_t **)v61;
|
||||
LABEL_91:
|
||||
v63 = 0;
|
||||
}
|
||||
if ( v63 != 0 )
|
||||
{
|
||||
v70 = *((unsigned __int16 *)v61 + 12) * v78;
|
||||
while ( *((_DWORD *)v61 + 1) != 0 )
|
||||
{
|
||||
v71 = *((_DWORD *)v61 + 1);
|
||||
if ( *(unsigned __int16 *)(v71 + 24) * v78 < v70 )
|
||||
break;
|
||||
if ( *(_DWORD *)v61 != 0 )
|
||||
*(_DWORD *)(*(_DWORD *)v61 + 4) = v71;
|
||||
**((float **)v61 + 1) = *v61;
|
||||
v72 = *((_DWORD *)v61 + 1);
|
||||
*(_DWORD *)v61 = v72;
|
||||
v61[1] = *(float *)(v72 + 4);
|
||||
*(_DWORD *)(v72 + 4) = v61;
|
||||
v73 = *((float ***)v61 + 1);
|
||||
if ( v73 != nullptr )
|
||||
*v73 = v61;
|
||||
else
|
||||
v49 = (gridRasterizeEdge_t *)v61;
|
||||
}
|
||||
}
|
||||
v61 = v62;
|
||||
}
|
||||
while ( v62 != nullptr );
|
||||
}
|
||||
++v9;
|
||||
v48 += v77;
|
||||
}
|
||||
while ( v9 <= v75 );
|
||||
}
|
||||
if ( (v79.listStatic == 0 || v79.listStatic == 2) && v79.list != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v79.list, align: ALIGN_16);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$229331
|
||||
// EA : 0x825BFA54
|
||||
// RVA : 0x005BFA54
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_229331()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(v0 - 9632 + 160));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?InactivateFill@idCollisionGridLocal@@UBAXPBVidVec2i@@HAAVidCollisionGridState@@@Z
|
||||
// EA : 0x825BFA80
|
||||
// RVA : 0x005BFA80
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionGridLocal::InactivateFill(
|
||||
idCollisionGridLocal *this,
|
||||
const idVec2i *pos,
|
||||
int num,
|
||||
idCollisionGridState *state,
|
||||
long double a5)
|
||||
{
|
||||
__int64 v8; // r4
|
||||
|
||||
LODWORD(v8) = state;
|
||||
HIDWORD(v8) = &this->grid;
|
||||
idGridRasterize::RasterizePolygon(state: v8, pos, num, a4: a5);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?LoadBinary@idGenGridModel@@QAA_NPAVidFile@@@Z
|
||||
// EA : 0x825BFA98
|
||||
// RVA : 0x005BFA98
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idGenGridModel::LoadBinary(idGenGridModel *this, idFile *file)
|
||||
{
|
||||
idFile_vtbl *v5; // r11
|
||||
idList<cm_gridPart_t,5> *p_parts; // r25
|
||||
idList<cm_gridNodeBSP_t,5> *p_nodes; // r24
|
||||
int i; // r31
|
||||
idVec3 *v9; // r3
|
||||
int j; // r28
|
||||
int num; // r11
|
||||
int size; // r10
|
||||
cm_edge_t *list; // r9
|
||||
int v14; // r31
|
||||
int k; // r31
|
||||
int v16; // r11
|
||||
int v17; // r10
|
||||
unsigned __int16 *v18; // r9
|
||||
unsigned __int16 *v19; // r4
|
||||
int m; // r29
|
||||
int v21; // r11
|
||||
int v22; // r10
|
||||
cm_polygon_t *v23; // r9
|
||||
int v24; // r31
|
||||
int n; // r29
|
||||
int v26; // r11
|
||||
int v27; // r10
|
||||
cm_gridPart_t *v28; // r10
|
||||
int v29; // r31
|
||||
int ii; // r31
|
||||
int v31; // r11
|
||||
int v32; // r10
|
||||
unsigned __int16 *v33; // r9
|
||||
unsigned __int16 *v34; // r4
|
||||
int jj; // r29
|
||||
int v36; // r11
|
||||
int v37; // r10
|
||||
cm_gridNodeBSP_t *v38; // r10
|
||||
int v39; // r31
|
||||
int v40; // [sp+50h] [-80h] BYREF
|
||||
int v41; // [sp+54h] [-7Ch] BYREF
|
||||
int v42; // [sp+58h] [-78h] BYREF
|
||||
int v43; // [sp+5Ch] [-74h] BYREF
|
||||
int v44; // [sp+60h] [-70h] BYREF
|
||||
int v45; // [sp+64h] [-6Ch] BYREF
|
||||
int v46; // [sp+68h] [-68h] BYREF
|
||||
|
||||
if ( file == nullptr )
|
||||
return 0;
|
||||
v5 = file->__vftable;
|
||||
v40 = 0;
|
||||
v41 = 0;
|
||||
v42 = 0;
|
||||
v43 = 0;
|
||||
v44 = 0;
|
||||
v45 = 0;
|
||||
v46 = 0;
|
||||
v5->Read(this: file, a2: &v40, a3: 4u);
|
||||
file->Read(this: file, a2: &v41, a3: 4u);
|
||||
file->Read(this: file, a2: &v42, a3: 4u);
|
||||
file->Read(this: file, a2: &v43, a3: 4u);
|
||||
file->Read(this: file, a2: &v44, a3: 4u);
|
||||
file->Read(this: file, a2: &v45, a3: 4u);
|
||||
file->Read(this: file, a2: &v46, a3: 4u);
|
||||
if ( v40 > this->vertices.size )
|
||||
idList<idVec3,59>::Resize(this: &this->vertices, newsize: v40);
|
||||
if ( v41 > this->edges.size )
|
||||
idList<idEffectPhysicsBroadPhase::idSPMarker,59>::Resize(this: &this->edges, newsize: v41);
|
||||
if ( v42 > this->polygonEdges.size )
|
||||
idList<unsigned short,30>::Resize(this: &this->polygonEdges, newsize: v42);
|
||||
if ( v43 > this->polygons.size )
|
||||
idList<animMapOffsets_t,5>::Resize(this: &this->polygons, newsize: v43);
|
||||
p_parts = &this->parts;
|
||||
if ( v44 > this->parts.size )
|
||||
idList<cm_gridPart_t,5>::Resize(this: &this->parts, newsize: v44);
|
||||
if ( v45 > this->indices.size )
|
||||
idList<unsigned short,30>::Resize(this: &this->indices, newsize: v45);
|
||||
p_nodes = &this->nodes;
|
||||
if ( v46 > this->nodes.size )
|
||||
idList<cm_gridNodeBSP_t,5>::Resize(this: &this->nodes, newsize: v46);
|
||||
for ( i = 0; i < v40; ++i )
|
||||
{
|
||||
v9 = idList<idVec3,5>::Alloc(this: &this->vertices);
|
||||
file->Read(this: file, a2: v9, a3: 12u);
|
||||
}
|
||||
for ( j = 0; j < v41; ++j )
|
||||
{
|
||||
idList<idEffectPhysicsBroadPhase::idSPMarker,59>::PreAllocateWithGranularity(
|
||||
this: &this->edges,
|
||||
newSize: this->edges.num + 1);
|
||||
num = this->edges.num;
|
||||
size = this->edges.size;
|
||||
list = this->edges.list;
|
||||
if ( num >= size )
|
||||
{
|
||||
v14 = (int)&list[size - 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v14 = (int)&list[num];
|
||||
this->edges.num = num + 1;
|
||||
}
|
||||
file->Read(this: file, a2: (void *)v14, a3: 2u);
|
||||
file->Read(this: file, a2: (void *)(v14 + 2), a3: 2u);
|
||||
}
|
||||
for ( k = 0; k < v42; ++k )
|
||||
{
|
||||
idList<unsigned short,5>::PreAllocateWithGranularity(this: &this->polygonEdges, newSize: this->polygonEdges.num + 1);
|
||||
v16 = this->polygonEdges.num;
|
||||
v17 = this->polygonEdges.size;
|
||||
v18 = this->polygonEdges.list;
|
||||
if ( v16 >= v17 )
|
||||
{
|
||||
v19 = &v18[v17 - 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v19 = &v18[v16];
|
||||
this->polygonEdges.num = v16 + 1;
|
||||
}
|
||||
file->Read(this: file, a2: v19, a3: 2u);
|
||||
}
|
||||
for ( m = 0; m < v43; ++m )
|
||||
{
|
||||
idList<cm_polygon_t,5>::PreAllocateWithGranularity(this: &this->polygons, newSize: this->polygons.num + 1);
|
||||
v21 = this->polygons.num;
|
||||
v22 = this->polygons.size;
|
||||
v23 = this->polygons.list;
|
||||
if ( v21 >= v22 )
|
||||
{
|
||||
v24 = (int)&v23[v22 - 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v24 = (int)&v23[v21];
|
||||
this->polygons.num = v21 + 1;
|
||||
}
|
||||
file->Read(this: file, a2: (void *)(v24 + 12), a3: 1u);
|
||||
file->Read(this: file, a2: (void *)(v24 + 14), a3: 2u);
|
||||
file->Read(this: file, a2: (void *)(v24 + 13), a3: 1u);
|
||||
file->Read(this: file, a2: (void *)v24, a3: 12u);
|
||||
}
|
||||
for ( n = 0; n < v44; ++n )
|
||||
{
|
||||
idList<cm_gridPart_t,5>::PreAllocateWithGranularity(this: &this->parts, newSize: this->parts.num + 1);
|
||||
v26 = this->parts.num;
|
||||
v27 = this->parts.size;
|
||||
if ( v26 >= v27 )
|
||||
{
|
||||
v29 = (int)&p_parts->list[v27 - 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v28 = p_parts->list;
|
||||
this->parts.num = v26 + 1;
|
||||
v29 = (int)&v28[v26];
|
||||
}
|
||||
file->Read(this: file, a2: (void *)v29, a3: 12u);
|
||||
file->Read(this: file, a2: (void *)(v29 + 12), a3: 2u);
|
||||
file->Read(this: file, a2: (void *)(v29 + 14), a3: 2u);
|
||||
file->Read(this: file, a2: (void *)(v29 + 16), a3: 2u);
|
||||
}
|
||||
for ( ii = 0; ii < v45; ++ii )
|
||||
{
|
||||
idList<unsigned short,5>::PreAllocateWithGranularity(this: &this->indices, newSize: this->indices.num + 1);
|
||||
v31 = this->indices.num;
|
||||
v32 = this->indices.size;
|
||||
v33 = this->indices.list;
|
||||
if ( v31 >= v32 )
|
||||
{
|
||||
v34 = &v33[v32 - 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v34 = &v33[v31];
|
||||
this->indices.num = v31 + 1;
|
||||
}
|
||||
file->Read(this: file, a2: v34, a3: 2u);
|
||||
}
|
||||
for ( jj = 0; jj < v46; ++jj )
|
||||
{
|
||||
idList<cm_gridNodeBSP_t,5>::PreAllocateWithGranularity(this: &this->nodes, newSize: this->nodes.num + 1);
|
||||
v36 = this->nodes.num;
|
||||
v37 = this->nodes.size;
|
||||
if ( v36 >= v37 )
|
||||
{
|
||||
v39 = (int)&p_nodes->list[v37 - 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
v38 = p_nodes->list;
|
||||
this->nodes.num = v36 + 1;
|
||||
v39 = (int)&v38[v36];
|
||||
}
|
||||
file->Read(this: file, a2: (void *)v39, a3: 24u);
|
||||
file->Read(this: file, a2: (void *)(v39 + 24), a3: 4u);
|
||||
file->Read(this: file, a2: (void *)(v39 + 28), a3: 2u);
|
||||
file->Read(this: file, a2: (void *)(v39 + 30), a3: 2u);
|
||||
file->Read(this: file, a2: (void *)(v39 + 32), a3: 1u);
|
||||
}
|
||||
file->Read(this: file, a2: &this->numX, a3: 4u);
|
||||
file->Read(this: file, a2: &this->numY, a3: 4u);
|
||||
file->Read(this: file, a2: &this->dimension, a3: 4u);
|
||||
file->Read(this: file, a2: &this->offset, a3: 8u);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Load_Binary@idCollisionGridLocal@@QAA_NXZ
|
||||
// EA : 0x825C0180
|
||||
// RVA : 0x005C0180
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idCollisionGridLocal::Load_Binary(idCollisionGridLocal *this)
|
||||
{
|
||||
idFile *v2; // r3
|
||||
idFile *v3; // r30
|
||||
int v5; // [sp+50h] [-50h] BYREF
|
||||
idStr v6[2]; // [sp+60h] [-40h] BYREF
|
||||
|
||||
idCollisionGridLocal::GetBinaryFileName(
|
||||
this: (idCollisionGridLocal *)v6,
|
||||
result: (idStr *)this,
|
||||
modelName: this->name.str);
|
||||
v2 = fileSystem->OpenFileRead(this: fileSystem, a2: v6[0].data, a3: 1, a4: 0);
|
||||
v3 = v2;
|
||||
if ( v2 != nullptr )
|
||||
{
|
||||
this->binaryTimeStamp = v2->Timestamp(this: v2);
|
||||
v3->Read(this: v3, a2: &v5, a3: 4u);
|
||||
if ( v5 == 1111705347 )
|
||||
{
|
||||
v3->Read(this: v3, a2: &this->sourceTimeStamp, a3: 4u);
|
||||
if ( (unsigned __int8)idGenGridModel::LoadBinary(this: &this->grid, file: v3) != 0 )
|
||||
{
|
||||
((void (__fastcall *)(idFile *, int))v3->dtr_idFile)(a1: v3, a2: 1);
|
||||
idStr::FreeData(this: v6);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
((void (__fastcall *)(idFile *, int))v3->dtr_idFile)(a1: v3, a2: 1);
|
||||
idStr::FreeData(this: v6);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idLib::Warning(fmt: "%s is not a binary collision grid file", v6[0].data);
|
||||
((void (__fastcall *)(idFile *, int))v3->dtr_idFile)(a1: v3, a2: 1);
|
||||
idCollisionGridLocal::FreeData(this);
|
||||
idStr::FreeData(this: v6);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idStr::FreeData(this: v6);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$230739
|
||||
// EA : 0x825C02F4
|
||||
// RVA : 0x005C02F4
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_230739()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 160 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?LoadResource@idCollisionGridLocal@@UAAXXZ
|
||||
// EA : 0x825C0320
|
||||
// RVA : 0x005C0320
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionGridLocal::LoadResource(idCollisionGridLocal *this)
|
||||
{
|
||||
idCollisionGridLocal::FreeData(this);
|
||||
idCollisionGridLocal::Load_Binary(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idCollisionGridLocal::resourceList''
|
||||
// EA : 0x83335138
|
||||
// RVA : 0x01335138
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idCollisionGridLocal::resourceList__()
|
||||
{
|
||||
idResourceList::idResourceList(this: &idCollisionGridLocal::resourceList, typeName: "cg");
|
||||
idCollisionGridLocal::resourceList.__vftable = (idTypedResourceList<idCollisionGridLocal>_vtbl *)&idTypedResourceList<idCollisionGridLocal>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idCollisionGridLocal::resourceList__);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetResourceList@idCollisionGridLocal@@UBAPAVidResourceList@@XZ
|
||||
// EA : 0x825BE550
|
||||
// RVA : 0x005BE550
|
||||
// PDB : w:\tech5\engine\cm\collisiongrid.h
|
||||
// ========================================================================
|
||||
|
||||
idTypedResourceList<idCollisionGridLocal> *__fastcall idCollisionGridLocal::GetResourceList(idCollisionGridLocal *this)
|
||||
{
|
||||
return &idCollisionGridLocal::resourceList;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,14 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetResourceList@idCollisionModelLocal@@UBAPAVidResourceList@@XZ
|
||||
// EA : 0x825C0960
|
||||
// RVA : 0x005C0960
|
||||
// PDB : w:\tech5\engine\cm\collisionmodel.h
|
||||
// ========================================================================
|
||||
|
||||
idTypedResourceList<idCollisionModelLocal> *__fastcall idCollisionModelLocal::GetResourceList(
|
||||
idCollisionModelLocal *this)
|
||||
{
|
||||
return &idCollisionModelLocal::resourceList;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,476 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?IsAnimatedRenderModel@idCollisionModelBuilder@@SA_NPBD@Z
|
||||
// EA : 0x825D2C78
|
||||
// RVA : 0x005D2C78
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
BOOL __fastcall idCollisionModelBuilder::IsAnimatedRenderModel(const char *fileName)
|
||||
{
|
||||
idStr *v1; // r3
|
||||
BOOL v2; // r30
|
||||
idStr v4; // [sp+50h] [-60h] BYREF
|
||||
idStr v5; // [sp+70h] [-40h] BYREF
|
||||
|
||||
v4.len = 0;
|
||||
v4.allocedAndFlag = 20;
|
||||
v4.data = v4.baseBuffer;
|
||||
v4.baseBuffer[0] = 0;
|
||||
v1 = idStr::idStr(this: &v5, text: fileName);
|
||||
idStr::ExtractFileExtension(this: v1, dest: &v4);
|
||||
idStr::FreeData(this: &v5);
|
||||
v2 = (_cntlzw(idStr::Icmp(s1: v4.data, s2: "md6")) & 0x20) != 0;
|
||||
idStr::FreeData(this: &v4);
|
||||
return v2;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223482
|
||||
// EA : 0x825D2D04
|
||||
// RVA : 0x005D2D04
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223482()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 176 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223483
|
||||
// EA : 0x825D2D2C
|
||||
// RVA : 0x005D2D2C
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223483()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 176 + 112));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?BuildForDeclMD6@idCollisionModelBuilder@@SA_NPAVidCollisionModelLocal@@PBVidDeclMD6@@@Z
|
||||
// EA : 0x825D2F20
|
||||
// RVA : 0x005D2F20
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idCollisionModelBuilder::BuildForDeclMD6(idCollisionModelLocal *model, const idDeclMD6 *md6Decl)
|
||||
{
|
||||
const idMD6Model *v5; // r11
|
||||
const idMD6Skel *skeleton; // r30
|
||||
idMD6SkelData *data; // r6
|
||||
unsigned __int16 numJoints; // r11
|
||||
int v9; // r12
|
||||
float *v10; // r26
|
||||
int v11; // r18
|
||||
int i; // r19
|
||||
const idJointGroup *JointGroupForIndex; // r3
|
||||
const idJointGroup *v14; // r27
|
||||
int v15; // r30
|
||||
int v16; // r22
|
||||
int v17; // r24
|
||||
int v18; // r25
|
||||
__int16 value; // r8
|
||||
idVec3 *v20; // r11
|
||||
float x; // r7
|
||||
float y; // r6
|
||||
float *v23; // r11
|
||||
double v24; // fp0
|
||||
double v25; // fp13
|
||||
double v26; // fp12
|
||||
float *v27; // r11
|
||||
double v28; // fp0
|
||||
double v29; // fp10
|
||||
double v30; // fp9
|
||||
double v31; // fp8
|
||||
size_t num; // r27
|
||||
unsigned __int8 *list; // r22
|
||||
float *v34; // r20
|
||||
float *v35; // r19
|
||||
__int16 v36; // r16
|
||||
float *v37; // r18
|
||||
float *v38; // r21
|
||||
unsigned __int8 *v39; // r17
|
||||
int v40; // r30
|
||||
double v41; // fp0
|
||||
double v42; // fp12
|
||||
double v43; // fp11
|
||||
unsigned __int8 v44; // r11
|
||||
unsigned int v45; // r3
|
||||
size_t v46; // r26
|
||||
size_t v47; // r25
|
||||
size_t v48; // r24
|
||||
size_t v49; // r16
|
||||
size_t v50; // r23
|
||||
double v51; // fp0
|
||||
double v52; // fp13
|
||||
double v53; // fp12
|
||||
double v54; // fp11
|
||||
double v55; // fp10
|
||||
double v56; // fp9
|
||||
void *v57; // r30
|
||||
unsigned int v58; // r3
|
||||
idMem *v59; // r30
|
||||
_DWORD back_chain[20]; // [sp+0h] [-1E0h]
|
||||
unsigned __int8 surfType; // [sp+50h] [-190h] BYREF
|
||||
unsigned __int8 v62; // [sp+51h] [-18Fh] BYREF
|
||||
unsigned __int16 v63; // [sp+52h] [-18Eh]
|
||||
float v64; // [sp+54h] [-18Ch] BYREF
|
||||
float v65; // [sp+58h] [-188h] BYREF
|
||||
float v66; // [sp+5Ch] [-184h] BYREF
|
||||
float v67; // [sp+60h] [-180h] BYREF
|
||||
idMem *v68; // [sp+64h] [-17Ch]
|
||||
idVec3 *v69; // [sp+68h] [-178h]
|
||||
idList<float,13> v70; // [sp+70h] [-170h] BYREF
|
||||
idList<float,13> v71; // [sp+80h] [-160h] BYREF
|
||||
idList<float,13> v72; // [sp+90h] [-150h] BYREF
|
||||
idList<float,13> v73; // [sp+A0h] [-140h] BYREF
|
||||
idList<unsigned char,37> v74; // [sp+B0h] [-130h] BYREF
|
||||
idList<unsigned char,37> v75; // [sp+C0h] [-120h] BYREF
|
||||
float v76; // [sp+D0h] [-110h]
|
||||
float v77; // [sp+D4h] [-10Ch]
|
||||
float z; // [sp+D8h] [-108h]
|
||||
unsigned int v79[13]; // [sp+E0h] [-100h] BYREF
|
||||
cm_sphereModelPtrs_t v80; // [sp+120h] [-C0h] BYREF
|
||||
|
||||
if ( md6Decl == nullptr )
|
||||
return 0;
|
||||
v5 = md6Decl->model;
|
||||
if ( v5 == nullptr )
|
||||
return 0;
|
||||
skeleton = v5->skeleton;
|
||||
if ( ((skeleton->data->numJoints + 7) & 0xFFF8) == 0 )
|
||||
return 0;
|
||||
*((_BYTE *)&model->idResource + 32) &= ~0x80u;
|
||||
idResource::SetName(this: model, _name: md6Decl->name.str);
|
||||
model->modelType = CM_SPHEREMODEL;
|
||||
model->bounds.b[0].z = 1.0e30;
|
||||
model->bounds.b[0].y = 1.0e30;
|
||||
model->bounds.b[0].x = 1.0e30;
|
||||
model->bounds.b[1].z = -1.0e30;
|
||||
model->bounds.b[1].y = -1.0e30;
|
||||
model->bounds.b[1].x = -1.0e30;
|
||||
model->contents = 0;
|
||||
model->sourceFileTime = -1;
|
||||
model->isWorldModel = false;
|
||||
model->isTraceModel = false;
|
||||
model->isConvex = false;
|
||||
model->isStreamed = false;
|
||||
model->sphereModel = nullptr;
|
||||
((void (*)(void))RtlCheckStack12)();
|
||||
data = skeleton->data;
|
||||
v68 = &mem;
|
||||
numJoints = data->numJoints;
|
||||
*(_DWORD *)((char *)back_chain + v9) = back_chain[0];
|
||||
v10 = (float *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\engine\\cm\\CollisionModelBuilder_sphere.cpp(89) : TAG_MD6_COLLISION",
|
||||
size: 48 * ((numJoints + 7) & 0xFFF8),
|
||||
tag: TAG_MD6_COLLISION,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
idMD6Blend::DecodeBasePose(
|
||||
skeleton: skeleton->data,
|
||||
temp: &surfType,
|
||||
tempSize: 0x4000u,
|
||||
originOffset: md6Decl->config->visualOffset,
|
||||
offsetAdd: true,
|
||||
outPose: v10);
|
||||
idList<idRecycledTraceModel *,13>::idList<idRecycledTraceModel *,13>(this: (idList<float,13> *)&v74);
|
||||
idList<idRecycledTraceModel *,13>::idList<idRecycledTraceModel *,13>(this: &v72);
|
||||
idList<idRecycledTraceModel *,13>::idList<idRecycledTraceModel *,13>(this: &v71);
|
||||
idList<idRecycledTraceModel *,13>::idList<idRecycledTraceModel *,13>(this: &v70);
|
||||
idList<idRecycledTraceModel *,13>::idList<idRecycledTraceModel *,13>(this: &v73);
|
||||
idList<idRecycledTraceModel *,13>::idList<idRecycledTraceModel *,13>(this: (idList<float,13> *)&v75);
|
||||
v63 = 0;
|
||||
v11 = idJointGroupCollection::NumJointGroupsForType(this: &md6Decl->jointGroupCollection, type: JOINTGROUP_HITTEST);
|
||||
for ( i = 0; i < v11; ++i )
|
||||
{
|
||||
JointGroupForIndex = idJointGroupCollection::GetJointGroupForIndex(
|
||||
this: &md6Decl->jointGroupCollection,
|
||||
type: JOINTGROUP_HITTEST,
|
||||
index: i);
|
||||
v14 = JointGroupForIndex;
|
||||
if ( JointGroupForIndex != nullptr )
|
||||
{
|
||||
v15 = 0;
|
||||
if ( JointGroupForIndex->joints.num > 0 )
|
||||
{
|
||||
v16 = 0;
|
||||
v17 = 0;
|
||||
v18 = 0;
|
||||
do
|
||||
{
|
||||
value = v14->joints.list[v18].value;
|
||||
if ( v15 < 0 || v15 >= v14->jointOffsets.num )
|
||||
v20 = &vec3_origin;
|
||||
else
|
||||
v20 = &v14->jointOffsets.list[v17];
|
||||
x = v20->x;
|
||||
y = v20->y;
|
||||
z = v20->z;
|
||||
LODWORD(v64) = value;
|
||||
v76 = x;
|
||||
v77 = y;
|
||||
v23 = &v10[12 * value];
|
||||
v24 = (float)((float)(z * v23[2]) + (float)((float)(x * *v23) + (float)(y * v23[1])));
|
||||
v25 = (float)((float)(z * v23[6]) + (float)((float)(x * v23[4]) + (float)(y * v23[5])));
|
||||
v26 = (float)((float)(x * v23[8]) + (float)((float)(y * v23[9]) + (float)(z * v23[10])));
|
||||
if ( v15 < 0 || v15 >= v14->jointScalars.num )
|
||||
v64 = 1.0;
|
||||
else
|
||||
v64 = v14->jointScalars.list[v16];
|
||||
v69 = (idVec3 *)value;
|
||||
v27 = &v10[12 * value];
|
||||
v29 = (float)((float)(v27[5] * (float)v25) + (float)(v27[1] * (float)v24));
|
||||
v30 = (float)((float)(v27[4] * (float)v25) + (float)(*v27 * (float)v24));
|
||||
v31 = (float)((float)((float)v26 * v27[10])
|
||||
+ (float)((float)(v27[6] * (float)v25) + (float)(v27[2] * (float)v24)));
|
||||
v28 = v27[8];
|
||||
v66 = (float)((float)v26 * v27[9]) + (float)v29;
|
||||
v67 = v31;
|
||||
v65 = (float)((float)v26 * (float)v28) + (float)v30;
|
||||
if ( (unsigned __int16)(value + 1) > (unsigned int)v63 )
|
||||
v63 = value + 1;
|
||||
surfType = value;
|
||||
idList<unsigned char,25>::Append(this: &v74, obj: &surfType);
|
||||
idList<float,13>::Append(this: &v72, obj: &v65);
|
||||
idList<float,13>::Append(this: &v71, obj: &v66);
|
||||
idList<float,13>::Append(this: &v70, obj: &v67);
|
||||
idList<float,13>::Append(this: &v73, obj: &v64);
|
||||
surfType = v14->args.surfType;
|
||||
idList<unsigned char,25>::Append(this: &v75, obj: &surfType);
|
||||
++v15;
|
||||
++v18;
|
||||
++v17;
|
||||
++v16;
|
||||
}
|
||||
while ( v15 < v14->joints.num );
|
||||
}
|
||||
}
|
||||
}
|
||||
num = v74.num;
|
||||
list = v75.list;
|
||||
v34 = v70.list;
|
||||
v35 = v71.list;
|
||||
v36 = v74.num;
|
||||
v37 = v72.list;
|
||||
v38 = v73.list;
|
||||
v39 = v74.list;
|
||||
if ( (v74.num & 3) != 0 )
|
||||
{
|
||||
v40 = v74.num;
|
||||
v62 = v75.list[v75.num - 1];
|
||||
v41 = v70.list[v70.num - 1];
|
||||
v42 = v72.list[v72.num - 1];
|
||||
v43 = v73.list[v73.num - 1];
|
||||
v44 = v74.list[v74.num - 1];
|
||||
v66 = v71.list[v71.num - 1];
|
||||
v65 = v42;
|
||||
v64 = v43;
|
||||
v67 = v41;
|
||||
if ( v74.num < (int)((v74.num + 3) & 0xFFFFFFFC) )
|
||||
{
|
||||
surfType = v44;
|
||||
do
|
||||
{
|
||||
idList<unsigned char,25>::Append(this: &v74, obj: &surfType);
|
||||
idList<float,13>::Append(this: &v72, obj: &v65);
|
||||
idList<float,13>::Append(this: &v71, obj: &v66);
|
||||
idList<float,13>::Append(this: &v70, obj: &v67);
|
||||
idList<float,13>::Append(this: &v73, obj: &v64);
|
||||
idList<unsigned char,25>::Append(this: &v75, obj: &v62);
|
||||
++v40;
|
||||
}
|
||||
while ( v40 < (int)((v40 + 3) & 0xFFFFFFFC) );
|
||||
num = v74.num;
|
||||
v39 = v74.list;
|
||||
v37 = v72.list;
|
||||
v35 = v71.list;
|
||||
v34 = v70.list;
|
||||
v38 = v73.list;
|
||||
list = v75.list;
|
||||
}
|
||||
}
|
||||
idMem::Free(this: &mem, ptr: v10, align: ALIGN_16);
|
||||
v45 = md6Decl->GetDeclTimestamp(this: md6Decl);
|
||||
v46 = 4 * v72.num;
|
||||
LOWORD(v79[10]) = (num + 79) & 0xFFF0;
|
||||
v47 = 4 * v71.num;
|
||||
v48 = 4 * v70.num;
|
||||
LOWORD(v79[9]) = v36;
|
||||
v49 = v75.num;
|
||||
v50 = 4 * v73.num;
|
||||
v51 = md6Decl->referenceBounds.b[0].x;
|
||||
v52 = md6Decl->referenceBounds.b[0].y;
|
||||
HIWORD(v79[9]) = v63;
|
||||
HIWORD(v79[11]) = (LOWORD(v79[10]) + 4 * LOWORD(v72.num) + 15) & 0xFFF0;
|
||||
LODWORD(v64) = &md6Decl->referenceBounds;
|
||||
v53 = md6Decl->referenceBounds.b[0].z;
|
||||
HIWORD(v79[10]) = 64;
|
||||
v54 = md6Decl->referenceBounds.b[1].x;
|
||||
LODWORD(v64) = &md6Decl->referenceBounds.b[1];
|
||||
LOWORD(v79[11]) = (HIWORD(v79[11]) + 4 * LOWORD(v71.num) + 15) & 0xFFF0;
|
||||
v55 = md6Decl->referenceBounds.b[1].y;
|
||||
v56 = md6Decl->referenceBounds.b[1].z;
|
||||
v79[1] = v45;
|
||||
*(float *)&v79[2] = v51;
|
||||
HIWORD(v79[12]) = (LOWORD(v79[11]) + 4 * LOWORD(v70.num) + 15) & 0xFFF0;
|
||||
*(float *)&v79[3] = v52;
|
||||
*(float *)&v79[4] = v53;
|
||||
*(float *)&v79[5] = v54;
|
||||
*(float *)&v79[6] = v55;
|
||||
*(float *)&v79[7] = v56;
|
||||
v79[8] = 128;
|
||||
LOWORD(v79[12]) = (HIWORD(v79[12]) + 4 * LOWORD(v73.num) + 15) & 0xFFF0;
|
||||
v79[0] = LOWORD(v79[12]) + v75.num;
|
||||
v57 = idMem::AllocWithLocation(
|
||||
this: v68,
|
||||
location: "w:\\tech5\\engine\\cm\\CollisionModelBuilder_sphere.cpp(169) : TAG_ANIMATION",
|
||||
size: v79[0],
|
||||
tag: TAG_ANIMATION,
|
||||
zeroBuffer: true,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
memcpy(Dst: v57, Src: v79, Size: 0x34u);
|
||||
idSphereModelCollisionDetection::SetupCollisionSpherePtrs(csData: (const cm_sphereModel_t *)v57, csPtrs: &v80);
|
||||
memcpy(Dst: v80.joint, Src: v39, Size: num);
|
||||
memcpy(Dst: v80.offsetX, Src: v37, Size: v46);
|
||||
memcpy(Dst: v80.offsetY, Src: v35, Size: v47);
|
||||
memcpy(Dst: v80.offsetZ, Src: v34, Size: v48);
|
||||
memcpy(Dst: v80.radius, Src: v38, Size: v50);
|
||||
memcpy(Dst: v80.surfType, Src: list, Size: v49);
|
||||
idResource::SetName(this: model, _name: md6Decl->name.str);
|
||||
v58 = md6Decl->GetDeclTimestamp(this: md6Decl);
|
||||
model->sphereModel = (cm_sphereModel_t *)v57;
|
||||
model->sourceFileTime = v58;
|
||||
model->bounds.b[0].x = *((float *)v57 + 2);
|
||||
model->bounds.b[0].y = *((float *)v57 + 3);
|
||||
v69 = &model->bounds.b[1];
|
||||
model->bounds.b[0].z = *((float *)v57 + 4);
|
||||
model->bounds.b[1].x = *((float *)v57 + 5);
|
||||
model->bounds.b[1].y = *((float *)v57 + 6);
|
||||
model->bounds.b[1].z = *((float *)v57 + 7);
|
||||
model->contents = model->sphereModel->contents;
|
||||
if ( (v75.listStatic == 0 || v75.listStatic == 2) && list != nullptr )
|
||||
{
|
||||
v59 = v68;
|
||||
idMem::Free(this: v68, ptr: list, align: ALIGN_16);
|
||||
}
|
||||
else
|
||||
{
|
||||
v59 = v68;
|
||||
}
|
||||
if ( (v73.listStatic == 0 || v73.listStatic == 2) && v38 != nullptr )
|
||||
idMem::Free(this: v59, ptr: v38, align: ALIGN_16);
|
||||
if ( (v70.listStatic == 0 || v70.listStatic == 2) && v34 != nullptr )
|
||||
idMem::Free(this: v59, ptr: v34, align: ALIGN_16);
|
||||
if ( (v71.listStatic == 0 || v71.listStatic == 2) && v35 != nullptr )
|
||||
idMem::Free(this: v59, ptr: v35, align: ALIGN_16);
|
||||
if ( (v72.listStatic == 0 || v72.listStatic == 2) && v37 != nullptr )
|
||||
idMem::Free(this: v59, ptr: v37, align: ALIGN_16);
|
||||
if ( (v74.listStatic == 0 || v74.listStatic == 2) && v39 != nullptr )
|
||||
idMem::Free(this: v59, ptr: v39, align: ALIGN_16);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223584
|
||||
// EA : 0x825D3744
|
||||
// RVA : 0x005D3744
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223584()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(v0 - 480 + 176));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223585
|
||||
// EA : 0x825D376C
|
||||
// RVA : 0x005D376C
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223585()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(v0 - 480 + 144));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223586
|
||||
// EA : 0x825D3794
|
||||
// RVA : 0x005D3794
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223586()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(v0 - 480 + 128));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223587
|
||||
// EA : 0x825D37BC
|
||||
// RVA : 0x005D37BC
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223587()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(v0 - 480 + 112));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223588
|
||||
// EA : 0x825D37E4
|
||||
// RVA : 0x005D37E4
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223588()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(v0 - 480 + 160));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$223589
|
||||
// EA : 0x825D380C
|
||||
// RVA : 0x005D380C
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelbuilder_sphere.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_223589()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(v0 - 480 + 192));
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??1idCollisionGrid@@UAA@XZ
|
||||
// EA : 0x825BD8D0
|
||||
// RVA : 0x005BD8D0
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelmanager.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionGrid::~idCollisionGrid(idCollisionGrid *this)
|
||||
{
|
||||
this->__vftable = (idCollisionGrid_vtbl *)&idCollisionGrid::`vftable';
|
||||
idResource::~idResource(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idCollisionModel@@UAA@XZ
|
||||
// EA : 0x825C0830
|
||||
// RVA : 0x005C0830
|
||||
// PDB : w:\tech5\engine\cm\collisionmodelmanager.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionModel::~idCollisionModel(idCollisionModel *this)
|
||||
{
|
||||
this->__vftable = (idCollisionModel_vtbl *)&idCollisionModel::`vftable';
|
||||
idResource::~idResource(this);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,941 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?AdvanceSubModelQueryFirstSubmittedIndex@idQueryData@@QAAX_K@Z
|
||||
// EA : 0x825D3838
|
||||
// RVA : 0x005D3838
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
// local variable allocation has failed, the output may be wrong!
|
||||
void __fastcall idQueryData::AdvanceSubModelQueryFirstSubmittedIndex(
|
||||
idQueryData *this,
|
||||
unsigned int a2,
|
||||
unsigned __int64 newIndex)
|
||||
{
|
||||
unsigned __int64 *p_subModelQueryFirstSubmittedIndex; // r26
|
||||
unsigned __int64 subModelQueryFirstSubmittedIndex; // r30 OVERLAPPED
|
||||
subModelQuery_t *v6; // r31
|
||||
|
||||
p_subModelQueryFirstSubmittedIndex = &this->subModelQueryFirstSubmittedIndex;
|
||||
subModelQueryFirstSubmittedIndex = this->subModelQueryFirstSubmittedIndex;
|
||||
if ( (unsigned int)subModelQueryFirstSubmittedIndex < a2 )
|
||||
{
|
||||
do
|
||||
{
|
||||
v6 = &this->subModelQueries[subModelQueryFirstSubmittedIndex & 0xFFF];
|
||||
ReleaseSubModelData(subModel: (const cm_subModelData_t *)v6->subModel, data: v6->subModelData);
|
||||
LODWORD(subModelQueryFirstSubmittedIndex) = subModelQueryFirstSubmittedIndex + 1;
|
||||
v6->subModelData = nullptr;
|
||||
}
|
||||
while ( (unsigned int)subModelQueryFirstSubmittedIndex < HIDWORD(subModelQueryFirstSubmittedIndex) );
|
||||
}
|
||||
*p_subModelQueryFirstSubmittedIndex = *(unsigned __int64 *)((char *)&subModelQueryFirstSubmittedIndex + 4);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?StartFrame@idQueryData@@QAAXXZ
|
||||
// EA : 0x825D38A0
|
||||
// RVA : 0x005D38A0
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
// local variable allocation has failed, the output may be wrong!
|
||||
void __fastcall idQueryData::StartFrame(idQueryData *this)
|
||||
{
|
||||
__int128 v1; // r10 OVERLAPPED
|
||||
int v2; // r6
|
||||
__int128 v3; // r6
|
||||
int v4; // r11
|
||||
|
||||
*(_QWORD *)((char *)&v1 + 4) = this->subModelQueryLastAllocedIndex;
|
||||
*((_QWORD *)&v1 + 1) = this->queryParmsLastAllocedIndex;
|
||||
*(_QWORD *)((char *)&v1 - 4) = this->slideMoveStateLastAllocedIndex;
|
||||
*(_QWORD *)((char *)&v1 + 12) = this->intermediateResultsLastAllocedOffset;
|
||||
*((_QWORD *)&v3 + 1) = *(_QWORD *)((char *)&this->modelQueries[0].type + v2);
|
||||
++DWORD1(v1);
|
||||
*((_BYTE *)&this->modelQueries[0].type + DWORD2(v3)) = 1;
|
||||
this->modelQueryFirstAllocedIndex = *(_QWORD *)&v1;
|
||||
++DWORD2(v1);
|
||||
DWORD2(v3) = v1 + 1;
|
||||
DWORD1(v3) = v4 + 1;
|
||||
this->subModelQueryFirstAllocedIndex = *(_QWORD *)((char *)&v1 + 4);
|
||||
this->queryParmsFirstAllocedIndex = *(_QWORD *)((char *)&v3 + 4);
|
||||
this->slideMoveStateFirstAllocedIndex = *(_QWORD *)(&this - 1);
|
||||
this->intermediateResultsFirstAllocedOffset = *(_QWORD *)((char *)&v1 + 12);
|
||||
this->finalResultsFirstAllocedOffset = v3;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?UpdateQueryDataStats@idQueryData@@QAAHPAUqueryDataStats_t@@AAHHAAU2@@Z
|
||||
// EA : 0x825D4130
|
||||
// RVA : 0x005D4130
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idQueryData::UpdateQueryDataStats(
|
||||
idQueryData *this,
|
||||
queryDataStats_t *stats,
|
||||
int *numStats,
|
||||
int maxStats,
|
||||
queryDataStats_t *totalStats)
|
||||
{
|
||||
int v10; // r10
|
||||
int *p_finalResultSize; // r11
|
||||
int v12; // r27
|
||||
queryDataStats_t *v13; // r29
|
||||
int v14; // r28
|
||||
const char **p_userName; // r30
|
||||
unsigned __int64 i; // r5
|
||||
_DWORD *v17; // r10
|
||||
const char *v18; // r7
|
||||
int v19; // r11
|
||||
queryDataStats_t *v20; // r9
|
||||
int v21; // r9
|
||||
int v22; // r6
|
||||
queryDataStats_t *v23; // r11
|
||||
int numSubModelQueries; // r8
|
||||
int v25; // r7
|
||||
int v26; // r9
|
||||
int finalResultSize; // r9
|
||||
int v28; // r8
|
||||
int v29; // r5
|
||||
int *v30; // r11
|
||||
int v31; // r7
|
||||
int v32; // r8
|
||||
int v33; // r9
|
||||
int v34; // r10
|
||||
int v35; // r8
|
||||
int v36; // r9
|
||||
int v37; // r10
|
||||
int v38; // r8
|
||||
int v39; // r9
|
||||
int v40; // r10
|
||||
int v41; // r8
|
||||
int v42; // r10
|
||||
int v43; // r9
|
||||
int numModelQueries; // r8
|
||||
int v45; // r7
|
||||
int queryDataSize; // r10
|
||||
int v47; // r9
|
||||
int maxCollisionQueries; // r10
|
||||
int maxModelQueries; // r10
|
||||
int maxSubModelQueries; // r10
|
||||
int maxQueryDataSize; // r10
|
||||
int v52; // r11
|
||||
int maxFinalResultSize; // r10
|
||||
_BYTE v55[44]; // [sp+50h] [-90h] BYREF
|
||||
|
||||
totalStats->numCollisionQueries = 0;
|
||||
totalStats->numModelQueries = 0;
|
||||
totalStats->numSubModelQueries = 0;
|
||||
totalStats->queryDataSize = 0;
|
||||
totalStats->finalResultSize = 0;
|
||||
v10 = 0;
|
||||
if ( *numStats > 0 )
|
||||
{
|
||||
p_finalResultSize = &stats[-1].finalResultSize;
|
||||
do
|
||||
{
|
||||
p_finalResultSize[7] = 0;
|
||||
++v10;
|
||||
p_finalResultSize[8] = 0;
|
||||
p_finalResultSize[9] = 0;
|
||||
p_finalResultSize[10] = 0;
|
||||
p_finalResultSize += 11;
|
||||
*p_finalResultSize = 0;
|
||||
}
|
||||
while ( v10 < *numStats );
|
||||
}
|
||||
if ( *numStats > 0 )
|
||||
{
|
||||
v12 = 1;
|
||||
v13 = stats;
|
||||
do
|
||||
{
|
||||
v14 = v12;
|
||||
if ( v12 < *numStats )
|
||||
{
|
||||
p_userName = &v13[1].userName;
|
||||
do
|
||||
{
|
||||
if ( idStr::Cmp(s1: *p_userName, s2: v13->userName) < 0 )
|
||||
{
|
||||
memcpy(Dst: v55, Src: p_userName, Size: sizeof(v55));
|
||||
memcpy(Dst: p_userName, Src: v13, Size: 0x2Cu);
|
||||
memcpy(Dst: v13, Src: v55, Size: sizeof(queryDataStats_t));
|
||||
}
|
||||
++v14;
|
||||
p_userName += 11;
|
||||
}
|
||||
while ( v14 < *numStats );
|
||||
}
|
||||
++v12;
|
||||
++v13;
|
||||
}
|
||||
while ( v12 - 1 < *numStats );
|
||||
}
|
||||
for ( i = this->modelQueryFirstSubmittedIndex;
|
||||
(unsigned int)i <= LODWORD(this->modelQueryLastAllocedIndex);
|
||||
LODWORD(i) = i + 1 )
|
||||
{
|
||||
v17 = (_DWORD *)((char *)this + (((_DWORD)i << 7) & 0x3FF80));
|
||||
v18 = (const char *)v17[7];
|
||||
if ( v18 == nullptr )
|
||||
v18 = "*Unknown*";
|
||||
v19 = 0;
|
||||
if ( *numStats > 0 )
|
||||
{
|
||||
v20 = stats;
|
||||
do
|
||||
{
|
||||
if ( v18 == v20->userName )
|
||||
break;
|
||||
++v19;
|
||||
++v20;
|
||||
}
|
||||
while ( v19 < *numStats );
|
||||
}
|
||||
if ( v19 < maxStats )
|
||||
{
|
||||
v21 = v19 + 1;
|
||||
if ( *numStats > v19 + 1 )
|
||||
v21 = *numStats;
|
||||
*numStats = v21;
|
||||
if ( (unsigned int)(*v17 - 1) > 8 )
|
||||
{
|
||||
v22 = 0;
|
||||
}
|
||||
else if ( *v17 == 2 || *v17 == 3 || *v17 == 4 || *v17 == 5 || *v17 == 6 || *v17 == 1 )
|
||||
{
|
||||
v22 = 192;
|
||||
}
|
||||
else
|
||||
{
|
||||
v22 = 992;
|
||||
}
|
||||
v23 = &stats[v19];
|
||||
v23->userName = v18;
|
||||
numSubModelQueries = v23->numSubModelQueries;
|
||||
v25 = v23->numModelQueries + 1;
|
||||
v23->numCollisionQueries += (_cntlzw(v17[10]) & 0x20) != 0;
|
||||
v23->numModelQueries = v25;
|
||||
v23->numSubModelQueries = numSubModelQueries + v17[12];
|
||||
v26 = v17[12];
|
||||
if ( v26 < 1 )
|
||||
v26 = 1;
|
||||
v28 = v26 * v22 + v23->queryDataSize;
|
||||
finalResultSize = v23->finalResultSize;
|
||||
v23->queryDataSize = v28;
|
||||
v23->finalResultSize = (v17[9] == 0 ? 0 : v22) + finalResultSize;
|
||||
}
|
||||
}
|
||||
v29 = 0;
|
||||
if ( *numStats > 0 )
|
||||
{
|
||||
v30 = &stats[-1].finalResultSize;
|
||||
do
|
||||
{
|
||||
v31 = v30[7];
|
||||
v32 = v30[12];
|
||||
if ( v32 <= v31 )
|
||||
v32 = v30[7];
|
||||
v33 = v30[13];
|
||||
v34 = v30[8];
|
||||
v30[12] = v32;
|
||||
v35 = v33;
|
||||
if ( v33 <= v34 )
|
||||
v35 = v34;
|
||||
v36 = v30[14];
|
||||
v37 = v30[9];
|
||||
v30[13] = v35;
|
||||
v38 = v36;
|
||||
if ( v36 <= v37 )
|
||||
v38 = v37;
|
||||
v39 = v30[15];
|
||||
v40 = v30[10];
|
||||
v30[14] = v38;
|
||||
v41 = v39;
|
||||
if ( v39 <= v40 )
|
||||
v41 = v40;
|
||||
v42 = v30[11];
|
||||
v43 = v30[16];
|
||||
v30[15] = v41;
|
||||
if ( v43 > v42 )
|
||||
v42 = v43;
|
||||
v30[16] = v42;
|
||||
++v29;
|
||||
numModelQueries = totalStats->numModelQueries;
|
||||
totalStats->numCollisionQueries += v31;
|
||||
v45 = totalStats->numSubModelQueries;
|
||||
totalStats->numModelQueries = numModelQueries + v30[8];
|
||||
queryDataSize = totalStats->queryDataSize;
|
||||
totalStats->numSubModelQueries = v30[9] + v45;
|
||||
v47 = totalStats->finalResultSize;
|
||||
totalStats->queryDataSize = queryDataSize + v30[10];
|
||||
v30 += 11;
|
||||
totalStats->finalResultSize = *v30 + v47;
|
||||
}
|
||||
while ( v29 < *numStats );
|
||||
}
|
||||
maxCollisionQueries = totalStats->maxCollisionQueries;
|
||||
if ( maxCollisionQueries <= totalStats->numCollisionQueries )
|
||||
maxCollisionQueries = totalStats->numCollisionQueries;
|
||||
totalStats->maxCollisionQueries = maxCollisionQueries;
|
||||
maxModelQueries = totalStats->maxModelQueries;
|
||||
if ( maxModelQueries <= totalStats->numModelQueries )
|
||||
maxModelQueries = totalStats->numModelQueries;
|
||||
totalStats->maxModelQueries = maxModelQueries;
|
||||
maxSubModelQueries = totalStats->maxSubModelQueries;
|
||||
if ( maxSubModelQueries <= totalStats->numSubModelQueries )
|
||||
maxSubModelQueries = totalStats->numSubModelQueries;
|
||||
totalStats->maxSubModelQueries = maxSubModelQueries;
|
||||
maxQueryDataSize = totalStats->maxQueryDataSize;
|
||||
if ( maxQueryDataSize <= totalStats->queryDataSize )
|
||||
maxQueryDataSize = totalStats->queryDataSize;
|
||||
totalStats->maxQueryDataSize = maxQueryDataSize;
|
||||
v52 = totalStats->finalResultSize;
|
||||
maxFinalResultSize = totalStats->maxFinalResultSize;
|
||||
if ( maxFinalResultSize <= v52 )
|
||||
totalStats->maxFinalResultSize = v52;
|
||||
else
|
||||
totalStats->maxFinalResultSize = maxFinalResultSize;
|
||||
return *numStats;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?EndFrame@idQueryData@@QAAXXZ
|
||||
// EA : 0x825D7498
|
||||
// RVA : 0x005D7498
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
// local variable allocation has failed, the output may be wrong!
|
||||
void __fastcall idQueryData::EndFrame(idQueryData *this)
|
||||
{
|
||||
__int64 v1; // r28
|
||||
int *p_failedModelQuery; // r24
|
||||
int v4; // r27
|
||||
int *p_numCollisionQueries; // r30
|
||||
int v6; // r8
|
||||
int v7; // r4
|
||||
int v8; // r7
|
||||
int v9; // r5
|
||||
int v10; // r6
|
||||
__int64 v11; // r10
|
||||
__int64 v12; // r8
|
||||
__int64 v13; // r6
|
||||
va *v14; // r3
|
||||
int failedSubModelQuery; // r11
|
||||
__int64 v16; // r6
|
||||
va *v17; // r3
|
||||
int failedQueryParms; // r11
|
||||
__int64 v19; // r6
|
||||
va *v20; // r3
|
||||
int failedSlideMoveState; // r11
|
||||
__int64 v22; // r6
|
||||
va *v23; // r3
|
||||
int failedIntermediateResults; // r11
|
||||
__int64 v25; // r6
|
||||
va *v26; // r3
|
||||
int failedFinalResults; // r11
|
||||
__int64 v28; // r6
|
||||
va *v29; // r3
|
||||
int failedMergeResults; // r4
|
||||
int v31; // r6 OVERLAPPED
|
||||
__int128 v32; // r5 OVERLAPPED
|
||||
unsigned __int64 finalResultsFirstAllocedOffset; // r11
|
||||
__int128 v34; // r9
|
||||
int v35; // r3
|
||||
int v36; // [sp+8h] [-1728h]
|
||||
int v37; // [sp+Ch] [-1724h]
|
||||
int v38; // [sp+10h] [-1720h]
|
||||
int v39; // [sp+14h] [-171Ch]
|
||||
int v40; // [sp+18h] [-1718h]
|
||||
int v41; // [sp+1Ch] [-1714h]
|
||||
int v42[4]; // [sp+50h] [-16E0h] BYREF
|
||||
idStr v43; // [sp+60h] [-16D0h] BYREF
|
||||
queryDataStats_t v44; // [sp+80h] [-16B0h] BYREF
|
||||
_BYTE v45[5632]; // [sp+B0h] [-1680h] BYREF
|
||||
|
||||
p_failedModelQuery = &this->failedModelQuery;
|
||||
LODWORD(v1) = 0;
|
||||
this->started = false;
|
||||
if ( this->failedModelQuery > 0
|
||||
|| this->failedSubModelQuery > 0
|
||||
|| this->failedQueryParms > 0
|
||||
|| this->failedSlideMoveState > 0
|
||||
|| this->failedIntermediateResults > 0
|
||||
|| this->failedFinalResults > 0
|
||||
|| this->failedMergeResults > 0 )
|
||||
{
|
||||
v42[0] = 0;
|
||||
memset(Dst: v45, Val: 0, Size: sizeof(v45));
|
||||
*(_QWORD *)&v44.userName = v1;
|
||||
*(_QWORD *)&v44.numModelQueries = v1;
|
||||
*(_QWORD *)&v44.queryDataSize = v1;
|
||||
*(_QWORD *)&v44.maxCollisionQueries = v1;
|
||||
*(_QWORD *)&v44.maxSubModelQueries = v1;
|
||||
v44.maxFinalResultSize = 0;
|
||||
idQueryData::UpdateQueryDataStats(
|
||||
this,
|
||||
stats: (queryDataStats_t *)v45,
|
||||
numStats: v42,
|
||||
maxStats: 128,
|
||||
totalStats: &v44);
|
||||
idLib::Printf(fmt: ".............................................\n");
|
||||
v4 = v42[0];
|
||||
if ( v42[0] > 0 )
|
||||
{
|
||||
p_numCollisionQueries = &v44.numCollisionQueries;
|
||||
do
|
||||
{
|
||||
v6 = p_numCollisionQueries[16] >> 10;
|
||||
v7 = p_numCollisionQueries[12];
|
||||
v8 = p_numCollisionQueries[15] >> 10;
|
||||
v9 = p_numCollisionQueries[13];
|
||||
v10 = p_numCollisionQueries[14];
|
||||
p_numCollisionQueries += 11;
|
||||
idLib::Printf(
|
||||
fmt: "%4d queries, %4d mdl queries, %4d sub-mdl queries, %4d kB temp, %4d kB final, %s\n",
|
||||
v7,
|
||||
v9,
|
||||
v10,
|
||||
v8,
|
||||
v6,
|
||||
(const char *)*p_numCollisionQueries);
|
||||
--v4;
|
||||
}
|
||||
while ( v4 != 0 );
|
||||
}
|
||||
idLib::Printf(fmt: ".............................................\n");
|
||||
idLib::Printf(
|
||||
fmt: "%4d queries, %4d mdl queries, %4d sub-mdl queries, %4d kB temp, %4d kB final, total\n",
|
||||
v44.numCollisionQueries,
|
||||
v44.numModelQueries,
|
||||
v44.numSubModelQueries,
|
||||
v44.queryDataSize >> 10,
|
||||
v44.finalResultSize >> 10);
|
||||
idLib::Printf(
|
||||
fmt: "%4d queries, %4d mdl queries, %4d sub-mdl queries, %4d kB temp, %4d kB final, maximum\n",
|
||||
2048,
|
||||
2048,
|
||||
4096,
|
||||
1024,
|
||||
512);
|
||||
v43.len = 0;
|
||||
v43.allocedAndFlag = 20;
|
||||
v43.data = v43.baseBuffer;
|
||||
v43.baseBuffer[0] = 0;
|
||||
if ( *p_failedModelQuery > 0 )
|
||||
{
|
||||
LODWORD(v11) = &unk_821B0000;
|
||||
LODWORD(v13) = 2048;
|
||||
HIDWORD(v13) = *p_failedModelQuery + 2048;
|
||||
v14 = va::va(
|
||||
this: (va *)v45,
|
||||
fmt: " Model Queries (%d/%d)",
|
||||
a3: v13,
|
||||
a4: v12,
|
||||
a5: v11,
|
||||
a6: v36,
|
||||
a7: v37,
|
||||
a8: v38,
|
||||
a9: v39,
|
||||
a10: v40,
|
||||
a11: v41);
|
||||
idStr::Append(this: &v43, text: v14);
|
||||
*p_failedModelQuery = 0;
|
||||
}
|
||||
failedSubModelQuery = this->failedSubModelQuery;
|
||||
if ( failedSubModelQuery > 0 )
|
||||
{
|
||||
LODWORD(v11) = &unk_821B0000;
|
||||
LODWORD(v16) = 4096;
|
||||
HIDWORD(v16) = failedSubModelQuery + 4096;
|
||||
v17 = va::va(
|
||||
this: (va *)v45,
|
||||
fmt: " Sub-Model Queries (%d/%d)",
|
||||
a3: v16,
|
||||
a4: v12,
|
||||
a5: v11,
|
||||
a6: v36,
|
||||
a7: v37,
|
||||
a8: v38,
|
||||
a9: v39,
|
||||
a10: v40,
|
||||
a11: v41);
|
||||
idStr::Append(this: &v43, text: v17);
|
||||
this->failedSubModelQuery = 0;
|
||||
}
|
||||
failedQueryParms = this->failedQueryParms;
|
||||
if ( failedQueryParms > 0 )
|
||||
{
|
||||
LODWORD(v11) = &unk_821B0000;
|
||||
LODWORD(v19) = 2048;
|
||||
HIDWORD(v19) = failedQueryParms + 2048;
|
||||
v20 = va::va(
|
||||
this: (va *)v45,
|
||||
fmt: " Query Parms (%d/%d)",
|
||||
a3: v19,
|
||||
a4: v12,
|
||||
a5: v11,
|
||||
a6: v36,
|
||||
a7: v37,
|
||||
a8: v38,
|
||||
a9: v39,
|
||||
a10: v40,
|
||||
a11: v41);
|
||||
idStr::Append(this: &v43, text: v20);
|
||||
this->failedQueryParms = 0;
|
||||
}
|
||||
failedSlideMoveState = this->failedSlideMoveState;
|
||||
if ( failedSlideMoveState > 0 )
|
||||
{
|
||||
LODWORD(v11) = &unk_821B0000;
|
||||
LODWORD(v22) = 128;
|
||||
HIDWORD(v22) = failedSlideMoveState + 128;
|
||||
v23 = va::va(
|
||||
this: (va *)v45,
|
||||
fmt: " Slide Move States (%d/%d)",
|
||||
a3: v22,
|
||||
a4: v12,
|
||||
a5: v11,
|
||||
a6: v36,
|
||||
a7: v37,
|
||||
a8: v38,
|
||||
a9: v39,
|
||||
a10: v40,
|
||||
a11: v41);
|
||||
idStr::Append(this: &v43, text: v23);
|
||||
this->failedSlideMoveState = 0;
|
||||
}
|
||||
failedIntermediateResults = this->failedIntermediateResults;
|
||||
if ( failedIntermediateResults > 0 )
|
||||
{
|
||||
LODWORD(v11) = &unk_821B0000;
|
||||
LODWORD(v25) = 1024;
|
||||
HIDWORD(v25) = (failedIntermediateResults + 0x100000) >> 10;
|
||||
v26 = va::va(
|
||||
this: (va *)v45,
|
||||
fmt: " Intermediate Result Bytes (%d kB/%d kB)",
|
||||
a3: v25,
|
||||
a4: v12,
|
||||
a5: v11,
|
||||
a6: v36,
|
||||
a7: v37,
|
||||
a8: v38,
|
||||
a9: v39,
|
||||
a10: v40,
|
||||
a11: v41);
|
||||
idStr::Append(this: &v43, text: v26);
|
||||
this->failedIntermediateResults = 0;
|
||||
}
|
||||
failedFinalResults = this->failedFinalResults;
|
||||
if ( failedFinalResults > 0 )
|
||||
{
|
||||
LODWORD(v11) = &unk_821B0000;
|
||||
LODWORD(v28) = 512;
|
||||
HIDWORD(v28) = (failedFinalResults + 0x80000) >> 10;
|
||||
v29 = va::va(
|
||||
this: (va *)v45,
|
||||
fmt: " Final Result Bytes (%d kB/%d kB)",
|
||||
a3: v28,
|
||||
a4: v12,
|
||||
a5: v11,
|
||||
a6: v36,
|
||||
a7: v37,
|
||||
a8: v38,
|
||||
a9: v39,
|
||||
a10: v40,
|
||||
a11: v41);
|
||||
idStr::Append(this: &v43, text: v29);
|
||||
this->failedFinalResults = 0;
|
||||
}
|
||||
if ( v43.len != 0 )
|
||||
idLib::Warning(fmt: "Collision Detection system ran out of free%s", v43.data);
|
||||
failedMergeResults = this->failedMergeResults;
|
||||
if ( failedMergeResults > 0 )
|
||||
{
|
||||
idLib::Warning(
|
||||
fmt: "%d collision detection querie(s) needed more than %d kB of merge results",
|
||||
failedMergeResults,
|
||||
32);
|
||||
this->failedMergeResults = 0;
|
||||
}
|
||||
idStr::FreeData(this: &v43);
|
||||
}
|
||||
v31 = 2381872;
|
||||
*((_QWORD *)&v32 + 1) = this->modelQueryFirstAllocedIndex;
|
||||
*(_QWORD *)((char *)&v32 + 4) = this->subModelQueryFirstAllocedIndex;
|
||||
this->modelQueryFirstSubmittedIndex = v32;
|
||||
idQueryData::AdvanceSubModelQueryFirstSubmittedIndex(
|
||||
this: (idQueryData *)DWORD1(v32),
|
||||
a2: DWORD2(v32),
|
||||
newIndex: *(unsigned __int64 *)&v31);
|
||||
finalResultsFirstAllocedOffset = this->finalResultsFirstAllocedOffset;
|
||||
*((_QWORD *)&v34 + 1) = this->queryParmsFirstAllocedIndex;
|
||||
*(_QWORD *)((char *)&v34 + 4) = *(_QWORD *)((char *)&this->modelQueries[0].type + DWORD2(v34));
|
||||
*(_QWORD *)&v34 = *(_QWORD *)((char *)&this->modelQueries[0].type + DWORD1(v34));
|
||||
v35 = HIDWORD(finalResultsFirstAllocedOffset) | 0x58A0;
|
||||
HIDWORD(finalResultsFirstAllocedOffset) = &idDeclReachIK::resourceList.hashTable[243];
|
||||
*(_QWORD *)((char *)&this->modelQueries[0].type + HIDWORD(v34)) = v34;
|
||||
this->slideMoveStateFirstSubmittedIndex = *(_QWORD *)((char *)&v34 + 4);
|
||||
*(_QWORD *)((char *)&this->modelQueries[0].type + v35) = finalResultsFirstAllocedOffset;
|
||||
this->intermediateResultsFirstSubmittedOffset = *(_QWORD *)&v34;
|
||||
*(_QWORD *)(HIDWORD(finalResultsFirstAllocedOffset) - 18144) = finalResultsFirstAllocedOffset;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$229616
|
||||
// EA : 0x825D7890
|
||||
// RVA : 0x005D7890
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_229616()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 5936 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Clear@idQueryData@@QAAXXZ
|
||||
// EA : 0x825DC7F8
|
||||
// RVA : 0x005DC7F8
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idQueryData::Clear(idQueryData *this)
|
||||
{
|
||||
this->modelQueryFirstAllocedIndex = 0x24581000000001LL;
|
||||
this->subModelQueryFirstSubmittedIndex = 0x24581000000001LL;
|
||||
this->slideMoveStateFirstAllocedIndex = 0x24581000000001LL;
|
||||
this->subModelQueryFirstAllocedIndex = 0x24581000000001LL;
|
||||
this->queryParmsFirstSubmittedIndex = 0x24581000000001LL;
|
||||
this->queryParmsFirstAllocedIndex = 0x24581000000001LL;
|
||||
this->slideMoveStateFirstSubmittedIndex = 0x24582800000001LL;
|
||||
this->modelQueryLastAllocedIndex = 0x100000000LL;
|
||||
this->subModelQueryLastSubmittedIndex = 0x100000000LL;
|
||||
this->subModelQueryLastAllocedIndex = 0x100000000LL;
|
||||
this->queryParmsLastSubmittedIndex = 0x100000000LL;
|
||||
this->queryParmsLastAllocedIndex = 0x100000000LL;
|
||||
this->slideMoveStateLastSubmittedIndex = 0x100000000LL;
|
||||
this->slideMoveStateLastAllocedIndex = 0x100000000LL;
|
||||
this->modelQueryFirstSubmittedIndex = 0x24588000000001LL;
|
||||
this->intermediateResultsFirstSubmittedOffset = 16;
|
||||
this->intermediateResultsLastSubmittedOffset = 16;
|
||||
this->modelQueryLastSubmittedIndex = 0x24000000000000LL;
|
||||
this->intermediateResultsFirstAllocedOffset = 16;
|
||||
this->intermediateResultsLastAllocedOffset = 16;
|
||||
this->finalResultsFirstSubmittedOffset = 16;
|
||||
this->finalResultsLastSubmittedOffset = 16;
|
||||
this->finalResultsFirstAllocedOffset = 16;
|
||||
this->finalResultsLastAllocedOffset = 16;
|
||||
this->started = false;
|
||||
this->failedModelQuery = 0;
|
||||
this->failedSubModelQuery = 0;
|
||||
this->failedQueryParms = 0;
|
||||
this->failedIntermediateResults = 0;
|
||||
this->failedFinalResults = 0;
|
||||
this->failedSlideMoveState = 0;
|
||||
this->failedMergeResults = 0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?ReleaseQueryOnlyData@idQueryData@@QAAXXZ
|
||||
// EA : 0x825DC9A0
|
||||
// RVA : 0x005DC9A0
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
// local variable allocation has failed, the output may be wrong!
|
||||
void __fastcall idQueryData::ReleaseQueryOnlyData(idQueryData *this, unsigned __int64 a2)
|
||||
{
|
||||
int v2; // r6
|
||||
unsigned __int64 intermediateResultsLastSubmittedOffset; // r5 OVERLAPPED
|
||||
__int64 v5; // r7 OVERLAPPED
|
||||
|
||||
v2 = 2381864;
|
||||
LODWORD(a2) = LODWORD(this->modelQueryLastSubmittedIndex) + 1;
|
||||
this->modelQueryFirstSubmittedIndex = a2;
|
||||
idQueryData::AdvanceSubModelQueryFirstSubmittedIndex(
|
||||
this,
|
||||
a2: LODWORD(this->subModelQueryLastSubmittedIndex) + 1,
|
||||
newIndex: *(unsigned __int64 *)((char *)&a2 - 4));
|
||||
intermediateResultsLastSubmittedOffset = this->intermediateResultsLastSubmittedOffset;
|
||||
LODWORD(v5) = LODWORD(this->queryParmsLastSubmittedIndex) + 1;
|
||||
HIDWORD(v5) = LODWORD(this->slideMoveStateLastSubmittedIndex) + 1;
|
||||
*(_QWORD *)((char *)&this->modelQueries[0].type + HIDWORD(intermediateResultsLastSubmittedOffset)) = v5;
|
||||
this->slideMoveStateFirstSubmittedIndex = *(unsigned __int64 *)((char *)&intermediateResultsLastSubmittedOffset - 4);
|
||||
this->intermediateResultsFirstSubmittedOffset = intermediateResultsLastSubmittedOffset;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0timings_t@@QAA@XZ
|
||||
// EA : 0x825DCDC8
|
||||
// RVA : 0x005DCDC8
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
timings_t *__fastcall timings_t::timings_t(timings_t *this)
|
||||
{
|
||||
this->max = 0;
|
||||
this->min = -1;
|
||||
this->total = 0;
|
||||
this->count = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AllocModelQuery@idQueryData@@QAAPAUmodelQuery_t@@XZ
|
||||
// EA : 0x825DCDE8
|
||||
// RVA : 0x005DCDE8
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
modelQuery_t *__fastcall idQueryData::AllocModelQuery(idQueryData *this)
|
||||
{
|
||||
unsigned __int64 modelQueryLastAllocedIndex; // r11
|
||||
modelQuery_t *result; // r3
|
||||
unsigned int v3; // r10
|
||||
|
||||
modelQueryLastAllocedIndex = this->modelQueryLastAllocedIndex;
|
||||
if ( (unsigned int)(modelQueryLastAllocedIndex - LODWORD(this->modelQueryFirstSubmittedIndex) + 1) < 0x800 )
|
||||
{
|
||||
LODWORD(modelQueryLastAllocedIndex) = modelQueryLastAllocedIndex + 1;
|
||||
this->modelQueryLastAllocedIndex = modelQueryLastAllocedIndex;
|
||||
result = (modelQuery_t *)((((_DWORD)modelQueryLastAllocedIndex << 7) & 0x3FF80) + HIDWORD(modelQueryLastAllocedIndex));
|
||||
v3 = ((unsigned int)&result->pad[5] + 3) & 0xFFFFFF80;
|
||||
do
|
||||
{
|
||||
__asm { dcbz128 0, r10 }
|
||||
v3 += 128;
|
||||
}
|
||||
while ( v3 <= (((unsigned int)&result->pad[5] + 3) & 0xFFFFFF80) );
|
||||
}
|
||||
else
|
||||
{
|
||||
++*(_DWORD *)(HIDWORD(modelQueryLastAllocedIndex) + 2382020);
|
||||
return nullptr;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AllocSubModelQuery@idQueryData@@QAAPAUsubModelQuery_t@@XZ
|
||||
// EA : 0x825DCE68
|
||||
// RVA : 0x005DCE68
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
subModelQuery_t *__fastcall idQueryData::AllocSubModelQuery(idQueryData *this)
|
||||
{
|
||||
unsigned __int64 subModelQueryLastAllocedIndex; // r11
|
||||
subModelQuery_t *result; // r3
|
||||
unsigned int v3; // r11
|
||||
unsigned int i; // r10
|
||||
|
||||
subModelQueryLastAllocedIndex = this->subModelQueryLastAllocedIndex;
|
||||
if ( (unsigned int)(subModelQueryLastAllocedIndex - LODWORD(this->subModelQueryFirstSubmittedIndex) + 5) < 0x1000 )
|
||||
{
|
||||
LODWORD(subModelQueryLastAllocedIndex) = subModelQueryLastAllocedIndex + 1;
|
||||
this->subModelQueryLastAllocedIndex = subModelQueryLastAllocedIndex;
|
||||
result = (subModelQuery_t *)(32 * ((subModelQueryLastAllocedIndex & 0xFFF) + 0x2000)
|
||||
+ HIDWORD(subModelQueryLastAllocedIndex));
|
||||
v3 = ((unsigned int)&result[3].nextOnModelQuery + 3) & 0xFFFFFF80;
|
||||
for ( i = ((unsigned int)&result->nextOnModelQuery + 3) & 0xFFFFFF80; v3 <= i; v3 += 128 )
|
||||
__asm { dcbz128 0, r11 }
|
||||
}
|
||||
else
|
||||
{
|
||||
++*(_DWORD *)(HIDWORD(subModelQueryLastAllocedIndex) + 2382024);
|
||||
return nullptr;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AllocQueryParms@idQueryData@@QAAPAUqueryParms_t@@XZ
|
||||
// EA : 0x825DCEF8
|
||||
// RVA : 0x005DCEF8
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
queryParms_t *__fastcall idQueryData::AllocQueryParms(idQueryData *this)
|
||||
{
|
||||
unsigned __int64 queryParmsLastAllocedIndex; // r11
|
||||
queryParms_t *result; // r3
|
||||
unsigned int v3; // r11
|
||||
unsigned int i; // r10
|
||||
|
||||
queryParmsLastAllocedIndex = this->queryParmsLastAllocedIndex;
|
||||
if ( (unsigned int)(queryParmsLastAllocedIndex - LODWORD(this->queryParmsFirstSubmittedIndex) + 2) < 0x800 )
|
||||
{
|
||||
LODWORD(queryParmsLastAllocedIndex) = queryParmsLastAllocedIndex + 1;
|
||||
this->queryParmsLastAllocedIndex = queryParmsLastAllocedIndex;
|
||||
result = (queryParms_t *)(192 * ((queryParmsLastAllocedIndex & 0x7FF) + 2048) + HIDWORD(queryParmsLastAllocedIndex));
|
||||
v3 = ((unsigned int)&result->modelOrigin.x + 3) & 0xFFFFFF80;
|
||||
for ( i = ((unsigned int)&result->selfId + 3) & 0xFFFFFF80; v3 <= i; v3 += 128 )
|
||||
__asm { dcbz128 0, r11 }
|
||||
}
|
||||
else
|
||||
{
|
||||
++*(_DWORD *)(HIDWORD(queryParmsLastAllocedIndex) + 2382028);
|
||||
return nullptr;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AllocSlideMoveState@idQueryData@@QAAPAUslideMoveState_t@@XZ
|
||||
// EA : 0x825DCF90
|
||||
// RVA : 0x005DCF90
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
slideMoveState_t *__fastcall idQueryData::AllocSlideMoveState(idQueryData *this)
|
||||
{
|
||||
unsigned __int64 slideMoveStateLastAllocedIndex; // r11
|
||||
slideMoveState_t *result; // r3
|
||||
int v3; // r7
|
||||
unsigned int v4; // r11
|
||||
unsigned int i; // r10
|
||||
|
||||
slideMoveStateLastAllocedIndex = this->slideMoveStateLastAllocedIndex;
|
||||
if ( (unsigned int)(slideMoveStateLastAllocedIndex - LODWORD(this->slideMoveStateFirstSubmittedIndex) + 2) < 0x80 )
|
||||
{
|
||||
LODWORD(slideMoveStateLastAllocedIndex) = slideMoveStateLastAllocedIndex + 1;
|
||||
this->slideMoveStateLastAllocedIndex = slideMoveStateLastAllocedIndex;
|
||||
v3 = 176 * (slideMoveStateLastAllocedIndex & 0x7F) + HIDWORD(slideMoveStateLastAllocedIndex);
|
||||
result = (slideMoveState_t *)(v3 + 786432);
|
||||
v4 = (v3 + 786559) & 0xFFFFFF80;
|
||||
for ( i = (v3 + 786607) & 0xFFFFFF80; v4 <= i; v4 += 128 )
|
||||
__asm { dcbz128 0, r11 }
|
||||
}
|
||||
else
|
||||
{
|
||||
++*(_DWORD *)(HIDWORD(slideMoveStateLastAllocedIndex) + 2382040);
|
||||
return nullptr;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AllocIntermediateResults@idQueryData@@QAAPAUqueryResults_t@@II@Z
|
||||
// EA : 0x825DD020
|
||||
// RVA : 0x005DD020
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
queryResults_t *__fastcall idQueryData::AllocIntermediateResults(
|
||||
idQueryData *this,
|
||||
unsigned int numResults,
|
||||
unsigned int resultSize)
|
||||
{
|
||||
unsigned int v3; // r6
|
||||
unsigned __int64 intermediateResultsFirstSubmittedOffset; // r4
|
||||
unsigned __int64 *p_intermediateResultsLastAllocedOffset; // r8
|
||||
__int64 v6; // r11
|
||||
unsigned __int64 v7; // r9
|
||||
queryResults_t *result; // r3
|
||||
unsigned int v9; // r7
|
||||
unsigned int i; // r10
|
||||
|
||||
v3 = numResults * resultSize;
|
||||
p_intermediateResultsLastAllocedOffset = &this->intermediateResultsLastAllocedOffset;
|
||||
LODWORD(v6) = numResults * resultSize;
|
||||
intermediateResultsFirstSubmittedOffset = this->intermediateResultsFirstSubmittedOffset;
|
||||
HIDWORD(v6) = HIDWORD(intermediateResultsFirstSubmittedOffset);
|
||||
v7 = *p_intermediateResultsLastAllocedOffset;
|
||||
if ( (unsigned int)(v6 - intermediateResultsFirstSubmittedOffset + v7 + 128) < 0x100000 )
|
||||
{
|
||||
LODWORD(v6) = v6 + v7;
|
||||
LODWORD(v7) = v7 & 0xFFFFF;
|
||||
*(_QWORD *)HIDWORD(v7) = v6;
|
||||
v9 = v6 & 0xFFF00000;
|
||||
LODWORD(v6) = (v6 + 0x8000) & 0xFFF00000;
|
||||
result = (queryResults_t *)(v7 + HIDWORD(intermediateResultsFirstSubmittedOffset) + 808960);
|
||||
if ( (unsigned int)v6 > v9 )
|
||||
*(_QWORD *)HIDWORD(v7) = v6;
|
||||
_R11 = (v7 + HIDWORD(v6) + 809087) & 0xFFFFFF80;
|
||||
for ( i = ((unsigned int)result + v3 - 1) & 0xFFFFFF80; _R11 <= i; _R11 += 128 )
|
||||
{
|
||||
__asm
|
||||
{
|
||||
dcbz128 0, r11
|
||||
dcbf 0, r11
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)(HIDWORD(intermediateResultsFirstSubmittedOffset) + 2382032) += v3;
|
||||
return nullptr;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AllocFinalResult@idQueryData@@QAAPAUqueryResults_t@@I@Z
|
||||
// EA : 0x825DD0E8
|
||||
// RVA : 0x005DD0E8
|
||||
// PDB : w:\tech5\engine\cm\collisionqueryjobmanager.h
|
||||
// ========================================================================
|
||||
|
||||
queryResults_t *__fastcall idQueryData::AllocFinalResult(idQueryData *this, unsigned __int64 totalSize)
|
||||
{
|
||||
unsigned __int64 *p_finalResultsLastAllocedOffset; // r11
|
||||
unsigned int v3; // r6
|
||||
unsigned __int64 finalResultsLastAllocedOffset; // r10
|
||||
queryResults_t *result; // r3
|
||||
int v6; // r6
|
||||
unsigned int v8; // r10
|
||||
|
||||
p_finalResultsLastAllocedOffset = &this->finalResultsLastAllocedOffset;
|
||||
finalResultsLastAllocedOffset = this->finalResultsLastAllocedOffset;
|
||||
v3 = finalResultsLastAllocedOffset & 0xFFF80000;
|
||||
LODWORD(finalResultsLastAllocedOffset) = (HIDWORD(totalSize) + finalResultsLastAllocedOffset) & 0xFFF80000;
|
||||
if ( (unsigned int)finalResultsLastAllocedOffset > v3 )
|
||||
*p_finalResultsLastAllocedOffset = finalResultsLastAllocedOffset;
|
||||
if ( (unsigned int)(HIDWORD(totalSize)
|
||||
- *(_DWORD *)(HIDWORD(this->finalResultsLastAllocedOffset) + 2381988)
|
||||
+ LODWORD(this->finalResultsLastAllocedOffset)
|
||||
+ 128) < 0x80000 )
|
||||
{
|
||||
idCollisionQuery::finalResultsLastAllocedOffset = *p_finalResultsLastAllocedOffset;
|
||||
v6 = (this->finalResultsLastAllocedOffset & 0x7FFFF) + HIDWORD(this->finalResultsLastAllocedOffset);
|
||||
LODWORD(totalSize) = HIDWORD(totalSize) + LODWORD(this->finalResultsLastAllocedOffset);
|
||||
*p_finalResultsLastAllocedOffset = totalSize;
|
||||
result = (queryResults_t *)(v6 + 1857536);
|
||||
v8 = (v6 + 1857536 + HIDWORD(totalSize) - 1) & 0xFFFFFF80;
|
||||
for ( _R11 = (v6 + 1857663) & 0xFFFFFF80; _R11 <= v8; _R11 += 128 )
|
||||
{
|
||||
__asm
|
||||
{
|
||||
dcbz128 0, r11
|
||||
dcbf 0, r11
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*(_DWORD *)(*(_DWORD *)p_finalResultsLastAllocedOffset + 2382036) += HIDWORD(totalSize);
|
||||
return nullptr;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,966 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?ExecuteSubModelQuery@idCollisionQueryExecute@@SAXPAVidTraceWork@@AAUqueryResults_t@@PBUqueryParms_t@@PBVidTraceModel@@PBUcm_subModelData_t@@H@Z
|
||||
// EA : 0x825E56F0
|
||||
// RVA : 0x005E56F0
|
||||
// PDB : w:\tech5\engine\cm\jobs\collisionquery.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionQueryExecute::ExecuteSubModelQuery(
|
||||
idTraceWork *tw,
|
||||
queryResults_t *results,
|
||||
const queryParms_t *parms,
|
||||
const idTraceModel *trm,
|
||||
const cm_subModelData_t *subModelData,
|
||||
int subModelNum)
|
||||
{
|
||||
const idMat3 *v13; // [sp+8h] [-888h]
|
||||
int v14; // [sp+8h] [-888h]
|
||||
int v15; // [sp+8h] [-888h]
|
||||
const idMat3 *v16; // [sp+Ch] [-884h]
|
||||
int v17; // [sp+Ch] [-884h]
|
||||
int v18; // [sp+10h] [-880h]
|
||||
int v19; // [sp+14h] [-87Ch]
|
||||
trace_t v20; // [sp+B0h] [-7E0h] BYREF
|
||||
trace_t v21; // [sp+480h] [-410h] BYREF
|
||||
|
||||
tw->profile[0] = 0;
|
||||
tw->profile[1] = 0;
|
||||
tw->profile[2] = 0;
|
||||
tw->profile[3] = 0;
|
||||
tw->profile[4] = 0;
|
||||
if ( parms->testQuery && (parms->type == TRACE_TRANSLATION || parms->type == TRACE_ROTATION) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::StartContents(
|
||||
tw,
|
||||
result: &v20,
|
||||
start: &parms->start,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
if ( v20.c.contentFlags != 0 )
|
||||
results->query.status |= 2u;
|
||||
}
|
||||
if ( (unsigned int)(parms->type - 1) <= 8 )
|
||||
{
|
||||
if ( parms->type == TRACE_TRANSLATION_POINT )
|
||||
{
|
||||
if ( !idPolygonModelCollisionDetection::StartTranslationPoint(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
start: &parms->start,
|
||||
end: &parms->end,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis) )
|
||||
goto LABEL_28;
|
||||
goto LABEL_19;
|
||||
}
|
||||
if ( parms->type == TRACE_ROTATION )
|
||||
{
|
||||
if ( idPolygonModelCollisionDetection::StartRotation(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)subModelData,
|
||||
trm: (const idTraceModel *)&parms->start,
|
||||
trmAxis: (const idMat3 *)trm,
|
||||
contentMask: (int)&parms->trmAxis,
|
||||
modelOrigin: v13->mat,
|
||||
modelAxis: v16) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishRotation(
|
||||
tw,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)parms->selfId,
|
||||
trmAxis: (const idMat3 *)&parms->start,
|
||||
modelOrigin: parms->trmAxis.mat,
|
||||
modelAxis: (const idMat3 *)&parms->modelOrigin,
|
||||
modelEntityNum: (int)&parms->modelAxis,
|
||||
modelPhysicsId: v14,
|
||||
modelBodyId: v17,
|
||||
selfId: v18,
|
||||
modelContentsOverride: v19);
|
||||
}
|
||||
goto LABEL_28;
|
||||
}
|
||||
if ( parms->type != TRACE_ROTATION_POINT )
|
||||
{
|
||||
switch ( parms->type )
|
||||
{
|
||||
case TRACE_CONTENTS:
|
||||
idPolygonModelCollisionDetection::StartContents(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
start: &parms->start,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
goto LABEL_28;
|
||||
case TRACE_CONTENTS_POINT:
|
||||
idPolygonModelCollisionDetection::StartContentsPoint(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
start: &parms->start,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
goto LABEL_28;
|
||||
case TRACE_CONTACTS_UNI_DIR:
|
||||
case TRACE_CONTACTS_OMNI_DIR:
|
||||
*(_DWORD *)results->data = 0;
|
||||
idPolygonModelCollisionDetection::StartContacts(
|
||||
tw,
|
||||
result: (contactsResult_t *)results->data,
|
||||
start: &parms->start,
|
||||
dir: &parms->dir,
|
||||
depth: parms->depth,
|
||||
trm: (const idTraceModel *)subModelData,
|
||||
trmAxis: (const idMat3 *)trm,
|
||||
contentMask: (int)&parms->trmAxis,
|
||||
modelOrigin: (const idVec3 *)parms->contentMask,
|
||||
modelAxis: v13);
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishContacts(
|
||||
tw,
|
||||
firstContact: 0,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelBodyId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: v15);
|
||||
goto LABEL_28;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if ( parms->type != TRACE_TRANSLATION )
|
||||
{
|
||||
*(_DWORD *)results->data = 0;
|
||||
*(_DWORD *)&results->data[4] = 0;
|
||||
idPolygonModelCollisionDetection::StartClip(
|
||||
tw,
|
||||
result: (clipResult_t *)results->data,
|
||||
start: &parms->start,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishClip(
|
||||
tw,
|
||||
firstClipVert: 0,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
goto LABEL_28;
|
||||
}
|
||||
if ( !idPolygonModelCollisionDetection::StartTranslation(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
contacts: nullptr,
|
||||
start: &parms->start,
|
||||
end: &parms->end,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: v13->mat,
|
||||
modelAxis: v16) )
|
||||
goto LABEL_28;
|
||||
LABEL_19:
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishTranslation(
|
||||
tw,
|
||||
start: &parms->start,
|
||||
end: &parms->end,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelBodyId: parms->modelBodyId,
|
||||
selfId: (int)v13,
|
||||
modelContentsOverride: (int)v16);
|
||||
goto LABEL_28;
|
||||
}
|
||||
if ( idPolygonModelCollisionDetection::StartRotationPoint(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)subModelData,
|
||||
contentMask: (int)&parms->start,
|
||||
modelOrigin: (const idVec3 *)parms->contentMask,
|
||||
modelAxis: (const idMat3 *)&parms->modelOrigin) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishRotation(
|
||||
tw,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)parms->modelPhysicsId,
|
||||
trmAxis: (const idMat3 *)&parms->start,
|
||||
modelOrigin: parms->trmAxis.mat,
|
||||
modelAxis: (const idMat3 *)&parms->modelOrigin,
|
||||
modelEntityNum: (int)&parms->modelAxis,
|
||||
modelPhysicsId: (int)v13,
|
||||
modelBodyId: (int)v16,
|
||||
selfId: v18,
|
||||
modelContentsOverride: v19);
|
||||
}
|
||||
}
|
||||
LABEL_28:
|
||||
if ( parms->testQuery && (parms->type == TRACE_TRANSLATION || parms->type == TRACE_ROTATION) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::StartContents(
|
||||
tw,
|
||||
result: &v21,
|
||||
start: (const idVec3 *)&results->data[4],
|
||||
trm,
|
||||
trmAxis: (const idMat3 *)&results->data[16],
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughSubModel(tw, subModelData, subModelNum);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
if ( v21.c.contentFlags != 0 )
|
||||
results->query.status |= 4u;
|
||||
}
|
||||
if ( results->query.status == QUERY_STATUS_PENDING )
|
||||
results->query.status = QUERY_STATUS_SUCCESS;
|
||||
results->query.profile[0] = tw->profile[0];
|
||||
results->query.profile[1] = tw->profile[1];
|
||||
results->query.profile[2] = tw->profile[2];
|
||||
results->query.profile[3] = tw->profile[3];
|
||||
results->query.profile[4] = tw->profile[4];
|
||||
results->query.type = parms->type;
|
||||
results->query.done = 1;
|
||||
results->query.merged = parms->autoMerge;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?ExecutePolygonModelQuery@idCollisionQueryExecute@@SAXPAVidTraceWork@@AAUqueryResults_t@@PBUqueryParms_t@@PBVidTraceModel@@PBUcm_polygonModel_t@@@Z
|
||||
// EA : 0x825E5CF0
|
||||
// RVA : 0x005E5CF0
|
||||
// PDB : w:\tech5\engine\cm\jobs\collisionquery.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionQueryExecute::ExecutePolygonModelQuery(
|
||||
idTraceWork *tw,
|
||||
queryResults_t *results,
|
||||
const queryParms_t *parms,
|
||||
const idTraceModel *trm,
|
||||
const cm_polygonModel_t *polygonModel)
|
||||
{
|
||||
const idMat3 *v11; // [sp+8h] [-878h]
|
||||
int v12; // [sp+8h] [-878h]
|
||||
int v13; // [sp+8h] [-878h]
|
||||
const idMat3 *v14; // [sp+Ch] [-874h]
|
||||
int v15; // [sp+Ch] [-874h]
|
||||
int v16; // [sp+10h] [-870h]
|
||||
int v17; // [sp+14h] [-86Ch]
|
||||
trace_t v18; // [sp+B0h] [-7D0h] BYREF
|
||||
trace_t v19; // [sp+480h] [-400h] BYREF
|
||||
|
||||
tw->profile[0] = 0;
|
||||
tw->profile[1] = 0;
|
||||
tw->profile[2] = 0;
|
||||
tw->profile[3] = 0;
|
||||
tw->profile[4] = 0;
|
||||
if ( parms->testQuery && (parms->type == TRACE_TRANSLATION || parms->type == TRACE_ROTATION) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::StartContents(
|
||||
tw,
|
||||
result: &v18,
|
||||
start: &parms->start,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
if ( v18.c.contentFlags != 0 )
|
||||
results->query.status |= 2u;
|
||||
}
|
||||
if ( (unsigned int)(parms->type - 1) <= 8 )
|
||||
{
|
||||
if ( parms->type == TRACE_TRANSLATION_POINT )
|
||||
{
|
||||
if ( !idPolygonModelCollisionDetection::StartTranslationPoint(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
start: &parms->start,
|
||||
end: &parms->end,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis) )
|
||||
goto LABEL_28;
|
||||
goto LABEL_19;
|
||||
}
|
||||
if ( parms->type == TRACE_ROTATION )
|
||||
{
|
||||
if ( idPolygonModelCollisionDetection::StartRotation(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)polygonModel,
|
||||
trm: (const idTraceModel *)&parms->start,
|
||||
trmAxis: (const idMat3 *)trm,
|
||||
contentMask: (int)&parms->trmAxis,
|
||||
modelOrigin: v11->mat,
|
||||
modelAxis: v14) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishRotation(
|
||||
tw,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)parms->selfId,
|
||||
trmAxis: (const idMat3 *)&parms->start,
|
||||
modelOrigin: parms->trmAxis.mat,
|
||||
modelAxis: (const idMat3 *)&parms->modelOrigin,
|
||||
modelEntityNum: (int)&parms->modelAxis,
|
||||
modelPhysicsId: v12,
|
||||
modelBodyId: v15,
|
||||
selfId: v16,
|
||||
modelContentsOverride: v17);
|
||||
}
|
||||
goto LABEL_28;
|
||||
}
|
||||
if ( parms->type != TRACE_ROTATION_POINT )
|
||||
{
|
||||
switch ( parms->type )
|
||||
{
|
||||
case TRACE_CONTENTS:
|
||||
idPolygonModelCollisionDetection::StartContents(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
start: &parms->start,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
goto LABEL_28;
|
||||
case TRACE_CONTENTS_POINT:
|
||||
idPolygonModelCollisionDetection::StartContentsPoint(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
start: &parms->start,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
goto LABEL_28;
|
||||
case TRACE_CONTACTS_UNI_DIR:
|
||||
case TRACE_CONTACTS_OMNI_DIR:
|
||||
*(_DWORD *)results->data = 0;
|
||||
idPolygonModelCollisionDetection::StartContacts(
|
||||
tw,
|
||||
result: (contactsResult_t *)results->data,
|
||||
start: &parms->start,
|
||||
dir: &parms->dir,
|
||||
depth: parms->depth,
|
||||
trm: (const idTraceModel *)polygonModel,
|
||||
trmAxis: (const idMat3 *)trm,
|
||||
contentMask: (int)&parms->trmAxis,
|
||||
modelOrigin: (const idVec3 *)parms->contentMask,
|
||||
modelAxis: v11);
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishContacts(
|
||||
tw,
|
||||
firstContact: 0,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelBodyId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: v13);
|
||||
goto LABEL_28;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if ( parms->type != TRACE_TRANSLATION )
|
||||
{
|
||||
*(_DWORD *)&results->data[4] = 0;
|
||||
*(_DWORD *)results->data = 0;
|
||||
idPolygonModelCollisionDetection::StartClip(
|
||||
tw,
|
||||
result: (clipResult_t *)results->data,
|
||||
start: &parms->start,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishClip(
|
||||
tw,
|
||||
firstClipVert: 0,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
goto LABEL_28;
|
||||
}
|
||||
if ( !idPolygonModelCollisionDetection::StartTranslation(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
contacts: nullptr,
|
||||
start: &parms->start,
|
||||
end: &parms->end,
|
||||
trm,
|
||||
trmAxis: &parms->trmAxis,
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: v11->mat,
|
||||
modelAxis: v14) )
|
||||
goto LABEL_28;
|
||||
LABEL_19:
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishTranslation(
|
||||
tw,
|
||||
start: &parms->start,
|
||||
end: &parms->end,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelBodyId: parms->modelBodyId,
|
||||
selfId: (int)v11,
|
||||
modelContentsOverride: (int)v14);
|
||||
goto LABEL_28;
|
||||
}
|
||||
if ( idPolygonModelCollisionDetection::StartRotationPoint(
|
||||
tw,
|
||||
result: (trace_t *)results->data,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)polygonModel,
|
||||
contentMask: (int)&parms->start,
|
||||
modelOrigin: (const idVec3 *)parms->contentMask,
|
||||
modelAxis: (const idMat3 *)&parms->modelOrigin) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishRotation(
|
||||
tw,
|
||||
rorg: &parms->rotationOrigin,
|
||||
axis: &parms->rotationAxis,
|
||||
angle: parms->rotationAngle,
|
||||
start: (const idVec3 *)parms->modelPhysicsId,
|
||||
trmAxis: (const idMat3 *)&parms->start,
|
||||
modelOrigin: parms->trmAxis.mat,
|
||||
modelAxis: (const idMat3 *)&parms->modelOrigin,
|
||||
modelEntityNum: (int)&parms->modelAxis,
|
||||
modelPhysicsId: (int)v11,
|
||||
modelBodyId: (int)v14,
|
||||
selfId: v16,
|
||||
modelContentsOverride: v17);
|
||||
}
|
||||
}
|
||||
LABEL_28:
|
||||
if ( parms->testQuery && (parms->type == TRACE_TRANSLATION || parms->type == TRACE_ROTATION) )
|
||||
{
|
||||
idPolygonModelCollisionDetection::StartContents(
|
||||
tw,
|
||||
result: &v19,
|
||||
start: (const idVec3 *)&results->data[4],
|
||||
trm,
|
||||
trmAxis: (const idMat3 *)&results->data[16],
|
||||
contentMask: parms->contentMask,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis);
|
||||
idPolygonModelCollisionDetection::TraceThroughModel(tw, model: polygonModel);
|
||||
idPolygonModelCollisionDetection::FinishContents(
|
||||
tw,
|
||||
modelOrigin: &parms->modelOrigin,
|
||||
modelAxis: &parms->modelAxis,
|
||||
modelEntityNum: parms->modelEntityNum,
|
||||
modelPhysicsId: parms->modelPhysicsId,
|
||||
modelId: parms->modelBodyId,
|
||||
selfId: parms->selfId,
|
||||
modelContentsOverride: parms->modelContentsOverride);
|
||||
if ( v19.c.contentFlags != 0 )
|
||||
results->query.status |= 4u;
|
||||
}
|
||||
if ( results->query.status == QUERY_STATUS_PENDING )
|
||||
results->query.status = QUERY_STATUS_SUCCESS;
|
||||
results->query.profile[0] = tw->profile[0];
|
||||
results->query.profile[1] = tw->profile[1];
|
||||
results->query.profile[2] = tw->profile[2];
|
||||
results->query.profile[3] = tw->profile[3];
|
||||
results->query.profile[4] = tw->profile[4];
|
||||
results->query.type = parms->type;
|
||||
results->query.done = 1;
|
||||
results->query.merged = parms->autoMerge;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?ExecuteSphereModelQuery@idCollisionQueryExecute@@SAXAAUqueryResults_t@@PBUqueryParms_t@@PBVidJointMat@@PBUcm_sphereModel_t@@@Z
|
||||
// EA : 0x825E62C8
|
||||
// RVA : 0x005E62C8
|
||||
// PDB : w:\tech5\engine\cm\jobs\collisionquery.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionQueryExecute::ExecuteSphereModelQuery(
|
||||
queryResults_t *results,
|
||||
const queryParms_t *parms,
|
||||
const idVec3 *modelJoints,
|
||||
const cm_sphereModel_t *sphereModel)
|
||||
{
|
||||
int v6; // [sp+8h] [-B8h]
|
||||
int v7; // [sp+Ch] [-B4h]
|
||||
int v8; // [sp+10h] [-B0h]
|
||||
int v9; // [sp+14h] [-ACh]
|
||||
int v10; // [sp+18h] [-A8h]
|
||||
|
||||
if ( (unsigned int)(parms->type - 1) <= 8 )
|
||||
{
|
||||
switch ( parms->type )
|
||||
{
|
||||
case TRACE_TRANSLATION_POINT:
|
||||
LABEL_10:
|
||||
idSphereModelCollisionDetection::TraceThroughModel(
|
||||
trace: (trace_t *)results->data,
|
||||
csData: sphereModel,
|
||||
start: &parms->start,
|
||||
end: &parms->end,
|
||||
radius: parms->depth,
|
||||
trmAxis: (const idMat3 *)parms->selfId,
|
||||
modelJoints: (const idJointMat *)&parms->trmAxis,
|
||||
modelOrigin: modelJoints,
|
||||
modelAxis: (const idMat3 *)&parms->modelOrigin,
|
||||
modelEntityNum: v6,
|
||||
modelPhysicsId: v7,
|
||||
modelBodyId: v8,
|
||||
selfId: v9,
|
||||
modelContentsOverride: v10);
|
||||
break;
|
||||
case TRACE_ROTATION:
|
||||
case TRACE_ROTATION_POINT:
|
||||
case TRACE_CONTENTS:
|
||||
case TRACE_CONTENTS_POINT:
|
||||
*(float *)results->data = 1.0;
|
||||
*(idVec3 *)&results->data[4] = parms->end;
|
||||
*(idMat3 *)&results->data[16] = parms->trmAxis;
|
||||
memset(Dst: &results->data[52], Val: 0, Size: 0x4Cu);
|
||||
break;
|
||||
case TRACE_CONTACTS_UNI_DIR:
|
||||
case TRACE_CONTACTS_OMNI_DIR:
|
||||
LABEL_13:
|
||||
*(_DWORD *)results->data = 0;
|
||||
break;
|
||||
case TRACE_TRANSLATION:
|
||||
goto LABEL_10;
|
||||
default:
|
||||
*(_DWORD *)&results->data[4] = 0;
|
||||
goto LABEL_13;
|
||||
}
|
||||
}
|
||||
if ( results->query.status == QUERY_STATUS_PENDING )
|
||||
results->query.status = QUERY_STATUS_SUCCESS;
|
||||
results->query.profile[0] = 0;
|
||||
results->query.profile[1] = 0;
|
||||
results->query.profile[2] = 0;
|
||||
results->query.profile[3] = 0;
|
||||
results->query.profile[4] = 0;
|
||||
results->query.type = parms->type;
|
||||
results->query.done = 1;
|
||||
results->query.merged = parms->autoMerge;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetupDependentParms@idCollisionQueryExecute@@SAXPAUqueryParms_t@@PBU2@PBUqueryResults_t@@W4dependencyType_t@@22@Z
|
||||
// EA : 0x825E6448
|
||||
// RVA : 0x005E6448
|
||||
// PDB : w:\tech5\engine\cm\jobs\collisionquery.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCollisionQueryExecute::SetupDependentParms(
|
||||
queryParms_t *resultParms,
|
||||
const queryParms_t *sourceParms,
|
||||
const queryResults_t *modelPosition,
|
||||
const dependencyType_t dependencyType,
|
||||
const queryResults_t *dependency1,
|
||||
const queryResults_t *dependency2)
|
||||
{
|
||||
unsigned __int8 *data; // r11
|
||||
float *v13; // r10
|
||||
float *v14; // r11
|
||||
float *v15; // r11
|
||||
double v16; // fp10
|
||||
double v17; // fp4
|
||||
double v18; // fp6
|
||||
double v19; // fp2
|
||||
double y; // fp1
|
||||
double x; // fp10
|
||||
double v22; // fp3
|
||||
double v23; // fp2
|
||||
float *v24; // r11
|
||||
float *v25; // r11
|
||||
double v26; // fp4
|
||||
double v27; // fp11
|
||||
double v28; // fp3
|
||||
double v29; // fp10
|
||||
float *v30; // r10
|
||||
double v31; // fp9
|
||||
double v32; // fp8
|
||||
double v33; // fp6
|
||||
double v34; // fp5
|
||||
double z; // fp11
|
||||
double v36; // fp0
|
||||
double v37; // fp3
|
||||
double v38; // fp2
|
||||
double v39; // fp11
|
||||
double v40; // fp10
|
||||
double v41; // fp7
|
||||
double v42; // fp8
|
||||
float *v43; // r11
|
||||
double v44; // fp5
|
||||
double v45; // fp4
|
||||
double v46; // fp11
|
||||
double v47; // fp2
|
||||
double v48; // fp9
|
||||
double v49; // fp8
|
||||
double v50; // fp6
|
||||
double v51; // fp5
|
||||
unsigned __int8 *v52; // r4
|
||||
float *v53; // r11
|
||||
double v54; // fp9
|
||||
double v55; // fp8
|
||||
double v56; // fp5
|
||||
double v57; // fp6
|
||||
double v58; // fp4
|
||||
double v59; // fp3
|
||||
double v60; // fp2
|
||||
double v61; // fp1
|
||||
double v62; // fp11
|
||||
double v63; // fp7
|
||||
double v64; // fp6
|
||||
double v65; // fp9
|
||||
double v66; // fp5
|
||||
double v67; // fp3
|
||||
double v68; // fp2
|
||||
double v69; // fp1
|
||||
double v70; // fp5
|
||||
double v71; // fp4
|
||||
double v72; // fp9
|
||||
double v73; // fp8
|
||||
idMat3 v74[2]; // [sp+50h] [-60h] BYREF
|
||||
|
||||
queryParms_t::operator=(this: resultParms, __that: sourceParms);
|
||||
if ( modelPosition != nullptr )
|
||||
{
|
||||
resultParms->modelOrigin.x = *(float *)&modelPosition->data[4];
|
||||
resultParms->modelOrigin.y = *(float *)&modelPosition->data[8];
|
||||
resultParms->modelOrigin.z = *(float *)&modelPosition->data[12];
|
||||
resultParms->modelAxis.mat[0].x = *(float *)&modelPosition->data[16];
|
||||
resultParms->modelAxis.mat[0].y = *(float *)&modelPosition->data[20];
|
||||
resultParms->modelAxis.mat[0].z = *(float *)&modelPosition->data[24];
|
||||
resultParms->modelAxis.mat[1].x = *(float *)&modelPosition->data[28];
|
||||
resultParms->modelAxis.mat[1].y = *(float *)&modelPosition->data[32];
|
||||
resultParms->modelAxis.mat[1].z = *(float *)&modelPosition->data[36];
|
||||
resultParms->modelAxis.mat[2].x = *(float *)&modelPosition->data[40];
|
||||
resultParms->modelAxis.mat[2].y = *(float *)&modelPosition->data[44];
|
||||
resultParms->modelAxis.mat[2].z = *(float *)&modelPosition->data[48];
|
||||
}
|
||||
data = nullptr;
|
||||
if ( dependency1 != nullptr )
|
||||
data = dependency1->data;
|
||||
v13 = nullptr;
|
||||
if ( dependency2 != nullptr )
|
||||
v13 = (float *)dependency2->data;
|
||||
switch ( dependencyType )
|
||||
{
|
||||
case DEPENDENCY_MOTION_ROTATION:
|
||||
v14 = (float *)(data + 4);
|
||||
resultParms->start.x = *v14;
|
||||
resultParms->start.y = v14[1];
|
||||
resultParms->start.z = v14[2];
|
||||
resultParms->rotationOrigin.x = *v14;
|
||||
resultParms->rotationOrigin.y = v14[1];
|
||||
resultParms->rotationOrigin.z = v14[2];
|
||||
break;
|
||||
case DEPENDENCY_MOTION_CONTACTS:
|
||||
resultParms->start.x = *((float *)data + 1);
|
||||
resultParms->start.y = *((float *)data + 2);
|
||||
resultParms->start.z = *((float *)data + 3);
|
||||
resultParms->trmAxis.mat[0].x = *((float *)data + 4);
|
||||
resultParms->trmAxis.mat[0].y = *((float *)data + 5);
|
||||
resultParms->trmAxis.mat[0].z = *((float *)data + 6);
|
||||
resultParms->trmAxis.mat[1].x = *((float *)data + 7);
|
||||
resultParms->trmAxis.mat[1].y = *((float *)data + 8);
|
||||
resultParms->trmAxis.mat[1].z = *((float *)data + 9);
|
||||
resultParms->trmAxis.mat[2].x = *((float *)data + 10);
|
||||
resultParms->trmAxis.mat[2].y = *((float *)data + 11);
|
||||
resultParms->trmAxis.mat[2].z = *((float *)data + 12);
|
||||
break;
|
||||
case DEPENDENCY_STEPMOVE_STEP_UP:
|
||||
case DEPENDENCY_STEPMOVE_STEP_DOWN:
|
||||
v15 = (float *)(data + 4);
|
||||
resultParms->start.x = *v15;
|
||||
resultParms->start.y = v15[1];
|
||||
resultParms->start.z = v15[2];
|
||||
v16 = v15[2];
|
||||
v17 = (float)(sourceParms->dir.y * sourceParms->depth);
|
||||
v18 = v15[1];
|
||||
v19 = (float)(sourceParms->dir.z * sourceParms->depth);
|
||||
resultParms->end.x = *v15 + (float)(sourceParms->dir.x * sourceParms->depth);
|
||||
resultParms->end.y = (float)v17 + (float)v18;
|
||||
resultParms->end.z = (float)v16 + (float)v19;
|
||||
break;
|
||||
case DEPENDENCY_STEPMOVE_2ND_MOVE:
|
||||
resultParms->start.x = *((float *)data + 1);
|
||||
resultParms->start.y = *((float *)data + 2);
|
||||
resultParms->start.z = *((float *)data + 3);
|
||||
y = sourceParms->end.y;
|
||||
x = sourceParms->end.x;
|
||||
v22 = (float)(sourceParms->dir.x * (float)(sourceParms->depth * *(float *)data));
|
||||
v23 = (float)(sourceParms->dir.y * (float)(sourceParms->depth * *(float *)data));
|
||||
resultParms->end.z = sourceParms->end.z
|
||||
+ (float)(sourceParms->dir.z * (float)(sourceParms->depth * *(float *)data));
|
||||
resultParms->end.x = (float)x + (float)v22;
|
||||
resultParms->end.y = (float)y + (float)v23;
|
||||
break;
|
||||
case DEPENDENCY_STEPMOVE_CONTACTS:
|
||||
case DEPENDENCY_SLIDEMOVE_CONTACTS:
|
||||
v24 = (float *)(data + 4);
|
||||
resultParms->start.x = *v24;
|
||||
resultParms->start.y = v24[1];
|
||||
resultParms->start.z = v24[2];
|
||||
resultParms->end.x = *v24;
|
||||
resultParms->end.y = v24[1];
|
||||
resultParms->end.z = v24[2];
|
||||
break;
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_UP_1:
|
||||
v25 = (float *)(data + 4);
|
||||
resultParms->start.x = *v25;
|
||||
resultParms->start.y = v25[1];
|
||||
resultParms->start.z = v25[2];
|
||||
v26 = (float)(sourceParms->dir.y * sourceParms->depth);
|
||||
v27 = v25[2];
|
||||
v28 = (float)(sourceParms->dir.z * sourceParms->depth);
|
||||
v29 = v25[1];
|
||||
resultParms->end.x = *v25 + (float)(sourceParms->dir.x * sourceParms->depth);
|
||||
resultParms->end.y = (float)v26 + (float)v29;
|
||||
resultParms->end.z = (float)v27 + (float)v28;
|
||||
break;
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_UP_2:
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_UP_3:
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_UP_4:
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_DOWN_2:
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_DOWN_3:
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_DOWN_4:
|
||||
v30 = (float *)(data + 4);
|
||||
resultParms->start.x = *((float *)data + 1);
|
||||
resultParms->start.y = *((float *)data + 2);
|
||||
resultParms->start.z = *((float *)data + 3);
|
||||
if ( (data[124] & 0x20) != 0 )
|
||||
goto LABEL_16;
|
||||
v31 = (float)(sourceParms->dir.y * sourceParms->depth);
|
||||
v32 = (float)(sourceParms->dir.z * sourceParms->depth);
|
||||
v33 = *((float *)data + 2);
|
||||
v34 = *((float *)data + 3);
|
||||
resultParms->end.x = (float)(sourceParms->dir.x * sourceParms->depth) + *v30;
|
||||
resultParms->end.y = (float)v31 + (float)v33;
|
||||
resultParms->end.z = (float)v34 + (float)v32;
|
||||
break;
|
||||
case DEPENDENCY_SLIDEMOVE_2ND_MOVE_1:
|
||||
resultParms->start.x = *((float *)data + 1);
|
||||
resultParms->start.y = *((float *)data + 2);
|
||||
resultParms->start.z = *((float *)data + 3);
|
||||
z = sourceParms->end.z;
|
||||
v36 = sourceParms->end.y;
|
||||
v37 = (float)(sourceParms->dir.y * (float)(sourceParms->depth * *(float *)data));
|
||||
v38 = (float)(sourceParms->dir.z * (float)(sourceParms->depth * *(float *)data));
|
||||
resultParms->end.x = sourceParms->end.x
|
||||
+ (float)(sourceParms->dir.x * (float)(sourceParms->depth * *(float *)data));
|
||||
resultParms->end.y = (float)v36 + (float)v37;
|
||||
resultParms->end.z = (float)z + (float)v38;
|
||||
break;
|
||||
case DEPENDENCY_SLIDEMOVE_2ND_MOVE_2:
|
||||
case DEPENDENCY_SLIDEMOVE_2ND_MOVE_3:
|
||||
case DEPENDENCY_SLIDEMOVE_2ND_MOVE_4:
|
||||
resultParms->start.x = *((float *)data + 1);
|
||||
resultParms->start.y = *((float *)data + 2);
|
||||
resultParms->start.z = *((float *)data + 3);
|
||||
if ( (data[124] & 0x20) != 0 )
|
||||
{
|
||||
resultParms->end.x = *((float *)data + 1);
|
||||
resultParms->end.y = *((float *)data + 2);
|
||||
resultParms->end.z = *((float *)data + 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
v39 = (float)(v13[2] + (float)(v13[18] * v13[20]));
|
||||
v40 = (float)(v13[3] + (float)(v13[19] * v13[20]));
|
||||
v41 = (float)(sourceParms->dir.z * (float)(sourceParms->depth * *(float *)data));
|
||||
v42 = (float)(sourceParms->dir.y * (float)(sourceParms->depth * *(float *)data));
|
||||
resultParms->end.x = (float)((float)(v13[20] * v13[17]) + v13[1])
|
||||
+ (float)(sourceParms->dir.x * (float)(sourceParms->depth * *(float *)data));
|
||||
resultParms->end.z = (float)v40 + (float)v41;
|
||||
resultParms->end.y = (float)v39 + (float)v42;
|
||||
}
|
||||
break;
|
||||
case DEPENDENCY_SLIDEMOVE_STEP_DOWN_1:
|
||||
v43 = (float *)(data + 4);
|
||||
resultParms->start.x = *v43;
|
||||
resultParms->start.y = v43[1];
|
||||
resultParms->start.z = v43[2];
|
||||
v44 = (float)(sourceParms->dir.z * sourceParms->depth);
|
||||
v45 = (float)(sourceParms->dir.x * sourceParms->depth);
|
||||
v46 = *v43;
|
||||
v47 = v43[2];
|
||||
resultParms->end.y = (float)(sourceParms->dir.y * sourceParms->depth) + v43[1];
|
||||
resultParms->end.z = (float)v47 + (float)v44;
|
||||
resultParms->end.x = (float)v45 + (float)v46;
|
||||
break;
|
||||
case DEPENDENCY_SLIDEMOVE_SLIDE:
|
||||
v30 = (float *)(data + 4);
|
||||
resultParms->start.x = *((float *)data + 1);
|
||||
resultParms->start.y = *((float *)data + 2);
|
||||
resultParms->start.z = *((float *)data + 3);
|
||||
if ( (data[124] & 0x20) != 0 )
|
||||
{
|
||||
LABEL_16:
|
||||
resultParms->end.x = *v30;
|
||||
resultParms->end.y = v30[1];
|
||||
resultParms->end.z = v30[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
v48 = (float)(*((float *)data + 18) * *((float *)data + 20));
|
||||
v49 = (float)(*((float *)data + 19) * *((float *)data + 20));
|
||||
v50 = *((float *)data + 2);
|
||||
v51 = *((float *)data + 3);
|
||||
resultParms->end.x = (float)(*((float *)data + 20) * *((float *)data + 17)) + *v30;
|
||||
resultParms->end.y = (float)v48 + (float)v50;
|
||||
resultParms->end.z = (float)v51 + (float)v49;
|
||||
}
|
||||
break;
|
||||
case DEPENDENCY_LOCAL_SPACE:
|
||||
v52 = data + 16;
|
||||
v54 = (float)(sourceParms->start.z * *((float *)data + 10));
|
||||
v55 = (float)(sourceParms->start.x * *((float *)data + 5));
|
||||
v56 = (float)(sourceParms->start.z * *((float *)data + 12));
|
||||
v57 = *((float *)data + 7);
|
||||
v58 = *((float *)data + 8);
|
||||
v59 = *((float *)data + 6);
|
||||
v60 = *((float *)data + 4);
|
||||
v61 = *((float *)data + 11);
|
||||
v62 = *((float *)data + 9);
|
||||
v53 = (float *)(data + 4);
|
||||
v63 = v53[1];
|
||||
v64 = (float)((float)(sourceParms->start.y * (float)v57) + (float)v54);
|
||||
v65 = v53[2];
|
||||
v66 = (float)((float)(sourceParms->start.x * (float)v59) + (float)v56);
|
||||
v67 = (float)((float)(sourceParms->start.z * (float)v61)
|
||||
+ (float)((float)(sourceParms->start.y * (float)v58) + (float)v55));
|
||||
v69 = (float)((float)((float)(sourceParms->start.x * (float)v60) + (float)v64) + *v53);
|
||||
v68 = (float)((float)(sourceParms->start.y * (float)v62) + (float)v66);
|
||||
resultParms->start.x = v69;
|
||||
resultParms->start.y = (float)v67 + (float)v63;
|
||||
resultParms->start.z = (float)v65 + (float)v68;
|
||||
v70 = v53[2];
|
||||
v71 = v53[1];
|
||||
v72 = (float)((float)(*((float *)v52 + 7) * sourceParms->end.z)
|
||||
+ (float)((float)(*((float *)v52 + 1) * sourceParms->end.x)
|
||||
+ (float)(*((float *)v52 + 4) * sourceParms->end.y)));
|
||||
v73 = (float)((float)(*((float *)v52 + 5) * sourceParms->end.y)
|
||||
+ (float)((float)(*((float *)v52 + 8) * sourceParms->end.z)
|
||||
+ (float)(sourceParms->end.x * *((float *)v52 + 2))));
|
||||
resultParms->end.x = (float)((float)(sourceParms->end.x * *(float *)v52)
|
||||
+ (float)((float)(sourceParms->end.y * *((float *)v52 + 3))
|
||||
+ (float)(sourceParms->end.z * *((float *)v52 + 6))))
|
||||
+ *v53;
|
||||
resultParms->end.y = (float)v72 + (float)v71;
|
||||
resultParms->end.z = (float)v70 + (float)v73;
|
||||
resultParms->trmAxis = *idMat3::operator*(this: v74, result: (idMat3 *)v52, a: &sourceParms->trmAxis);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?CopyFrom@contactsResult_t@@QAAXABU1@@Z
|
||||
// EA : 0x825DDB08
|
||||
// RVA : 0x005DDB08
|
||||
// PDB : w:\tech5\engine\cm\jobs\collisionresults.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall contactsResult_t::CopyFrom(contactsResult_t *this, const contactsResult_t *other)
|
||||
{
|
||||
int v2; // r9
|
||||
bool v3; // cr57
|
||||
char *v4; // r10
|
||||
float *p_y; // r11
|
||||
|
||||
v2 = 0;
|
||||
v3 = other->numContacts > 0;
|
||||
this->numContacts = other->numContacts;
|
||||
if ( v3 )
|
||||
{
|
||||
v4 = (char *)&other->pad[2] + 3;
|
||||
p_y = &this->contacts[0].point.y;
|
||||
do
|
||||
{
|
||||
if ( v2 >= 12 )
|
||||
break;
|
||||
++v2;
|
||||
*(p_y - 2) = *(float *)(v4 + 1);
|
||||
*(p_y - 1) = *(float *)(v4 + 5);
|
||||
*p_y = *(float *)((char *)p_y + (char *)other - (char *)this);
|
||||
p_y[1] = *(float *)(v4 + 13);
|
||||
p_y[2] = *(float *)(v4 + 17);
|
||||
p_y[3] = *(float *)(v4 + 21);
|
||||
p_y[4] = *(float *)(v4 + 25);
|
||||
p_y[5] = *(float *)(v4 + 29);
|
||||
p_y[6] = *(float *)(v4 + 33);
|
||||
p_y[7] = *(float *)(v4 + 37);
|
||||
p_y[8] = *(float *)(v4 + 41);
|
||||
p_y[9] = *(float *)(v4 + 45);
|
||||
p_y[10] = *(float *)(v4 + 49);
|
||||
p_y[11] = *(float *)(v4 + 53);
|
||||
p_y[12] = *(float *)(v4 + 57);
|
||||
p_y[13] = *(float *)(v4 + 61);
|
||||
p_y[14] = *(float *)(v4 + 65);
|
||||
p_y[15] = *(float *)(v4 + 69);
|
||||
*((_BYTE *)p_y + 64) = v4[73];
|
||||
*((_BYTE *)p_y + 65) = v4[74];
|
||||
*((_BYTE *)p_y + 66) = v4[75];
|
||||
v4 += 76;
|
||||
*((_BYTE *)p_y + 67) = *v4;
|
||||
p_y += 19;
|
||||
}
|
||||
while ( v2 < this->numContacts );
|
||||
}
|
||||
}
|
||||
|
||||
+216
@@ -0,0 +1,216 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?SetupForSubModel@idModelCheckCounts@@QAAXPBUcm_subModelData_t@@@Z
|
||||
// EA : 0x825E6B78
|
||||
// RVA : 0x005E6B78
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_cache.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idModelCheckCounts::SetupForSubModel(idModelCheckCounts *this, const cm_subModelData_t *subModelData)
|
||||
{
|
||||
unsigned __int8 *v2; // r11
|
||||
unsigned __int8 *v3; // r11
|
||||
|
||||
this->vertexCheckCounts = (unsigned __int8 *)this;
|
||||
v2 = &this->baseCheckCounts[(int)((subModelData->numVertices + 7) & 0xFFFFFFF8) >> 3];
|
||||
this->edgeCheckCounts = v2;
|
||||
v3 = &v2[(int)((subModelData->numEdges + 7) & 0xFFFFFFF8) / 8];
|
||||
this->polygonCheckCounts = v3;
|
||||
this->polytopeCheckCounts = &v3[(int)((subModelData->numPolygons + 7) & 0xFFFFFFF8) >> 3];
|
||||
XMemSet(
|
||||
dest: this,
|
||||
c: 0,
|
||||
count: (((int)((subModelData->numPolytopes + 7) & 0xFFFFFFF8) >> 3)
|
||||
+ ((int)((subModelData->numVertices + 7) & 0xFFFFFFF8) >> 3)
|
||||
+ ((int)((subModelData->numPolygons + 7) & 0xFFFFFFF8) >> 3)
|
||||
+ ((int)((subModelData->numEdges + 7) & 0xFFFFFFF8) >> 3)
|
||||
+ 15)
|
||||
& 0xFFFFFFF0);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Init@idTraceWork@@QAAXXZ
|
||||
// EA : 0x825E6C40
|
||||
// RVA : 0x005E6C40
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_cache.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idTraceWork::Init(idTraceWork *this)
|
||||
{
|
||||
this->numVerts = 0;
|
||||
this->numEdges = 0;
|
||||
this->numPolys = 0;
|
||||
this->contents = 0;
|
||||
this->start.w = 0.0;
|
||||
this->start.z = 0.0;
|
||||
this->start.y = 0.0;
|
||||
this->start.x = 0.0;
|
||||
this->end.w = 0.0;
|
||||
this->end.z = 0.0;
|
||||
this->end.y = 0.0;
|
||||
this->end.x = 0.0;
|
||||
this->dir.w = 0.0;
|
||||
this->dir.z = 0.0;
|
||||
this->dir.y = 0.0;
|
||||
this->dir.x = 0.0;
|
||||
this->negDir.w = 0.0;
|
||||
this->negDir.z = 0.0;
|
||||
this->negDir.y = 0.0;
|
||||
this->negDir.x = 0.0;
|
||||
this->trmTransform.mat[0] = 0.0;
|
||||
this->trmTransform.mat[1] = 0.0;
|
||||
this->trmTransform.mat[2] = 0.0;
|
||||
this->trmTransform.mat[3] = 0.0;
|
||||
this->trmTransform.mat[4] = 0.0;
|
||||
this->trmTransform.mat[5] = 0.0;
|
||||
this->trmTransform.mat[6] = 0.0;
|
||||
this->trmTransform.mat[7] = 0.0;
|
||||
this->trmTransform.mat[8] = 0.0;
|
||||
this->trmTransform.mat[9] = 0.0;
|
||||
this->trmTransform.mat[10] = 0.0;
|
||||
this->trmTransform.mat[11] = 0.0;
|
||||
this->trmBoundsMin.w = 0.0;
|
||||
this->trmBoundsMin.z = 0.0;
|
||||
this->trmBoundsMin.y = 0.0;
|
||||
this->trmBoundsMin.x = 0.0;
|
||||
this->trmBoundsMax.w = 0.0;
|
||||
this->trmBoundsMax.z = 0.0;
|
||||
this->trmBoundsMax.y = 0.0;
|
||||
this->trmBoundsMax.x = 0.0;
|
||||
this->trmExtents.w = 0.0;
|
||||
this->trmExtents.z = 0.0;
|
||||
this->trmExtents.y = 0.0;
|
||||
this->trmExtents.x = 0.0;
|
||||
this->traceBoundsMin.w = 0.0;
|
||||
this->traceBoundsMin.z = 0.0;
|
||||
this->traceBoundsMin.y = 0.0;
|
||||
this->traceBoundsMin.x = 0.0;
|
||||
this->traceBoundsMax.w = 0.0;
|
||||
this->traceBoundsMax.z = 0.0;
|
||||
this->traceBoundsMax.y = 0.0;
|
||||
this->traceBoundsMax.x = 0.0;
|
||||
*(_DWORD *)&this->traceBoundsShort.b[1][1] = 0;
|
||||
*(_DWORD *)&this->traceBoundsShort.b[0][2] = 0;
|
||||
this->traceBoundsShort.b[0][1] = 0;
|
||||
this->traceBoundsShort.b[0][0] = 0;
|
||||
this->heartPlane1.d = 0.0;
|
||||
this->heartPlane1.c = 0.0;
|
||||
this->heartPlane1.b = 0.0;
|
||||
this->heartPlane1.a = 0.0;
|
||||
this->heartPlane2.d = 0.0;
|
||||
this->heartPlane2.c = 0.0;
|
||||
this->heartPlane2.b = 0.0;
|
||||
this->heartPlane2.a = 0.0;
|
||||
this->maxDistFromHeartPlane1 = 0.0;
|
||||
this->maxDistFromHeartPlane2 = 0.0;
|
||||
this->fraction = 0.0;
|
||||
this->angle = 0.0;
|
||||
this->negAngle = 0.0;
|
||||
this->maxTan = 0.0;
|
||||
this->initialTan = 0.0;
|
||||
this->origin.w = 0.0;
|
||||
this->origin.z = 0.0;
|
||||
this->origin.y = 0.0;
|
||||
this->origin.x = 0.0;
|
||||
this->axis.w = 0.0;
|
||||
this->axis.z = 0.0;
|
||||
this->axis.y = 0.0;
|
||||
this->axis.x = 0.0;
|
||||
this->ZAxisTransform.mat[0] = 0.0;
|
||||
this->ZAxisTransform.mat[1] = 0.0;
|
||||
this->ZAxisTransform.mat[2] = 0.0;
|
||||
this->ZAxisTransform.mat[3] = 0.0;
|
||||
this->ZAxisTransform.mat[4] = 0.0;
|
||||
this->ZAxisTransform.mat[5] = 0.0;
|
||||
this->ZAxisTransform.mat[6] = 0.0;
|
||||
this->ZAxisTransform.mat[7] = 0.0;
|
||||
this->ZAxisTransform.mat[8] = 0.0;
|
||||
this->ZAxisTransform.mat[9] = 0.0;
|
||||
this->ZAxisTransform.mat[10] = 0.0;
|
||||
this->ZAxisTransform.mat[11] = 0.0;
|
||||
this->endTransform.mat[0] = 0.0;
|
||||
this->endTransform.mat[1] = 0.0;
|
||||
this->endTransform.mat[2] = 0.0;
|
||||
this->endTransform.mat[3] = 0.0;
|
||||
this->endTransform.mat[4] = 0.0;
|
||||
this->endTransform.mat[5] = 0.0;
|
||||
this->endTransform.mat[6] = 0.0;
|
||||
this->endTransform.mat[7] = 0.0;
|
||||
this->endTransform.mat[8] = 0.0;
|
||||
this->endTransform.mat[9] = 0.0;
|
||||
this->endTransform.mat[10] = 0.0;
|
||||
this->endTransform.mat[11] = 0.0;
|
||||
this->traceType = TRACE_TRANSLATION;
|
||||
this->contactDepth = 0.0;
|
||||
this->isConvex = false;
|
||||
this->quickExit = false;
|
||||
XMemSet(dest: &this->modelCheckCounts, c: 0, count: 0x3A0u);
|
||||
this->modelCheckCounts.checkCount = 0;
|
||||
this->modelCheckCounts.vertexCheckCounts = nullptr;
|
||||
this->modelCheckCounts.edgeCheckCounts = nullptr;
|
||||
this->modelCheckCounts.polygonCheckCounts = nullptr;
|
||||
this->modelCheckCounts.polytopeCheckCounts = nullptr;
|
||||
this->traceResult = nullptr;
|
||||
this->contactsResult = nullptr;
|
||||
this->clipResult = nullptr;
|
||||
this->pad = 0;
|
||||
this->subModelNum = 0;
|
||||
this->polygonSideCache.side = 0;
|
||||
XMemSet(dest: this, c: 0, count: 0x200u);
|
||||
XMemSet(dest: this->edges, c: 0, count: 0x200u);
|
||||
XMemSet(dest: this->polys, c: 0, count: 0x400u);
|
||||
XMemSet(dest: this->vertexPosition, c: 0, count: 0x200u);
|
||||
XMemSet(dest: this->vertexEndPosition, c: 0, count: 0x200u);
|
||||
XMemSet(dest: this->vertexPluecker, c: 0, count: 0x300u);
|
||||
XMemSet(dest: this->edgePluecker, c: 0, count: 0x300u);
|
||||
XMemSet(dest: this->edgeZAxisPluecker, c: 0, count: 0x300u);
|
||||
XMemSet(dest: this->edgeNormal, c: 0, count: 0x200u);
|
||||
XMemSet(dest: this->vertIsUsed, c: 0, count: 0x20u);
|
||||
XMemSet(dest: this->edgeIsUsed, c: 0, count: 0x20u);
|
||||
XMemSet(dest: this->polyIsUsed, c: 0, count: 0x10u);
|
||||
XMemSet(dest: this->polygonEdgeSideCache, c: 0, count: 0x50u);
|
||||
XMemSet(dest: this->polygonVertexSideCache, c: 0, count: 0x50u);
|
||||
XMemSet(dest: this->polygonEdgePlueckerCache, c: 0, count: 0x180u);
|
||||
XMemSet(dest: this->polygonVertexPlueckerCache, c: 0, count: 0x180u);
|
||||
XMemSet(dest: &this->subModelPtrs, c: 0, count: 0x28u);
|
||||
XMemSet(dest: this->profile, c: 0, count: 0x14u);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AllocTraceWork@idPolygonModelCollisionDetection@@SAPAVidTraceWork@@XZ
|
||||
// EA : 0x825E6F90
|
||||
// RVA : 0x005E6F90
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_cache.cpp
|
||||
// ========================================================================
|
||||
|
||||
idTraceWork *__fastcall idPolygonModelCollisionDetection::AllocTraceWork()
|
||||
{
|
||||
idTraceWork *v0; // r31
|
||||
|
||||
v0 = (idTraceWork *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\engine\\cm\\jobs\\polygonmodel\\PolygonModel_cache.cpp(150) : TAG_COLLISION",
|
||||
size: 0x241Cu,
|
||||
tag: TAG_COLLISION,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
idTraceWork::Init(this: v0);
|
||||
return v0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetTraceWorkSPUSize@idPolygonModelCollisionDetection@@SAHXZ
|
||||
// EA : 0x825E6FE8
|
||||
// RVA : 0x005E6FE8
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_cache.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idPolygonModelCollisionDetection::GetTraceWorkSPUSize()
|
||||
{
|
||||
return 9244;
|
||||
}
|
||||
|
||||
+1222
File diff suppressed because it is too large
Load Diff
+1302
File diff suppressed because it is too large
Load Diff
+1246
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,474 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?CM_BoundsPlaneSide@@YAHABVidVec4@@0ABVidPlane@@@Z
|
||||
// EA : 0x825E53C0
|
||||
// RVA : 0x005E53C0
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall CM_BoundsPlaneSide(const idVec4 *boundsMin, const idVec4 *boundsMax, const idPlane *plane)
|
||||
{
|
||||
double v3; // fp4
|
||||
double v4; // fp3
|
||||
double v5; // fp1
|
||||
int result; // r3
|
||||
double v7; // fp13
|
||||
|
||||
v3 = __fabs((float)((float)(boundsMax->x - (float)((float)(boundsMin->x + boundsMax->x) * (float)0.5)) * plane->a));
|
||||
v4 = __fabs((float)((float)(boundsMax->y - (float)((float)(boundsMin->y + boundsMax->y) * (float)0.5)) * plane->b));
|
||||
v5 = __fabs((float)((float)(boundsMax->z - (float)((float)(boundsMin->z + boundsMax->z) * (float)0.5)) * plane->c));
|
||||
if ( (float)((float)((float)((float)(plane->a * (float)((float)(boundsMin->x + boundsMax->x) * (float)0.5))
|
||||
+ (float)((float)(plane->b * (float)((float)(boundsMin->y + boundsMax->y) * (float)0.5))
|
||||
+ (float)(plane->c * (float)((float)(boundsMin->z + boundsMax->z) * (float)0.5))))
|
||||
+ plane->d)
|
||||
- (float)((float)((float)v4 + (float)v3) + (float)v5)) > 0.1 )
|
||||
return 0;
|
||||
v7 = (float)((float)((float)((float)v4 + (float)v3) + (float)v5)
|
||||
+ (float)((float)((float)(plane->a * (float)((float)(boundsMin->x + boundsMax->x) * (float)0.5))
|
||||
+ (float)((float)(plane->b * (float)((float)(boundsMin->y + boundsMax->y) * (float)0.5))
|
||||
+ (float)(plane->c * (float)((float)(boundsMin->z + boundsMax->z) * (float)0.5))))
|
||||
+ plane->d));
|
||||
result = 1;
|
||||
if ( v7 >= -0.1 )
|
||||
return 3;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?CM_BoundsShortPlaneCull@@YA_NABVidBoundsShort@@ABVidPlane@@M@Z
|
||||
// EA : 0x825E5480
|
||||
// RVA : 0x005E5480
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
BOOL __fastcall CM_BoundsShortPlaneCull(
|
||||
const idBoundsShort *bs,
|
||||
const idPlane *plane,
|
||||
double cmpdist,
|
||||
double a4,
|
||||
double a5,
|
||||
double a6,
|
||||
double a7,
|
||||
double a8,
|
||||
double a9,
|
||||
double a10,
|
||||
float a11,
|
||||
float a12,
|
||||
float a13,
|
||||
float a14,
|
||||
float a15,
|
||||
float a16,
|
||||
float a17,
|
||||
float a18)
|
||||
{
|
||||
char v23; // cr56
|
||||
char v24; // cr57
|
||||
char v25; // cr58
|
||||
char v26; // cr59
|
||||
char v27; // r6
|
||||
unsigned __int8 v29; // cr56
|
||||
unsigned __int8 v30; // cr57
|
||||
|
||||
__asm { lvx128 v63, r0, r3 }
|
||||
_R10 = 16;
|
||||
__asm
|
||||
{
|
||||
lvx128 v61, r0, r4
|
||||
vsldoi128 v60, v95, v63, 6
|
||||
}
|
||||
_R9 = &vmx_float_one;
|
||||
__asm { vupkhsh128 v59, v63 }
|
||||
_R8 = 64;
|
||||
_R7 = &a18;
|
||||
__asm
|
||||
{
|
||||
vupkhsh128 v58, v60
|
||||
vcsxwfp128 v57, v59, 0
|
||||
lvx128 v62, r9, r10
|
||||
lvx128 v63, r9, r8
|
||||
vand128 v56, v93, v63
|
||||
lvx128 v63, r0, r9
|
||||
vcsxwfp128 v55, v58, 0
|
||||
lvlx128 v54, r0, r7
|
||||
vspltw128 v53, v54, 0
|
||||
vaddfp128 v52, v89, v55
|
||||
vmulfp128 v51, v84, v62
|
||||
vsubfp128 v50, v87, v51
|
||||
vrlimi128 v51, v63, 1, 0
|
||||
vmsum4fp128 v49, v93, v51
|
||||
vmsum3fp128 v48, v88, v50
|
||||
vaddfp128 v47, v80, v53
|
||||
vcmpgtfp128. v46, v81, v47
|
||||
}
|
||||
v27 = (v23 << 7) | (v24 << 6) | (32 * v25) | (16 * v26);
|
||||
_R5 = 48;
|
||||
__asm
|
||||
{
|
||||
lvx128 v63, r9, r5
|
||||
vxor128 v45, v79, v63
|
||||
vcmpgtfp128. v44, v77, v49
|
||||
}
|
||||
return (((v29 << 7) | (v30 << 6)) & 0x80) != 0 || v27 < 0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''
|
||||
// EA : 0x833360C8
|
||||
// RVA : 0x013360C8
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps__()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''
|
||||
// EA : 0x833360F0
|
||||
// RVA : 0x013360F0
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity__()
|
||||
{
|
||||
vmx_float_posInfinity.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''
|
||||
// EA : 0x83336118
|
||||
// RVA : 0x01336118
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity__()
|
||||
{
|
||||
vmx_float_negInfinity.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''_0
|
||||
// EA : 0x83336140
|
||||
// RVA : 0x01336140
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps___0()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps_0.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''_0
|
||||
// EA : 0x83336168
|
||||
// RVA : 0x01336168
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity___0()
|
||||
{
|
||||
vmx_float_posInfinity_0.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity_0.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity_0.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity_0.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''_0
|
||||
// EA : 0x83336190
|
||||
// RVA : 0x01336190
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity___0()
|
||||
{
|
||||
vmx_float_negInfinity_0.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity_0.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity_0.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity_0.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''_1
|
||||
// EA : 0x833361B8
|
||||
// RVA : 0x013361B8
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps___1()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps_1.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''_1
|
||||
// EA : 0x833361E0
|
||||
// RVA : 0x013361E0
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity___1()
|
||||
{
|
||||
vmx_float_posInfinity_1.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity_1.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity_1.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity_1.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''_1
|
||||
// EA : 0x83336208
|
||||
// RVA : 0x01336208
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity___1()
|
||||
{
|
||||
vmx_float_negInfinity_1.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity_1.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity_1.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity_1.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''_2
|
||||
// EA : 0x83336230
|
||||
// RVA : 0x01336230
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps___2()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps_2.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''_2
|
||||
// EA : 0x83336258
|
||||
// RVA : 0x01336258
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity___2()
|
||||
{
|
||||
vmx_float_posInfinity_2.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity_2.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity_2.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity_2.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''_2
|
||||
// EA : 0x83336280
|
||||
// RVA : 0x01336280
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity___2()
|
||||
{
|
||||
vmx_float_negInfinity_2.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity_2.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity_2.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity_2.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''_3
|
||||
// EA : 0x833362A8
|
||||
// RVA : 0x013362A8
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps___3()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps_3.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''_3
|
||||
// EA : 0x833362D0
|
||||
// RVA : 0x013362D0
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity___3()
|
||||
{
|
||||
vmx_float_posInfinity_3.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity_3.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity_3.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity_3.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''_3
|
||||
// EA : 0x833362F8
|
||||
// RVA : 0x013362F8
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity___3()
|
||||
{
|
||||
vmx_float_negInfinity_3.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity_3.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity_3.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity_3.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''_4
|
||||
// EA : 0x83336320
|
||||
// RVA : 0x01336320
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps___4()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps_4.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''_4
|
||||
// EA : 0x83336348
|
||||
// RVA : 0x01336348
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity___4()
|
||||
{
|
||||
vmx_float_posInfinity_4.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity_4.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity_4.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity_4.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''_4
|
||||
// EA : 0x83336370
|
||||
// RVA : 0x01336370
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity___4()
|
||||
{
|
||||
vmx_float_negInfinity_4.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity_4.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity_4.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity_4.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''_5
|
||||
// EA : 0x83336398
|
||||
// RVA : 0x01336398
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps___5()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps_5.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''_5
|
||||
// EA : 0x833363C0
|
||||
// RVA : 0x013363C0
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity___5()
|
||||
{
|
||||
vmx_float_posInfinity_5.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity_5.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity_5.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity_5.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''_5
|
||||
// EA : 0x833363E8
|
||||
// RVA : 0x013363E8
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity___5()
|
||||
{
|
||||
vmx_float_negInfinity_5.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity_5.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity_5.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity_5.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_firstOnePlusTwoUlps''_6
|
||||
// EA : 0x83336410
|
||||
// RVA : 0x01336410
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_firstOnePlusTwoUlps___6()
|
||||
{
|
||||
vmx_float_firstOnePlusTwoUlps_6.vector4_f32[0] = (float)((float)0.00000011920929 * (float)2.0) + (float)1.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_posInfinity''_6
|
||||
// EA : 0x83336438
|
||||
// RVA : 0x01336438
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_posInfinity___6()
|
||||
{
|
||||
vmx_float_posInfinity_6.vector4_f32[0] = 1.0e30;
|
||||
vmx_float_posInfinity_6.vector4_f32[1] = 1.0e30;
|
||||
vmx_float_posInfinity_6.vector4_f32[2] = 1.0e30;
|
||||
vmx_float_posInfinity_6.vector4_f32[3] = 1.0e30;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'vmx_float_negInfinity''_6
|
||||
// EA : 0x83336460
|
||||
// RVA : 0x01336460
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodel_inline.h
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__vmx_float_negInfinity___6()
|
||||
{
|
||||
vmx_float_negInfinity_6.vector4_f32[0] = -1.0e30;
|
||||
vmx_float_negInfinity_6.vector4_f32[1] = -1.0e30;
|
||||
vmx_float_negInfinity_6.vector4_f32[2] = -1.0e30;
|
||||
vmx_float_negInfinity_6.vector4_f32[3] = -1.0e30;
|
||||
}
|
||||
|
||||
+5197
File diff suppressed because it is too large
Load Diff
+1458
File diff suppressed because it is too large
Load Diff
+2942
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,120 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?CM_GetPolygonPlane@@YAXABUcm_subModelPtrs_t@@ABUcm_polygon_t@@AAVidPlane@@@Z
|
||||
// EA : 0x825BD948
|
||||
// RVA : 0x005BD948
|
||||
// PDB : w:\tech5\engine\cm\jobs\polygonmodel\polygonmodeldata.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall CM_GetPolygonPlane(const cm_subModelPtrs_t *subModel, const cm_polygon_t *polygon, idPlane *plane)
|
||||
{
|
||||
cm_vertex_t *vertices; // r9
|
||||
cm_edge_t *edges; // r10
|
||||
unsigned __int16 *v5; // r11
|
||||
unsigned int v6; // r7
|
||||
unsigned int v7; // r4
|
||||
char *v8; // r11
|
||||
int v9; // r8
|
||||
int v10; // r7
|
||||
float *v11; // r11
|
||||
float *v12; // r10
|
||||
float *v13; // r9
|
||||
double v14; // fp8
|
||||
double v15; // fp7
|
||||
double v16; // fp10
|
||||
double v17; // fp1
|
||||
double v18; // fp5
|
||||
double v19; // fp6
|
||||
double v20; // fp4
|
||||
double v21; // fp2
|
||||
double v22; // fp3
|
||||
double v25; // fp6
|
||||
double v26; // fp9
|
||||
double v27; // fp6
|
||||
double v28; // fp4
|
||||
double v29; // fp3
|
||||
|
||||
vertices = subModel->vertices;
|
||||
edges = subModel->edges;
|
||||
v5 = (unsigned __int16 *)((char *)subModel->polygonEdges + __ROL4__(polygon->firstEdge, 1));
|
||||
v6 = *v5;
|
||||
v7 = v5[1];
|
||||
v8 = (char *)edges + ((4 * v7) & 0xFFFC);
|
||||
v9 = ((2 * v6) & 0x7FFE) + (v6 >> 15);
|
||||
v10 = *(unsigned __int16 *)&v8[(~v7 >> 14) & 2];
|
||||
v11 = (float *)((char *)&vertices->p.x + __ROL4__(*(unsigned __int16 *)&v8[(v7 >> 14) & 2], 4));
|
||||
v12 = (float *)((char *)&vertices->p.x + __ROL4__(edges->vertexNum[v9], 4));
|
||||
v13 = (float *)((char *)&vertices->p.x + __ROL4__(v10, 4));
|
||||
v14 = (float)(v12[2] - v11[2]);
|
||||
v15 = (float)(*v13 - *v11);
|
||||
v16 = (float)(v12[1] - v11[1]);
|
||||
v17 = (float)(v13[1] - v11[1]);
|
||||
v18 = (float)((float)(v13[2] - v11[2]) * (float)(v12[1] - v11[1]));
|
||||
v19 = (float)((float)(v13[1] - v11[1]) * (float)(*v12 - *v11));
|
||||
v20 = (float)((float)((float)(v13[2] - v11[2]) * (float)(*v12 - *v11))
|
||||
- (float)((float)(v12[2] - v11[2]) * (float)(*v13 - *v11)));
|
||||
plane->b = (float)((float)(v13[2] - v11[2]) * (float)(*v12 - *v11))
|
||||
- (float)((float)(v12[2] - v11[2]) * (float)(*v13 - *v11));
|
||||
v21 = (float)((float)((float)v17 * (float)v14) - (float)v18);
|
||||
plane->a = (float)((float)v17 * (float)v14) - (float)v18;
|
||||
v22 = (float)((float)((float)v15 * (float)v16) - (float)v19);
|
||||
plane->c = (float)((float)v15 * (float)v16) - (float)v19;
|
||||
_FP9 = (float)((float)((float)((float)v21 * (float)v21)
|
||||
+ (float)((float)((float)v22 * (float)v22) + (float)((float)v20 * (float)v20)))
|
||||
- idMath::FLT_SMALLEST_NON_DENORMAL);
|
||||
__asm { fsel f8, f9, f10, f13 }
|
||||
v25 = __frsqrte(_FP8);
|
||||
v26 = (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v25
|
||||
* (float)((float)((float)((float)v21 * (float)v21) + (float)((float)((float)v22 * (float)v22) + (float)((float)v20 * (float)v20)))
|
||||
* (float)0.5))
|
||||
* (float)v25)
|
||||
- (float)1.5)
|
||||
* (float)v25)
|
||||
* (float)((float)((float)((float)v21 * (float)v21)
|
||||
+ (float)((float)((float)v22 * (float)v22)
|
||||
+ (float)((float)v20 * (float)v20)))
|
||||
* (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v25
|
||||
* (float)((float)((float)((float)v21 * (float)v21)
|
||||
+ (float)((float)((float)v22 * (float)v22) + (float)((float)v20 * (float)v20)))
|
||||
* (float)0.5))
|
||||
* (float)v25)
|
||||
- (float)1.5)
|
||||
* (float)v25))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v25
|
||||
* (float)((float)((float)((float)v21 * (float)v21)
|
||||
+ (float)((float)((float)v22 * (float)v22)
|
||||
+ (float)((float)v20 * (float)v20)))
|
||||
* (float)0.5))
|
||||
* (float)v25)
|
||||
- (float)1.5)
|
||||
* (float)v25));
|
||||
v27 = (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v25 * (float)((float)((float)((float)v21 * (float)v21) + (float)((float)((float)v22 * (float)v22) + (float)((float)v20 * (float)v20))) * (float)0.5)) * (float)v25) - (float)1.5)
|
||||
* (float)v25)
|
||||
* (float)((float)((float)((float)v21 * (float)v21) + (float)((float)((float)v22 * (float)v22) + (float)((float)v20 * (float)v20)))
|
||||
* (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v25 * (float)((float)((float)((float)v21 * (float)v21) + (float)((float)((float)v22 * (float)v22) + (float)((float)v20 * (float)v20))) * (float)0.5)) * (float)v25) - (float)1.5)
|
||||
* (float)v25))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v25
|
||||
* (float)((float)((float)((float)v21 * (float)v21) + (float)((float)((float)v22 * (float)v22) + (float)((float)v20 * (float)v20))) * (float)0.5))
|
||||
* (float)v25)
|
||||
- (float)1.5)
|
||||
* (float)v25))
|
||||
* (float)((float)((float)((float)v21 * (float)v21)
|
||||
+ (float)((float)((float)v22 * (float)v22)
|
||||
+ (float)((float)v20 * (float)v20)))
|
||||
* (float)0.5))
|
||||
* (float)v26)
|
||||
- (float)1.5)
|
||||
* (float)v26);
|
||||
plane->a = (float)v21 * (float)v27;
|
||||
v28 = (float)((float)v20 * (float)v27);
|
||||
plane->b = v28;
|
||||
v29 = (float)((float)v22 * (float)v27);
|
||||
plane->c = v29;
|
||||
plane->d = -(float)((float)((float)v29 * v11[2])
|
||||
+ (float)((float)(v11[1] * (float)v28) + (float)((float)((float)v21 * (float)v27) * *v11)));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,676 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?SetupCollisionSpherePtrs@idSphereModelCollisionDetection@@SAHPBUcm_sphereModel_t@@AAUcm_sphereModelPtrs_t@@@Z
|
||||
// EA : 0x825F4E10
|
||||
// RVA : 0x005F4E10
|
||||
// PDB : w:\tech5\engine\cm\jobs\spheremodel\spheremodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idSphereModelCollisionDetection::SetupCollisionSpherePtrs(
|
||||
const cm_sphereModel_t *csData,
|
||||
cm_sphereModelPtrs_t *csPtrs)
|
||||
{
|
||||
csPtrs->joint = (unsigned __int8 *)csData + csData->jointOffset;
|
||||
csPtrs->offsetX = (float *)((char *)&csData->totalSize + csData->offsetXOffset);
|
||||
csPtrs->offsetY = (float *)((char *)&csData->totalSize + csData->offsetYOffset);
|
||||
csPtrs->offsetZ = (float *)((char *)&csData->totalSize + csData->offsetZOffset);
|
||||
csPtrs->radius = (float *)((char *)&csData->totalSize + csData->radiusOffset);
|
||||
csPtrs->surfType = (unsigned __int8 *)csData + csData->surfTypeOffset;
|
||||
return csData->numSpheres;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?TraceThroughModel@idSphereModelCollisionDetection@@SAXAAUtrace_t@@PBUcm_sphereModel_t@@ABVidVec3@@2MABVidMat3@@PBVidJointMat@@23HHHHH@Z
|
||||
// EA : 0x825F4E60
|
||||
// RVA : 0x005F4E60
|
||||
// PDB : w:\tech5\engine\cm\jobs\spheremodel\spheremodel.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idSphereModelCollisionDetection::TraceThroughModel(
|
||||
trace_t *trace,
|
||||
const cm_sphereModel_t *csData,
|
||||
const idVec3 *start,
|
||||
const idVec3 *end,
|
||||
double radius,
|
||||
const idMat3 *trmAxis,
|
||||
const idJointMat *modelJoints,
|
||||
const idVec3 *modelOrigin,
|
||||
const idMat3 *modelAxis,
|
||||
double a10,
|
||||
double a11,
|
||||
double a12,
|
||||
double a13,
|
||||
double a14,
|
||||
double a15,
|
||||
double a16,
|
||||
int modelEntityNum,
|
||||
int modelPhysicsId,
|
||||
int modelBodyId,
|
||||
int selfId,
|
||||
int modelContentsOverride,
|
||||
int a22,
|
||||
int a23,
|
||||
int a24,
|
||||
int a25,
|
||||
int a26,
|
||||
int a27,
|
||||
float a28,
|
||||
int a29,
|
||||
int a30,
|
||||
int a31,
|
||||
int a32,
|
||||
int a33,
|
||||
int a34,
|
||||
int a35,
|
||||
float *a36,
|
||||
int a37,
|
||||
int a38,
|
||||
int a39,
|
||||
int a40,
|
||||
int a41,
|
||||
int a42,
|
||||
int a43,
|
||||
const idMat3 *modelAxis_0,
|
||||
int a45,
|
||||
int modelEntityNuma)
|
||||
{
|
||||
idVec3 *p_endpos; // r22
|
||||
int numSpheres; // r25
|
||||
int offsetXOffset; // r10
|
||||
int jointOffset; // r11
|
||||
int offsetYOffset; // r7
|
||||
int offsetZOffset; // r4
|
||||
int radiusOffset; // r3
|
||||
int surfTypeOffset; // r26
|
||||
char *v70; // r28
|
||||
char *v71; // r5
|
||||
char *v73; // r7
|
||||
char *v74; // r4
|
||||
char *v75; // r3
|
||||
char *v76; // r26
|
||||
char v77; // cr56
|
||||
int v81; // r10
|
||||
unsigned int v83; // r11
|
||||
unsigned int v85; // r26
|
||||
unsigned int v91; // ctr
|
||||
unsigned __int8 v100; // cr56
|
||||
unsigned __int8 v101; // cr57
|
||||
int v102; // r9
|
||||
int v104; // r24
|
||||
double v105; // fp5
|
||||
float *v107; // r11
|
||||
double v108; // fp29
|
||||
double v109; // fp1
|
||||
double v110; // fp11
|
||||
double v111; // fp4
|
||||
double v112; // fp5
|
||||
double v113; // fp10
|
||||
int contents; // r7
|
||||
double v115; // fp13
|
||||
bool v116; // cr58
|
||||
double z; // fp6
|
||||
double y; // fp8
|
||||
double v121; // fp12
|
||||
double v122; // fp11
|
||||
double v123; // fp1
|
||||
double v124; // fp0
|
||||
int v125; // r11
|
||||
int v126; // r8
|
||||
int v127; // r7
|
||||
int v128; // r6
|
||||
const idMat3 *v129; // r5
|
||||
int v130; // r4
|
||||
int v131; // [sp+50h] [-140h] BYREF
|
||||
float v132; // [sp+54h] [-13Ch] BYREF
|
||||
char *v133; // [sp+64h] [-12Ch]
|
||||
char *v134; // [sp+68h] [-128h]
|
||||
char *v135; // [sp+6Ch] [-124h]
|
||||
char *v136; // [sp+70h] [-120h]
|
||||
char *v137; // [sp+74h] [-11Ch]
|
||||
|
||||
a28 = radius;
|
||||
p_endpos = &trace->endpos;
|
||||
_R21 = start;
|
||||
trace->fraction = 1.0;
|
||||
trace->endpos = *end;
|
||||
_R27 = end;
|
||||
trace->endAxis.mat[0].x = modelJoints->mat[0];
|
||||
trace->endAxis.mat[0].y = modelJoints->mat[1];
|
||||
_R20 = modelAxis;
|
||||
trace->endAxis.mat[0].z = modelJoints->mat[2];
|
||||
trace->endAxis.mat[1] = *(idVec3 *)&modelJoints->mat[3];
|
||||
trace->endAxis.mat[2] = *(idVec3 *)&modelJoints->mat[6];
|
||||
memset(Dst: &trace->c, Val: 0, Size: sizeof(trace->c));
|
||||
_R9 = 16;
|
||||
_R8 = a36;
|
||||
numSpheres = csData->numSpheres;
|
||||
_R4 = 12;
|
||||
__asm { lvlx128 v63, r0, r20 }
|
||||
_R3 = 40;
|
||||
__asm { lvlx128 v61, r0, r21 }
|
||||
_R28 = 24;
|
||||
offsetXOffset = csData->offsetXOffset;
|
||||
_R5 = 28;
|
||||
__asm { lvrx128 v60, r9, r20 }
|
||||
_R6 = vmxi_word_four;
|
||||
jointOffset = csData->jointOffset;
|
||||
_R24 = -48;
|
||||
__asm
|
||||
{
|
||||
lvlx128 v55, r4, r8
|
||||
lvrx128 v54, r3, r8
|
||||
vor128 v59, v95, v60
|
||||
lvlx128 v53, r28, r8
|
||||
}
|
||||
offsetYOffset = csData->offsetYOffset;
|
||||
__asm { lvrx128 v58, r9, r8 }
|
||||
offsetZOffset = csData->offsetZOffset;
|
||||
__asm { lvlx128 v57, r0, r8 }
|
||||
radiusOffset = csData->radiusOffset;
|
||||
__asm { lvrx128 v56, r5, r8 }
|
||||
surfTypeOffset = csData->surfTypeOffset;
|
||||
__asm
|
||||
{
|
||||
lvrx128 v52, r9, r21
|
||||
vspltisw128 v63, 0
|
||||
lvx128 v62, r6, r24
|
||||
}
|
||||
v132 = *(float *)&numSpheres;
|
||||
__asm
|
||||
{
|
||||
lvlx128 v51, r0, r27
|
||||
vor128 v50, v89, v58
|
||||
vor128 v49, v87, v56
|
||||
}
|
||||
v70 = (char *)csData + jointOffset;
|
||||
__asm
|
||||
{
|
||||
vor128 v48, v85, v54
|
||||
lvrx128 v45, r9, r27
|
||||
vor128 v47, v93, v52
|
||||
vor128 v43, v83, v45
|
||||
}
|
||||
__asm { vand128 v46, v91, v62 }
|
||||
v71 = (char *)csData + offsetXOffset;
|
||||
__asm { vand128 v42, v82, v62 }
|
||||
_R11 = &vmx_float_smallest_non_denorm;
|
||||
__asm { vand128 v44, v79, v62 }
|
||||
v73 = (char *)csData + offsetYOffset;
|
||||
__asm { vand128 v38, v75, v62 }
|
||||
v74 = (char *)csData + offsetZOffset;
|
||||
__asm { vand128 v41, v81, v62 }
|
||||
v75 = (char *)csData + radiusOffset;
|
||||
__asm { vand128 v39, v80, v62 }
|
||||
v76 = (char *)csData + surfTypeOffset;
|
||||
__asm
|
||||
{
|
||||
vsubfp128 v40, v76, v46
|
||||
lvx128 v60, r0, r11
|
||||
vsubfp128 v37, v70, v46
|
||||
}
|
||||
v133 = (char *)csData + offsetXOffset;
|
||||
v134 = v73;
|
||||
v135 = v74;
|
||||
v136 = v75;
|
||||
v137 = v76;
|
||||
__asm
|
||||
{
|
||||
vmulfp128 v36, v74, v40
|
||||
vmulfp128 v35, v73, v40
|
||||
vmulfp128 v34, v71, v40
|
||||
vmulfp128 v33, v74, v37
|
||||
vmulfp128 v32, v73, v37
|
||||
vmulfp128 v62, v71, v37
|
||||
vmrghw128 v61, v67, v63
|
||||
vmrghw128 v59, v68, v34
|
||||
vmrglw128 v57, v68, v34
|
||||
vmrghw128 v56, v64, v63
|
||||
vmrghw128 v55, v65, v62
|
||||
vmrglw128 v54, v91, v61
|
||||
vmrghw128 v53, v91, v61
|
||||
vmrglw128 v58, v67, v63
|
||||
vmrglw128 v51, v87, v56
|
||||
vmrghw128 v50, v87, v56
|
||||
vaddfp128 v49, v85, v54
|
||||
vmrglw128 v52, v64, v63
|
||||
vmrglw128 v48, v65, v62
|
||||
vmrghw128 v47, v89, v58
|
||||
vaddfp128 v46, v82, v51
|
||||
vmrghw128 v45, v80, v52
|
||||
vaddfp128 v44, v81, v47
|
||||
vaddfp128 v43, v78, v45
|
||||
vspltw128 v56, v44, 0
|
||||
vspltw128 v55, v44, 1
|
||||
vspltw128 v54, v44, 2
|
||||
vsubfp128 v42, v75, v44
|
||||
vmulfp128 v41, v74, v42
|
||||
vspltw128 v29, v42, 0
|
||||
vspltw128 v28, v42, 1
|
||||
vspltw128 v53, v42, 2
|
||||
vspltw128 v40, v41, 1
|
||||
vspltw128 v39, v41, 0
|
||||
vspltw128 v38, v41, 2
|
||||
vaddfp128 v37, v71, v40
|
||||
vaddfp128 v61, v69, v38
|
||||
vcmpgtfp128. v36, v93, v60
|
||||
}
|
||||
if ( v77 != 0 )
|
||||
{
|
||||
__asm { vrefp128 v35, v61 }
|
||||
_R24 = -16;
|
||||
_R11 = -32;
|
||||
_R23 = -112;
|
||||
v81 = 0;
|
||||
__asm
|
||||
{
|
||||
lvx128 v27, r6, r24
|
||||
lvx128 v6, r6, r11
|
||||
vmr v9, v27
|
||||
lvx128 v7, r6, r23
|
||||
vmulfp128 v34, v93, v35
|
||||
vaddfp128 v33, v67, v35
|
||||
vmulfp128 v32, v66, v35
|
||||
vsubfp128 v62, v65, v32
|
||||
}
|
||||
if ( numSpheres > 0 )
|
||||
{
|
||||
__asm { lvx128 v30, r0, r6 }
|
||||
v83 = (unsigned int)(numSpheres - 1) >> 2;
|
||||
_R25 = &a28;
|
||||
_R16 = v71 - v73;
|
||||
v85 = v83 + 1;
|
||||
_R15 = v74 - v73;
|
||||
_R14 = v75 - v73;
|
||||
__asm { lvlx128 v59, r0, r25 }
|
||||
_R11 = v73;
|
||||
_R7 = -96;
|
||||
__asm { vspltw128 v57, v59, 0 }
|
||||
_R5 = -80;
|
||||
v91 = v85;
|
||||
_R4 = -64;
|
||||
__asm { lvx128 v31, r6, r7 }
|
||||
__asm { lvx128 v59, r6, r5 }
|
||||
_R3 = 32;
|
||||
__asm { lvx128 v58, r6, r4 }
|
||||
do
|
||||
{
|
||||
__asm { lvx128 v52, r14, r11 }
|
||||
__asm { vaddfp128 v51, v84, v57 }
|
||||
__asm { lvx128 v0, r16, r11 }
|
||||
__asm { lvx128 v13, r0, r11 }
|
||||
__asm { lvx128 v12, r15, r11 }
|
||||
_R7 = (char *)modelOrigin + 16 * (unsigned __int8)v70[v81] + 16 * __ROL4__((unsigned __int8)v70[v81], 1);
|
||||
_R6 = (char *)modelOrigin + 16 * (unsigned __int8)v70[v81 + 1] + 16 * __ROL4__((unsigned __int8)v70[v81 + 1], 1);
|
||||
_R5 = (char *)modelOrigin + 16 * (unsigned __int8)v70[v81 + 2] + 16 * __ROL4__((unsigned __int8)v70[v81 + 2], 1);
|
||||
_R4 = (char *)modelOrigin + 16 * (unsigned __int8)v70[v81 + 3] + 16 * __ROL4__((unsigned __int8)v70[v81 + 3], 1);
|
||||
v81 += 4;
|
||||
__asm { lvx128 v50, r0, r7 }
|
||||
_R11 += 16;
|
||||
__asm
|
||||
{
|
||||
lvx128 v49, r0, r6
|
||||
lvx128 v48, r0, r5
|
||||
lvx128 v47, r0, r4
|
||||
lvx128 v46, r7, r9
|
||||
vmrghw128 v45, v82, v48
|
||||
lvx128 v44, r6, r9
|
||||
vmrglw128 v43, v82, v48
|
||||
lvx128 v42, r5, r9
|
||||
vmrghw128 v41, v81, v47
|
||||
lvx128 v40, r4, r9
|
||||
vmrglw128 v39, v81, v47
|
||||
lvx128 v38, r7, r3
|
||||
vmrghw128 v37, v78, v42
|
||||
lvx128 v36, r6, r3
|
||||
vmrglw128 v35, v78, v42
|
||||
lvx128 v34, r5, r3
|
||||
vmrghw128 v33, v76, v40
|
||||
lvx128 v32, r4, r3
|
||||
vmrglw128 v52, v76, v40
|
||||
vmrghw128 v50, v70, v34
|
||||
vmrglw128 v49, v70, v34
|
||||
vmrghw128 v48, v68, v32
|
||||
vmrglw128 v47, v68, v32
|
||||
vmrglw128 v10, v75, v39
|
||||
vmrghw128 v11, v77, v41
|
||||
vmrglw128 v5, v67, v52
|
||||
vmrghw128 v8, v69, v33
|
||||
vmrglw128 v3, v81, v47
|
||||
vmrghw128 v4, v82, v48
|
||||
vmaddfp v11, v11, v10, v0
|
||||
vmrglw128 v2, v77, v41
|
||||
vmaddfp v10, v8, v5, v0
|
||||
vmrglw128 v8, v69, v33
|
||||
vmrglw128 v5, v82, v48
|
||||
vmaddfp v0, v4, v3, v0
|
||||
vmrghw128 v4, v75, v39
|
||||
vmrghw128 v3, v67, v52
|
||||
vmrghw128 v1, v81, v47
|
||||
vmaddfp v11, v2, v11, v13
|
||||
vmaddfp v10, v8, v10, v13
|
||||
vmr v8, v6
|
||||
vmaddfp v0, v5, v0, v13
|
||||
vmaddfp v13, v4, v11, v12
|
||||
vmaddfp v11, v3, v10, v12
|
||||
vor128 v10, v93, v61
|
||||
vmaddfp v12, v1, v0, v12
|
||||
vsubfp128 v0, v88, v13
|
||||
vsubfp128 v13, v87, v11
|
||||
vor128 v11, v83, v51
|
||||
vsubfp128 v46, v86, v12
|
||||
vor128 v12, v83, v51
|
||||
vmulfp128 v5, v85, v46
|
||||
vmulfp128 v4, v78, v46
|
||||
vmaddfp v5, v28, v5, v13
|
||||
vaddsws v6, v6, v30
|
||||
vmaddfp v13, v13, v4, v13
|
||||
vmaddfp v5, v29, v5, v0
|
||||
vmaddfp v0, v0, v13, v0
|
||||
vmulfp128 v13, v5, v5
|
||||
vxor128 v45, v5, v58
|
||||
vnmsubfp v0, v12, v0, v11
|
||||
vnmsubfp v13, v0, v13, v10
|
||||
vmaxfp128 v44, v13, v60
|
||||
vcmpgtfp128 v43, v13, v63
|
||||
vrsqrtefp128 v0, v44
|
||||
vmulfp128 v13, v76, v0
|
||||
vmulfp128 v42, v0, v59
|
||||
vmaddfp v0, v13, v31, v0
|
||||
vmulfp128 v41, v74, v0
|
||||
vmulfp128 v40, v73, v44
|
||||
vaddfp128 v39, v77, v40
|
||||
vsubfp128 v38, v77, v40
|
||||
vmulfp128 v37, v71, v62
|
||||
vmulfp128 v36, v70, v62
|
||||
vminfp128 v35, v69, v36
|
||||
vmulfp128 v34, v69, v36
|
||||
vcmpgefp128 v33, v67, v63
|
||||
vor128 v0, v67, v35
|
||||
vcmpgefp128 v32, v67, v7
|
||||
vcmpgtfp128 v52, v95, v34
|
||||
vand128 v51, v75, v33
|
||||
vandc128 v50, v83, v32
|
||||
vor128 v13, v82, v52
|
||||
vsel v12, v9, v8, v13
|
||||
vsel v13, v7, v0, v13
|
||||
vmr v9, v12
|
||||
vmr v7, v13
|
||||
}
|
||||
--v91;
|
||||
}
|
||||
while ( v91 != 0 );
|
||||
v76 = v137;
|
||||
v75 = v136;
|
||||
v74 = v135;
|
||||
v73 = v134;
|
||||
v71 = v133;
|
||||
*(float *)&numSpheres = v132;
|
||||
}
|
||||
__asm { vpermwi128 v49, v7, 0x4E # 'N' }
|
||||
_R11 = &v131;
|
||||
__asm { vpermwi128 v13, v9, 0x4E # 'N' }
|
||||
_R10 = &v132;
|
||||
__asm
|
||||
{
|
||||
vminfp128 v48, v7, v49
|
||||
vcmpgtfp128 v12, v7, v49
|
||||
vpermwi128 v47, v48, 0xB1
|
||||
vsel v12, v9, v13, v12
|
||||
vcmpgtfp128 v11, v80, v47
|
||||
vminfp128 v46, v80, v47
|
||||
vpermwi128 v13, v12, 0xB1
|
||||
vsel v0, v12, v13, v11
|
||||
stvewx v0, 0, r11
|
||||
vcmpgtsw. v0, v0, v27
|
||||
stvewx128 v46, r0, r10
|
||||
}
|
||||
if ( (((v100 << 7) | (v101 << 6)) & 0x80) != 0 )
|
||||
{
|
||||
v102 = v131;
|
||||
_FP0 = v132;
|
||||
v104 = 4 * v131;
|
||||
v105 = *(float *)&v74[4 * v131];
|
||||
__asm { fsel f2, f0, f0, f13 }
|
||||
v107 = &modelOrigin->x + 4 * (unsigned __int8)v70[v131] + 4 * __ROL4__((unsigned __int8)v70[v131], 1);
|
||||
v108 = (float)(_R21->x + (float)((float)(_R27->x - _R21->x) * (float)_FP2));
|
||||
v109 = (float)(_R21->z + (float)((float)(_R27->z - _R21->z) * (float)_FP2));
|
||||
v110 = (float)(_R21->y + (float)((float)(_R27->y - _R21->y) * (float)_FP2));
|
||||
v111 = (float)((float)(_R21->z + (float)((float)(_R27->z - _R21->z) * (float)_FP2))
|
||||
- (float)(_R20->mat[0].z
|
||||
+ (float)((float)(a36[2]
|
||||
* (float)((float)((float)(*v107 * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[2] * (float)v105)
|
||||
+ (float)(v107[1] * *(float *)&v73[4 * v131])))
|
||||
+ v107[3]))
|
||||
+ (float)((float)(a36[8]
|
||||
* (float)((float)((float)(v107[8] * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[10] * (float)v105)
|
||||
+ (float)(v107[9] * *(float *)&v73[4 * v131])))
|
||||
+ v107[11]))
|
||||
+ (float)(a36[5]
|
||||
* (float)((float)((float)(v107[4] * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[6] * (float)v105)
|
||||
+ (float)(v107[5] * *(float *)&v73[4 * v131])))
|
||||
+ v107[7]))))));
|
||||
v113 = (float)((float)(_R21->x + (float)((float)(_R27->x - _R21->x) * (float)_FP2))
|
||||
- (float)(_R20->mat[0].x
|
||||
+ (float)((float)(*a36
|
||||
* (float)((float)((float)(*v107 * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[2] * (float)v105)
|
||||
+ (float)(v107[1] * *(float *)&v73[4 * v131])))
|
||||
+ v107[3]))
|
||||
+ (float)((float)(a36[6]
|
||||
* (float)((float)((float)(v107[8] * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[10] * (float)v105)
|
||||
+ (float)(v107[9] * *(float *)&v73[4 * v131])))
|
||||
+ v107[11]))
|
||||
+ (float)(a36[3]
|
||||
* (float)((float)((float)(v107[4] * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[6] * (float)v105)
|
||||
+ (float)(v107[5] * *(float *)&v73[4 * v131])))
|
||||
+ v107[7]))))));
|
||||
v112 = (float)((float)(_R21->y + (float)((float)(_R27->y - _R21->y) * (float)_FP2))
|
||||
- (float)(_R20->mat[0].y
|
||||
+ (float)((float)(a36[1]
|
||||
* (float)((float)((float)(*v107 * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[2] * (float)v105)
|
||||
+ (float)(v107[1] * *(float *)&v73[4 * v131])))
|
||||
+ v107[3]))
|
||||
+ (float)((float)(a36[7]
|
||||
* (float)((float)((float)(v107[8] * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[10] * (float)v105)
|
||||
+ (float)(v107[9] * *(float *)&v73[4 * v131])))
|
||||
+ v107[11]))
|
||||
+ (float)(a36[4]
|
||||
* (float)((float)((float)(v107[4] * *(float *)&v71[4 * v131])
|
||||
+ (float)((float)(v107[6] * (float)v105)
|
||||
+ (float)(v107[5] * *(float *)&v73[4 * v131])))
|
||||
+ v107[7]))))));
|
||||
contents = modelEntityNuma;
|
||||
v115 = idMath::FLT_SMALLEST_NON_DENORMAL;
|
||||
v116 = modelEntityNuma == 0;
|
||||
trace->fraction = _FP2;
|
||||
p_endpos->z = v109;
|
||||
p_endpos->y = v110;
|
||||
p_endpos->x = v108;
|
||||
trace->c.type = CONTACT_SPHERE;
|
||||
z = p_endpos->z;
|
||||
y = p_endpos->y;
|
||||
_FP3 = (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112)))
|
||||
- (float)v115);
|
||||
__asm { fsel f13, f3, f7, f13 }
|
||||
v121 = __frsqrte(_FP13);
|
||||
v122 = (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121
|
||||
* (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5))
|
||||
* (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121)
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111)
|
||||
+ (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v121
|
||||
* (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111)
|
||||
+ (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121));
|
||||
v123 = (float)((float)v113
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111)
|
||||
+ (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122));
|
||||
v124 = (float)((float)v112
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111)
|
||||
+ (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122));
|
||||
trace->c.point.x = p_endpos->x
|
||||
- (float)((float)((float)v113
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121)) - (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122))
|
||||
* (float)radius);
|
||||
trace->c.point.z = (float)z
|
||||
- (float)((float)((float)v111
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121)) - (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122))
|
||||
* (float)radius);
|
||||
trace->c.point.y = (float)y
|
||||
- (float)((float)((float)v112
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121)) - (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122))
|
||||
* (float)radius);
|
||||
trace->c.normal.z = (float)v111
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111
|
||||
* (float)v111)
|
||||
+ (float)((float)v112
|
||||
* (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122);
|
||||
trace->c.normal.x = (float)v113
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111
|
||||
* (float)v111)
|
||||
+ (float)((float)v112
|
||||
* (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122);
|
||||
trace->c.normal.y = (float)v112
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5))
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121))
|
||||
- (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121)
|
||||
- (float)1.5)
|
||||
* (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113)
|
||||
+ (float)((float)((float)v111
|
||||
* (float)v111)
|
||||
+ (float)((float)v112
|
||||
* (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122);
|
||||
trace->c.dist = (float)((float)v123 * trace->c.point.x)
|
||||
+ (float)((float)((float)((float)v111
|
||||
* (float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121) * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121)) - (float)1.5)
|
||||
* (float)((float)-(float)((float)((float)((float)v121 * (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112))) * (float)0.5)) * (float)v121) - (float)1.5) * (float)v121))
|
||||
* (float)((float)((float)((float)v113 * (float)v113) + (float)((float)((float)v111 * (float)v111) + (float)((float)v112 * (float)v112)))
|
||||
* (float)0.5))
|
||||
* (float)v122)
|
||||
- (float)1.5)
|
||||
* (float)v122))
|
||||
* trace->c.point.z)
|
||||
+ (float)((float)v124 * trace->c.point.y));
|
||||
trace->c.separation = *(float *)&v75[v104];
|
||||
if ( v116 )
|
||||
contents = csData->contents;
|
||||
v125 = numSpheres - 1;
|
||||
trace->c.contentFlags = contents;
|
||||
trace->c.surfaceType = (unsigned __int8)v76[v102];
|
||||
trace->c.surfaceFlags = 0;
|
||||
if ( v102 < numSpheres - 1 )
|
||||
v125 = v102;
|
||||
v126 = a38;
|
||||
v127 = a40;
|
||||
v128 = a42;
|
||||
v129 = modelAxis_0;
|
||||
trace->c.modelFeature = v125;
|
||||
v130 = (unsigned __int8)v70[v102];
|
||||
trace->c.entityNum = v126;
|
||||
trace->c.physicsId = v127;
|
||||
trace->c.bodyId = v128;
|
||||
trace->c.selfId = (int)v129;
|
||||
trace->c.trmFeature = v130;
|
||||
trace->c.flags = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,948 @@
|
||||
|
||||
// ========================================================================
|
||||
// ArgCompletion_MTL
|
||||
// EA : 0x825F6780
|
||||
// RVA : 0x005F6780
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall ArgCompletion_MTL(idAutoComplete *autoComplete)
|
||||
{
|
||||
cmdSystem->ArgCompletion_FolderExtension(this: cmdSystem, a2: autoComplete, a3: "/", a4: "mtl", a5: false);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ParseVec3
|
||||
// EA : 0x825F6950
|
||||
// RVA : 0x005F6950
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
idVec3 *__fastcall ParseVec3(idVec3 *result, idLexer *src)
|
||||
{
|
||||
char *data; // r3
|
||||
double x; // fp0
|
||||
idStr v6[2]; // [sp+50h] [-50h] BYREF
|
||||
|
||||
v6[0].len = 0;
|
||||
v6[0].allocedAndFlag = 20;
|
||||
v6[0].data = v6[0].baseBuffer;
|
||||
v6[0].baseBuffer[0] = 0;
|
||||
idLexer::ParseRestOfLine(this: src, out: v6);
|
||||
data = v6[0].data;
|
||||
result->x = 0.0;
|
||||
result->y = 0.0;
|
||||
result->z = 0.0;
|
||||
if ( sscanf(string: data, format: "%f %f %f", result, &result->y, &result->z) == 1 )
|
||||
{
|
||||
x = result->x;
|
||||
result->z = result->x;
|
||||
result->y = x;
|
||||
}
|
||||
idStr::FreeData(this: v6);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$220407
|
||||
// EA : 0x825F69EC
|
||||
// RVA : 0x005F69EC
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_220407()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 160 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?ExtractFinalFilename@@YA?AVidStr@@QBD@Z
|
||||
// EA : 0x825F6F28
|
||||
// RVA : 0x005F6F28
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
idStr *__fastcall ExtractFinalFilename(idStr *result, const char *str)
|
||||
{
|
||||
int v3; // r29
|
||||
const char *v4; // r11
|
||||
int v5; // r10
|
||||
int i; // r11
|
||||
const char *v7; // r30
|
||||
unsigned int allocedAndFlag; // r11
|
||||
int v9; // r4
|
||||
int v10; // r11
|
||||
bool v11; // zf
|
||||
char *v12; // r10
|
||||
char *v13; // r9
|
||||
char v14; // r11
|
||||
|
||||
v3 = 0;
|
||||
v4 = str;
|
||||
do
|
||||
v5 = *(unsigned __int8 *)v4++;
|
||||
while ( v5 != 0 );
|
||||
for ( i = v4 - str - 2; i >= 0; --i )
|
||||
{
|
||||
if ( str[i] <= 32 )
|
||||
break;
|
||||
}
|
||||
result->len = 0;
|
||||
result->allocedAndFlag = 20;
|
||||
v7 = &str[i + 1];
|
||||
result->data = result->baseBuffer;
|
||||
result->baseBuffer[0] = 0;
|
||||
if ( &str[i] != (const char *)-1 )
|
||||
{
|
||||
if ( *v7 != 0 )
|
||||
{
|
||||
do
|
||||
++v3;
|
||||
while ( v7[v3] != 0 );
|
||||
}
|
||||
allocedAndFlag = result->allocedAndFlag;
|
||||
v9 = v3 + 1;
|
||||
v11 = allocedAndFlag >> 31 == 0;
|
||||
v10 = allocedAndFlag & 0x7FFFFFFF;
|
||||
if ( v11 )
|
||||
{
|
||||
if ( v9 > v10 )
|
||||
idStr::ReAllocate(this: result, amount: v9, keepold: true);
|
||||
}
|
||||
else if ( v9 > v10
|
||||
&& AssertFailed(
|
||||
file: "w:\\tech5\\shared\\idlib\\text/Str.h",
|
||||
line: 463,
|
||||
expression: "amount <= GetAlloced()",
|
||||
inlineBreak: true) )
|
||||
{
|
||||
__trap();
|
||||
}
|
||||
v12 = (char *)(v7 - 1);
|
||||
v13 = result->data - 1;
|
||||
do
|
||||
{
|
||||
v14 = *++v12;
|
||||
*++v13 = *v12;
|
||||
}
|
||||
while ( v14 != 0 );
|
||||
result->len = v3;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?StripBaseDirFromFilename@@YA?AVidStr@@QBD@Z
|
||||
// EA : 0x825F7050
|
||||
// RVA : 0x005F7050
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
idStr *__fastcall StripBaseDirFromFilename(idStr *result, const char *str)
|
||||
{
|
||||
char *v4; // r3
|
||||
const char *v5; // r4
|
||||
|
||||
v4 = strstr(str1: str, str2: "base/");
|
||||
if ( v4 != nullptr || (v4 = strstr(str1: str, str2: "base\\"), v5 = str, v4 != nullptr) )
|
||||
v5 = v4 + 5;
|
||||
idStr::idStr(this: result, text: v5);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?TestExtractFinalFilename_f@@YAXABVidCmdArgs@@@Z
|
||||
// EA : 0x825F70D0
|
||||
// RVA : 0x005F70D0
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall TestExtractFinalFilename_f(const idCmdArgs *args)
|
||||
{
|
||||
const char *v1; // r4
|
||||
idStr v2; // [sp+50h] [-60h] BYREF
|
||||
idStr v3; // [sp+70h] [-40h] BYREF
|
||||
|
||||
if ( args->argc <= 1 )
|
||||
v1 = &byte_8200D768;
|
||||
else
|
||||
v1 = args->argv[1];
|
||||
ExtractFinalFilename(result: &v2, str: v1);
|
||||
idLib::Printf(fmt: "final file name: %s\n", v2.data);
|
||||
StripBaseDirFromFilename(result: &v3, str: v2.data);
|
||||
idLib::Printf(fmt: "final file name: %s\n", v3.data);
|
||||
idStr::FreeData(this: &v3);
|
||||
idStr::FreeData(this: &v2);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221328
|
||||
// EA : 0x825F7160
|
||||
// RVA : 0x005F7160
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221328()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 176 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221329
|
||||
// EA : 0x825F7188
|
||||
// RVA : 0x005F7188
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221329()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 176 + 112));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?LocalFileNameToGameFileName@@YA?AVidStr@@QBD0@Z
|
||||
// EA : 0x825F7778
|
||||
// RVA : 0x005F7778
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
idStr *__fastcall LocalFileNameToGameFileName(idStr *result, const char *localFileName, const char *currentDirectory)
|
||||
{
|
||||
idStr v6; // [sp+60h] [-80h] BYREF
|
||||
idStr v7; // [sp+80h] [-60h] BYREF
|
||||
idStr v8[2]; // [sp+A0h] [-40h] BYREF
|
||||
|
||||
idStr::idStr(this: &v6, text: localFileName);
|
||||
idStr::MakeNameCanonical(this: &v6);
|
||||
if ( idStr::Find(searchIn: v6.data, searchFor: ":", casesensitive: true, start: 0, end: v6.len) != -1
|
||||
|| *v6.data == 47 )
|
||||
{
|
||||
StripBaseDirFromFilename(result: v8, str: v6.data);
|
||||
idStr::idStr(this: result, text: v8);
|
||||
idStr::FreeData(this: v8);
|
||||
}
|
||||
else
|
||||
{
|
||||
idStr::idStr(this: &v7, text: currentDirectory);
|
||||
idStr::StripTrailing(this: &v7, c: 47);
|
||||
idStr::StripTrailing(this: &v7, c: 92);
|
||||
idStr::Append(this: &v7, text: "/");
|
||||
idStr::Append(this: &v7, text: &v6);
|
||||
idStr::idStr(this: result, text: &v7);
|
||||
idStr::FreeData(this: &v7);
|
||||
}
|
||||
idStr::FreeData(this: &v6);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221684
|
||||
// EA : 0x825F7878
|
||||
// RVA : 0x005F7878
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221684()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 224 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221685
|
||||
// EA : 0x825F78A0
|
||||
// RVA : 0x005F78A0
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221685()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 224 + 128));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221686
|
||||
// EA : 0x825F78C8
|
||||
// RVA : 0x005F78C8
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221686()
|
||||
{
|
||||
int v0; // r12
|
||||
int v1; // r31
|
||||
|
||||
v1 = v0 - 224;
|
||||
if ( (*(_DWORD *)(v0 - 224 + 80) & 1) != 0 )
|
||||
{
|
||||
*(_DWORD *)(v1 + 80) &= ~1u;
|
||||
idStrStatic<260>::~idStrStatic<260>(this: *(idStr **)(v1 + 244));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221689
|
||||
// EA : 0x825F790C
|
||||
// RVA : 0x005F790C
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221689()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 224 + 160));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?DeclMaterialForParsedMtl@@YAPBVidMaterial@@ABVidParsedMtl@@VidMtlOptions@@@Z
|
||||
// EA : 0x825F7940
|
||||
// RVA : 0x005F7940
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
const idMaterial *__fastcall DeclMaterialForParsedMtl(const idParsedMtl *mtl, const idMtlOptions *mtlOptions)
|
||||
{
|
||||
idDecl *v4; // r3
|
||||
const idMaterial *MaterialOrAutoMaterial; // r30
|
||||
idStr v7; // [sp+50h] [-D0h] BYREF
|
||||
idStr v8; // [sp+70h] [-B0h] BYREF
|
||||
idStr v9; // [sp+90h] [-90h] BYREF
|
||||
idStr v10; // [sp+B0h] [-70h] BYREF
|
||||
idStr v11[2]; // [sp+D0h] [-50h] BYREF
|
||||
|
||||
v4 = (idDecl *)idResourceList::Load(
|
||||
this: &idMaterial::resourceList,
|
||||
name: mtl->mtlName.data,
|
||||
makeDefault: false,
|
||||
skipStaleCheck: false);
|
||||
MaterialOrAutoMaterial = (const idMaterial *)v4;
|
||||
if ( v4 == nullptr || idDecl::IsImplicit(this: v4) )
|
||||
{
|
||||
ExtractFinalFilename(result: &v8, str: mtl->map_Kd.data);
|
||||
if ( v8.len != 0 )
|
||||
{
|
||||
idStr::idStr(this: &v7, text: &v8);
|
||||
idStr::ToLower(this: &v7);
|
||||
idStr::BackSlashesToSlashes(this: &v7);
|
||||
idStr::GetFilePath(this: v11, result: &mtlOptions->loadedFile);
|
||||
LocalFileNameToGameFileName(result: &v10, localFileName: v7.data, currentDirectory: v11[0].data);
|
||||
idStr::GetWithoutExtension(this: &v9, result: &v10);
|
||||
MaterialOrAutoMaterial = (const idMaterial *)idResourceList::Load(
|
||||
this: &idMaterial::resourceList,
|
||||
name: v9.data,
|
||||
makeDefault: true,
|
||||
skipStaleCheck: false);
|
||||
idStr::FreeData(this: &v9);
|
||||
idStr::FreeData(this: &v10);
|
||||
idStr::FreeData(this: v11);
|
||||
idStr::FreeData(this: &v7);
|
||||
}
|
||||
else
|
||||
{
|
||||
MaterialOrAutoMaterial = FindMaterialOrAutoMaterial(name: mtl->mtlName.data);
|
||||
}
|
||||
idStr::FreeData(this: &v8);
|
||||
}
|
||||
idStr::FreeData(this: &mtlOptions->loadedFile);
|
||||
return MaterialOrAutoMaterial;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221766
|
||||
// EA : 0x825F7A60
|
||||
// RVA : 0x005F7A60
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221766()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: *(idStr **)(v0 - 288 + 316));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221767
|
||||
// EA : 0x825F7A88
|
||||
// RVA : 0x005F7A88
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221767()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 288 + 112));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221768
|
||||
// EA : 0x825F7AB0
|
||||
// RVA : 0x005F7AB0
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221768()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 288 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221769
|
||||
// EA : 0x825F7AD8
|
||||
// RVA : 0x005F7AD8
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221769()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 288 + 208));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221770
|
||||
// EA : 0x825F7B00
|
||||
// RVA : 0x005F7B00
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221770()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 288 + 176));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221771
|
||||
// EA : 0x825F7B28
|
||||
// RVA : 0x005F7B28
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221771()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 288 + 144));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?ParseMtlFile@@YA_NQBDAAV?$idList@VidParsedMtl@@$04@@@Z
|
||||
// EA : 0x825F7E88
|
||||
// RVA : 0x005F7E88
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall ParseMtlFile(const char *mtlText, idList<idParsedMtl,5> *parsedMtls)
|
||||
{
|
||||
const char *v4; // r11
|
||||
int v5; // r10
|
||||
idToken v7; // [sp+60h] [-400h] BYREF
|
||||
const char *v8; // [sp+A8h] [-3B8h]
|
||||
const char *v9; // [sp+ACh] [-3B4h]
|
||||
const char *v10; // [sp+B0h] [-3B0h]
|
||||
const char *v11; // [sp+B4h] [-3ACh]
|
||||
const char *v12; // [sp+B8h] [-3A8h]
|
||||
const char *v13; // [sp+BCh] [-3A4h]
|
||||
const char *v14; // [sp+C0h] [-3A0h]
|
||||
const char *v15; // [sp+C4h] [-39Ch]
|
||||
const char *v16; // [sp+C8h] [-398h]
|
||||
const char *v17; // [sp+CCh] [-394h]
|
||||
idStr v18; // [sp+D0h] [-390h] BYREF
|
||||
idStr v19; // [sp+F0h] [-370h] BYREF
|
||||
idLexer v20; // [sp+110h] [-350h] BYREF
|
||||
idVec3 v21; // [sp+198h] [-2C8h] BYREF
|
||||
idVec3 v22; // [sp+1A8h] [-2B8h] BYREF
|
||||
idVec3 v23; // [sp+1B8h] [-2A8h] BYREF
|
||||
idVec3 v24; // [sp+1C8h] [-298h] BYREF
|
||||
idVec3 v25[2]; // [sp+1D8h] [-288h] BYREF
|
||||
idParsedMtl v26; // [sp+1F0h] [-270h] BYREF
|
||||
|
||||
if ( parsedMtls->listStatic == 0 || parsedMtls->listStatic == 2 )
|
||||
{
|
||||
if ( parsedMtls->list != nullptr )
|
||||
idListArrayDelete<idParsedMtl>(ptr: parsedMtls->list, num: parsedMtls->size);
|
||||
parsedMtls->list = nullptr;
|
||||
parsedMtls->size = 0;
|
||||
}
|
||||
parsedMtls->num = 0;
|
||||
idLexer::idLexer(this: &v20, flags_: 8724);
|
||||
v4 = mtlText;
|
||||
do
|
||||
v5 = *(unsigned __int8 *)v4++;
|
||||
while ( v5 != 0 );
|
||||
if ( !idLexer::LoadMemory(this: &v20, ptr: mtlText, length_: v4 - mtlText - 1, name: "parsed mtl file") )
|
||||
{
|
||||
idLexer::~idLexer(this: &v20);
|
||||
return 0;
|
||||
}
|
||||
v7.len = 0;
|
||||
v7.baseBuffer[0] = 0;
|
||||
v7.intvalue = 0;
|
||||
v7.data = v7.baseBuffer;
|
||||
v7.allocedAndFlag = 20;
|
||||
memset(&v7.whiteSpaceStart_p, 0, 12);
|
||||
v7.floatvalue = -3.4028235e38;
|
||||
v18.allocedAndFlag = 20;
|
||||
v18.data = v18.baseBuffer;
|
||||
v18.len = 0;
|
||||
v18.baseBuffer[0] = 0;
|
||||
if ( !idLexer::ReadToken(this: &v20, token: &v7) )
|
||||
{
|
||||
LABEL_72:
|
||||
idStr::FreeData(this: &v18);
|
||||
idStr::FreeData(this: &v7);
|
||||
idLexer::~idLexer(this: &v20);
|
||||
return 1;
|
||||
}
|
||||
v13 = "map_opacity";
|
||||
v9 = "map_ns";
|
||||
v8 = "tf";
|
||||
v11 = "map_bump";
|
||||
v10 = "map_refl";
|
||||
v14 = "map_ke";
|
||||
v17 = "map_d";
|
||||
v15 = "bump";
|
||||
v16 = "map_ks";
|
||||
v12 = "map_kd";
|
||||
while ( 1 )
|
||||
{
|
||||
idStr::ToLower(this: &v7);
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "#") != 0 )
|
||||
break;
|
||||
idLexer::ParseCompleteLine(this: &v20, out: &v18);
|
||||
LABEL_71:
|
||||
if ( !idLexer::ReadToken(this: &v20, token: &v7) )
|
||||
goto LABEL_72;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "newmtl") != 0 )
|
||||
{
|
||||
idLexer::ParseCompleteLine(this: &v20, out: &v18);
|
||||
idStr::FreeData(this: &v18);
|
||||
idStr::FreeData(this: &v7);
|
||||
idLexer::~idLexer(this: &v20);
|
||||
return 0;
|
||||
}
|
||||
idParsedMtl::idParsedMtl(this: &v26);
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.mtlName);
|
||||
if ( !idLexer::ReadToken(this: &v20, token: &v7) )
|
||||
{
|
||||
LABEL_70:
|
||||
idList<idParsedMtl,5>::Append(this: parsedMtls, obj: &v26);
|
||||
idParsedMtl::~idParsedMtl(this: &v26);
|
||||
goto LABEL_71;
|
||||
}
|
||||
while ( 1 )
|
||||
{
|
||||
idStr::ToLower(this: &v7);
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "#") != 0 )
|
||||
break;
|
||||
idLexer::ParseCompleteLine(this: &v20, out: &v18);
|
||||
LABEL_67:
|
||||
if ( !idLexer::ReadToken(this: &v20, token: &v7) )
|
||||
goto LABEL_70;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "newmtl") == 0 )
|
||||
{
|
||||
idLexer::UnreadToken(this: &v20);
|
||||
goto LABEL_70;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "map_ka") == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_Ka);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v12) == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_Kd);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v16) == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_Ks);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v14) == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_Ke);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v11) == 0 || idStr::Cmp(s1: v7.data, s2: v15) == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_bump);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v13) == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_opacity);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v17) == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_d);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v9) == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_Ns);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v10) == 0 || idStr::Cmp(s1: v7.data, s2: "refl") == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.map_refl);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "decal") == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.decal);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "disp") == 0 )
|
||||
{
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v26.disp);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "map_aat") == 0 )
|
||||
{
|
||||
v19.len = 0;
|
||||
v19.data = v19.baseBuffer;
|
||||
v19.allocedAndFlag = 20;
|
||||
v19.baseBuffer[0] = 0;
|
||||
idLexer::ParseRestOfLine(this: &v20, out: &v19);
|
||||
idStr::ToLower(this: &v19);
|
||||
if ( idStr::Cmp(s1: v19.data, s2: "on") != 0 )
|
||||
{
|
||||
idStr::FreeData(this: &v19);
|
||||
v26.map_aat = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
idStr::FreeData(this: &v19);
|
||||
v26.map_aat = true;
|
||||
}
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "ns") == 0 )
|
||||
{
|
||||
v26.Ns = idLexer::ParseFloat(this: &v20, errorFlag: nullptr);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "ni") == 0 )
|
||||
{
|
||||
v26.Ni = idLexer::ParseFloat(this: &v20, errorFlag: nullptr);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "d") == 0 )
|
||||
{
|
||||
v26.d = idLexer::ParseFloat(this: &v20, errorFlag: nullptr);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "tr") == 0 )
|
||||
{
|
||||
v26.Tr = idLexer::ParseFloat(this: &v20, errorFlag: nullptr);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "illum") == 0 )
|
||||
{
|
||||
v26.illum = idLexer::ParseInt(this: &v20);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: v8) == 0 )
|
||||
{
|
||||
v26.Tf = *ParseVec3(result: &v21, src: &v20);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "ka") == 0 )
|
||||
{
|
||||
v26.Ka = *ParseVec3(result: &v23, src: &v20);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "kd") == 0 )
|
||||
{
|
||||
v26.Kd = *ParseVec3(result: v25, src: &v20);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "ks") == 0 )
|
||||
{
|
||||
v26.Ks = *ParseVec3(result: &v22, src: &v20);
|
||||
goto LABEL_67;
|
||||
}
|
||||
if ( idStr::Cmp(s1: v7.data, s2: "ke") == 0 )
|
||||
{
|
||||
v26.Ke = *ParseVec3(result: &v24, src: &v20);
|
||||
goto LABEL_67;
|
||||
}
|
||||
idParsedMtl::~idParsedMtl(this: &v26);
|
||||
idStr::FreeData(this: &v18);
|
||||
idStr::FreeData(this: &v7);
|
||||
idLexer::~idLexer(this: &v20);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$222046
|
||||
// EA : 0x825F8660
|
||||
// RVA : 0x005F8660
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_222046()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idLexer::~idLexer(this: (idLexer *)(v0 - 1120 + 272));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$222047
|
||||
// EA : 0x825F8688
|
||||
// RVA : 0x005F8688
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_222047()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 1120 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$222048
|
||||
// EA : 0x825F86B0
|
||||
// RVA : 0x005F86B0
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_222048()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 1120 + 208));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$222049
|
||||
// EA : 0x825F86D8
|
||||
// RVA : 0x005F86D8
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_222049()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idParsedMtl::~idParsedMtl(this: (idParsedMtl *)(v0 - 1120 + 496));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$222185
|
||||
// EA : 0x825F8700
|
||||
// RVA : 0x005F8700
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_222185()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 1120 + 240));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?LoadAndParseMtlFile@@YA_NQBDAAV?$idList@VidParsedMtl@@$04@@@Z
|
||||
// EA : 0x825F8778
|
||||
// RVA : 0x005F8778
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
char *__fastcall LoadAndParseMtlFile(const char *filename, idList<idParsedMtl,5> *parsedMtls)
|
||||
{
|
||||
char *result; // r3
|
||||
int v4; // r31
|
||||
char *v5; // [sp+50h] [-20h] BYREF
|
||||
|
||||
fileSystem->ReadFile(this: fileSystem, a2: filename, a3: (void **)&v5, a4: nullptr);
|
||||
result = v5;
|
||||
if ( v5 != nullptr )
|
||||
{
|
||||
v4 = ParseMtlFile(mtlText: v5, parsedMtls);
|
||||
idMem::Free(this: &mem, ptr: v5, align: ALIGN_16);
|
||||
return (char *)v4;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?testMtlLoader_f@@YAXABVidCmdArgs@@@Z
|
||||
// EA : 0x825F8810
|
||||
// RVA : 0x005F8810
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall testMtlLoader_f(const idCmdArgs *args)
|
||||
{
|
||||
int v1; // r30
|
||||
idFileList *v2; // r29
|
||||
int i; // r28
|
||||
idList<idParsedMtl,5> v4[4]; // [sp+60h] [-40h] BYREF
|
||||
|
||||
if ( args->argc == 2 )
|
||||
{
|
||||
v1 = 0;
|
||||
v4[0].listStatic = 0;
|
||||
v4[0].memTag = 5;
|
||||
memset(v4, 0, 14);
|
||||
if ( *args->argv[1] == 42 )
|
||||
{
|
||||
v2 = fileSystem->ListFilesTree(this: fileSystem, a2: "models", a3: "mtl", a4: 0);
|
||||
for ( i = 0; i < v2->list.num; ++v1 )
|
||||
{
|
||||
idLib::Printf(fmt: "parsing %s.\n", v2->list.list[v1].data);
|
||||
LoadAndParseMtlFile(filename: v2->list.list[v1].data, parsedMtls: v4);
|
||||
++i;
|
||||
}
|
||||
idFileList::~idFileList(this: v2);
|
||||
idMem::Free(this: &mem, ptr: v2, align: ALIGN_16);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadAndParseMtlFile(filename: args->argv[1], parsedMtls: v4);
|
||||
}
|
||||
if ( (v4[0].listStatic == 0 || v4[0].listStatic == 2) && v4[0].list != nullptr )
|
||||
idListArrayDelete<idParsedMtl>(ptr: v4[0].list, num: v4[0].size);
|
||||
}
|
||||
else
|
||||
{
|
||||
idLib::Printf(fmt: "USAGE: testMtlLoader <.mtl file | *>\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$222398
|
||||
// EA : 0x825F897C
|
||||
// RVA : 0x005F897C
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_222398()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idParsedMtl,5>::~idList<idParsedMtl,5>(this: (idList<idParsedMtl,5> *)(v0 - 160 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$222399
|
||||
// EA : 0x825F89A4
|
||||
// RVA : 0x005F89A4
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_222399()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
std::auto_ptr<idFileList>::~auto_ptr<idFileList>(this: (std::auto_ptr<idFileList> *)(v0 - 160 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'r_fixObjMaterialPath''
|
||||
// EA : 0x83336488
|
||||
// RVA : 0x01336488
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__r_fixObjMaterialPath__()
|
||||
{
|
||||
idCVar::idCVar(
|
||||
this: &r_fixObjMaterialPath,
|
||||
name: "r_fixObjMaterialPath",
|
||||
value: "0",
|
||||
flags: 1,
|
||||
description: "temp hack fix for material paths being jumbled up for objs coming out of modo",
|
||||
valueCompletion: nullptr);
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__r_fixObjMaterialPath__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'TestExtractFinalFilename_v''
|
||||
// EA : 0x833364E0
|
||||
// RVA : 0x013364E0
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCommandLink *_dynamic_initializer_for__TestExtractFinalFilename_v__()
|
||||
{
|
||||
return idCommandLink::idCommandLink(
|
||||
this: &TestExtractFinalFilename_v,
|
||||
cmdName: "TestExtractFinalFilename",
|
||||
function: TestExtractFinalFilename_f,
|
||||
description: "Test ExtractFinalFilename()",
|
||||
argCompletion: nullptr);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'testMtlLoader_v''
|
||||
// EA : 0x83336508
|
||||
// RVA : 0x01336508
|
||||
// PDB : w:\tech5\engine\compilers\renderbump\mtltocpuvmtr.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCommandLink *_dynamic_initializer_for__testMtlLoader_v__()
|
||||
{
|
||||
return idCommandLink::idCommandLink(
|
||||
this: &testMtlLoader_v,
|
||||
cmdName: "testMtlLoader",
|
||||
function: testMtlLoader_f,
|
||||
description: "Tests the parsing and processing of .mtl files",
|
||||
argCompletion: ArgCompletion_MTL);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?SetAliasHandle@idMD6AnimProps@@QAAXV?$idHandle@GW4invalidAliasHandle_t@@$0PPPP@@@@Z
|
||||
// EA : 0x825F89D0
|
||||
// RVA : 0x005F89D0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animprops.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idMD6AnimProps::SetAliasHandle(
|
||||
idMD6AnimProps *this,
|
||||
const idHandle<unsigned short,enum invalidAliasHandle_t,65535> *handle)
|
||||
{
|
||||
this->aliasHandle.value = (unsigned __int16)handle;
|
||||
this->anim = nullptr;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetAnim@idMD6AnimProps@@QAAXPBVidMD6Anim@@@Z
|
||||
// EA : 0x825F89E0
|
||||
// RVA : 0x005F89E0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animprops.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idMD6AnimProps::SetAnim(idMD6AnimProps *this, const idMD6Anim *anim_)
|
||||
{
|
||||
this->anim = anim_;
|
||||
this->aliasHandle.value = -1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SelectAnim@idMD6AnimProps@@QBAPBVidMD6Anim@@PBVidDeclMD6@@H@Z
|
||||
// EA : 0x825F89F0
|
||||
// RVA : 0x005F89F0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animprops.cpp
|
||||
// ========================================================================
|
||||
|
||||
const idMD6Anim *__fastcall idMD6AnimProps::SelectAnim(idMD6AnimProps *this, const idDeclMD6 *declMD6, const int index)
|
||||
{
|
||||
const idMD6Alias *Alias; // r3
|
||||
|
||||
if ( this->anim != nullptr )
|
||||
return this->anim;
|
||||
if ( this->aliasHandle.value == 0xFFFF )
|
||||
return nullptr;
|
||||
Alias = idDeclMD6::FindAlias(this: declMD6, aliasHandle: &this->aliasHandle, includeInherited: true);
|
||||
if ( Alias == nullptr )
|
||||
return nullptr;
|
||||
return (const idMD6Anim *)idResourceList::FindExisting(
|
||||
this: &idMD6Anim::resourceList,
|
||||
name: Alias->animRefs.list[index].str,
|
||||
skipStaleCheck: true);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SelectAndLoadAnim@idMD6AnimProps@@QBAPBVidMD6Anim@@PBVidDeclMD6@@H@Z
|
||||
// EA : 0x825F8A98
|
||||
// RVA : 0x005F8A98
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animprops.cpp
|
||||
// ========================================================================
|
||||
|
||||
const idMD6Anim *__fastcall idMD6AnimProps::SelectAndLoadAnim(
|
||||
idMD6AnimProps *this,
|
||||
const idDeclMD6 *declMD6,
|
||||
const int index)
|
||||
{
|
||||
const idMD6Alias *Alias; // r3
|
||||
|
||||
if ( this->anim != nullptr )
|
||||
return this->anim;
|
||||
if ( this->aliasHandle.value == 0xFFFF )
|
||||
return nullptr;
|
||||
Alias = idDeclMD6::FindAlias(this: declMD6, aliasHandle: &this->aliasHandle, includeInherited: true);
|
||||
if ( Alias == nullptr )
|
||||
return nullptr;
|
||||
return (const idMD6Anim *)idResourceList::Load(
|
||||
this: &idMD6Anim::resourceList,
|
||||
name: Alias->animRefs.list[index].str,
|
||||
makeDefault: false,
|
||||
skipStaleCheck: true);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0animList_t@idAnimWebBlendEquation@@QAA@XZ
|
||||
// EA : 0x825F91E8
|
||||
// RVA : 0x005F91E8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebblendequation.h
|
||||
// ========================================================================
|
||||
|
||||
idAnimWebBlendEquation::animList_t *__fastcall idAnimWebBlendEquation::animList_t::animList_t(
|
||||
idAnimWebBlendEquation::animList_t *this)
|
||||
{
|
||||
this->filterList.list = this->filterList.staticList;
|
||||
this->filterList.granularity = 1;
|
||||
this->filterList.num = 0;
|
||||
this->filterList.memTag = 5;
|
||||
this->filterList.size = 10;
|
||||
this->filterList.listStatic = 1;
|
||||
this->animList.size = 256;
|
||||
this->animList.num = 0;
|
||||
this->animList.granularity = 1;
|
||||
this->animList.list = this->animList.staticList;
|
||||
this->animList.memTag = 5;
|
||||
this->animList.listStatic = 1;
|
||||
this->tagList.size = 256;
|
||||
this->tagList.num = 0;
|
||||
this->tagList.granularity = 1;
|
||||
this->tagList.list = this->tagList.staticList;
|
||||
this->tagList.memTag = 5;
|
||||
this->tagList.listStatic = 1;
|
||||
this->animPropIndex = -1;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,208 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?Free@idScalarMemBlock@@AAAXXZ
|
||||
// EA : 0x825FDA58
|
||||
// RVA : 0x005FDA58
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idScalarMemBlock::Free(idScalarMemBlock *this)
|
||||
{
|
||||
float *floats; // r4
|
||||
|
||||
floats = this->floats;
|
||||
this->num = 0;
|
||||
if ( floats != nullptr )
|
||||
{
|
||||
idMem::Free(this: &mem, ptr: floats, align: ALIGN_16);
|
||||
this->floats = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetScalarPtr@idAnimWebScalar@@QAAXPAM@Z
|
||||
// EA : 0x825FDAB0
|
||||
// RVA : 0x005FDAB0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAnimWebScalar::SetScalarPtr(idAnimWebScalar *this, float *scalar)
|
||||
{
|
||||
if ( scalar != nullptr )
|
||||
{
|
||||
this->scalarPtr = scalar;
|
||||
this->scalarIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetIndex@idAnimWebScalar@@QAAXABVidScalarMemBlock@@H@Z
|
||||
// EA : 0x825FDAC8
|
||||
// RVA : 0x005FDAC8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAnimWebScalar::SetIndex(idAnimWebScalar *this, const idScalarMemBlock *memBlock, __int16 index)
|
||||
{
|
||||
this->scalarIndex = index;
|
||||
this->scalarPtr = nullptr;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Alloc@idScalarMemBlock@@QAAXH@Z
|
||||
// EA : 0x825FDAD8
|
||||
// RVA : 0x005FDAD8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idScalarMemBlock::Alloc(idScalarMemBlock *this, int num_)
|
||||
{
|
||||
float *floats; // r4
|
||||
|
||||
floats = this->floats;
|
||||
this->num = 0;
|
||||
if ( floats != nullptr )
|
||||
{
|
||||
idMem::Free(this: &mem, ptr: floats, align: ALIGN_16);
|
||||
this->floats = nullptr;
|
||||
}
|
||||
this->num = num_;
|
||||
if ( num_ > 0 )
|
||||
this->floats = (float *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\engine\\decls\\AnimWebs\\AnimWebScalar.cpp(28) : TAG_ANIMWEB",
|
||||
size: 4 * num_,
|
||||
tag: TAG_ANIMWEB,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Free@idScalarMemBlock@@QAAXAAV?$idList@VidAnimWebScalar@@$04@@@Z
|
||||
// EA : 0x825FDB58
|
||||
// RVA : 0x005FDB58
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idScalarMemBlock::Free(idScalarMemBlock *this, idList<idAnimWebScalar,5> *scalars)
|
||||
{
|
||||
int v3; // r11
|
||||
int v4; // r10
|
||||
idAnimWebScalar *v5; // r9
|
||||
float *floats; // r4
|
||||
|
||||
v3 = 0;
|
||||
if ( scalars->num > 0 )
|
||||
{
|
||||
v4 = 0;
|
||||
do
|
||||
{
|
||||
++v3;
|
||||
v5 = &scalars->list[v4++];
|
||||
v5->scalarIndex = -1;
|
||||
}
|
||||
while ( v3 < scalars->num );
|
||||
}
|
||||
floats = this->floats;
|
||||
this->num = 0;
|
||||
if ( floats != nullptr )
|
||||
{
|
||||
idMem::Free(this: &mem, ptr: floats, align: ALIGN_16);
|
||||
this->floats = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetName@idAnimWebScalar@@QAAXPBD@Z
|
||||
// EA : 0x825FDBE8
|
||||
// RVA : 0x005FDBE8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
// attributes: thunk
|
||||
void __fastcall idAnimWebScalar::SetName(idAnimWebScalar *this, const char *name_)
|
||||
{
|
||||
idAtomicString::Set(this: &this->name, str_: name_);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetScalar@idAnimWebScalar@@QBAMABVidScalarMemBlock@@@Z
|
||||
// EA : 0x825FDBF0
|
||||
// RVA : 0x005FDBF0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
float __fastcall idAnimWebScalar::GetScalar(idAnimWebScalar *this, const idScalarMemBlock *memBlock)
|
||||
{
|
||||
int scalarIndex; // r11
|
||||
float *scalarPtr; // r11
|
||||
double v4; // fp1
|
||||
|
||||
scalarIndex = this->scalarIndex;
|
||||
if ( scalarIndex >= 0 )
|
||||
{
|
||||
v4 = memBlock->floats[scalarIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
scalarPtr = this->scalarPtr;
|
||||
if ( scalarPtr != nullptr )
|
||||
{
|
||||
v4 = *scalarPtr;
|
||||
}
|
||||
else
|
||||
{
|
||||
idLib::Warning(
|
||||
fmt: "idAnimWebScalar::GetScalar - Trying to access uninitialized blend variable \"%s\"",
|
||||
this->name.str);
|
||||
v4 = 0.0;
|
||||
}
|
||||
}
|
||||
return *((float *)&v4 + 1);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetScalar@idAnimWebScalar@@QAAXAAVidScalarMemBlock@@M@Z
|
||||
// EA : 0x825FDC70
|
||||
// RVA : 0x005FDC70
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAnimWebScalar::SetScalar(idAnimWebScalar *this, idScalarMemBlock *memBlock, double f)
|
||||
{
|
||||
int scalarIndex; // r11
|
||||
|
||||
scalarIndex = this->scalarIndex;
|
||||
if ( scalarIndex >= 0 )
|
||||
memBlock->floats[scalarIndex] = f;
|
||||
else
|
||||
*this->scalarPtr = f;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Init@idAnimWebScalar@@QAAXPBDEPAM@Z
|
||||
// EA : 0x825FDCA0
|
||||
// RVA : 0x005FDCA0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idAnimWebScalar::Init(idAnimWebScalar *this, const char *name_, unsigned __int8 flags_, float *scalar)
|
||||
{
|
||||
idAtomicString::Set(this: &this->name, str_: name_);
|
||||
this->flags = flags_;
|
||||
if ( scalar != nullptr )
|
||||
{
|
||||
this->scalarPtr = scalar;
|
||||
this->scalarIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??1idScalarMemBlock@@QAA@XZ
|
||||
// EA : 0x826D0CF0
|
||||
// RVA : 0x006D0CF0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\animwebscalar.h
|
||||
// ========================================================================
|
||||
|
||||
// attributes: thunk
|
||||
void __fastcall idScalarMemBlock::~idScalarMemBlock(idScalarMemBlock *this)
|
||||
{
|
||||
idScalarMemBlock::Free(this);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,840 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDuration@blendParms_t@@QBAFXZ
|
||||
// EA : 0x825FDCE0
|
||||
// RVA : 0x005FDCE0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall blendParms_t::GetDuration(blendParms_t *this)
|
||||
{
|
||||
return (unsigned __int16)this->parms.destDuration;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDurationMS@blendParms_t@@QBAFXZ
|
||||
// EA : 0x825FDCE8
|
||||
// RVA : 0x005FDCE8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall blendParms_t::GetDurationMS(blendParms_t *this, int a2, int a3, __int64 a4)
|
||||
{
|
||||
LODWORD(a4) = this->parms.destDuration;
|
||||
return (unsigned __int16)(int)(float)((float)((float)a4 * (float)1000.0) * (float)0.033333335);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0blendParms_t@@QAA@XZ
|
||||
// EA : 0x825FDD40
|
||||
// RVA : 0x005FDD40
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
blendParms_t *__fastcall blendParms_t::blendParms_t(blendParms_t *this)
|
||||
{
|
||||
this->parms.srcAnim = nullptr;
|
||||
this->parms.destAnim = nullptr;
|
||||
*(_DWORD *)&this->parms.sourceStartFrame = 0x7FFF;
|
||||
this->parms.destStartFrame = 0;
|
||||
this->parms.destDuration = 0;
|
||||
this->parms.flags = 0;
|
||||
this->parms.originBlend = 0;
|
||||
this->parms.blendType = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Write@blendParms_t@@QBAXAAVidFile_String@@PBD@Z
|
||||
// EA : 0x825FDD70
|
||||
// RVA : 0x005FDD70
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall blendParms_t::Write(blendParms_t *this, idFile_String *str, __int64 indent, __int64 a4, __int64 a5)
|
||||
{
|
||||
int v7; // r30
|
||||
va *v8; // r3
|
||||
__int64 v9; // r10
|
||||
__int64 v10; // r8
|
||||
__int64 v11; // r6
|
||||
va *v12; // r3
|
||||
__int64 v13; // r10
|
||||
__int64 v14; // r8
|
||||
const idMD6Anim *destAnim; // r11
|
||||
__int64 v16; // r6
|
||||
va *v17; // r3
|
||||
__int64 v18; // r10
|
||||
__int64 v19; // r6
|
||||
__int64 v20; // r8
|
||||
va *v21; // r3
|
||||
__int64 v22; // r8
|
||||
__int64 v23; // r6
|
||||
__int64 v24; // r10
|
||||
va *v25; // r3
|
||||
__int64 v26; // r6
|
||||
__int64 v27; // r10
|
||||
__int64 v28; // r8
|
||||
va *v29; // r3
|
||||
__int64 v30; // r10
|
||||
__int64 v31; // r6
|
||||
__int64 v32; // r8
|
||||
va *v33; // r3
|
||||
__int64 v34; // r10
|
||||
__int64 v35; // r6
|
||||
__int64 v36; // r8
|
||||
int v37; // r11
|
||||
__int64 v38; // r10
|
||||
__int64 v39; // r8
|
||||
__int64 v40; // r6
|
||||
va *v41; // r3
|
||||
int blendType; // r11
|
||||
__int64 v43; // r10
|
||||
__int64 v44; // r8
|
||||
__int64 v45; // r6
|
||||
va *v46; // r3
|
||||
va *v47; // r3
|
||||
va *v48; // r3
|
||||
va *v49; // r3
|
||||
int v50; // [sp+8h] [-1078h]
|
||||
int v51; // [sp+8h] [-1078h]
|
||||
int v52; // [sp+8h] [-1078h]
|
||||
int v53; // [sp+8h] [-1078h]
|
||||
int v54; // [sp+8h] [-1078h]
|
||||
int v55; // [sp+8h] [-1078h]
|
||||
int v56; // [sp+8h] [-1078h]
|
||||
int v57; // [sp+8h] [-1078h]
|
||||
int v58; // [sp+Ch] [-1074h]
|
||||
int v59; // [sp+Ch] [-1074h]
|
||||
int v60; // [sp+Ch] [-1074h]
|
||||
int v61; // [sp+Ch] [-1074h]
|
||||
int v62; // [sp+Ch] [-1074h]
|
||||
int v63; // [sp+Ch] [-1074h]
|
||||
int v64; // [sp+Ch] [-1074h]
|
||||
int v65; // [sp+Ch] [-1074h]
|
||||
int v66; // [sp+10h] [-1070h]
|
||||
int v67; // [sp+10h] [-1070h]
|
||||
int v68; // [sp+10h] [-1070h]
|
||||
int v69; // [sp+10h] [-1070h]
|
||||
int v70; // [sp+10h] [-1070h]
|
||||
int v71; // [sp+10h] [-1070h]
|
||||
int v72; // [sp+10h] [-1070h]
|
||||
int v73; // [sp+10h] [-1070h]
|
||||
int v74; // [sp+14h] [-106Ch]
|
||||
int v75; // [sp+14h] [-106Ch]
|
||||
int v76; // [sp+14h] [-106Ch]
|
||||
int v77; // [sp+14h] [-106Ch]
|
||||
int v78; // [sp+14h] [-106Ch]
|
||||
int v79; // [sp+14h] [-106Ch]
|
||||
int v80; // [sp+14h] [-106Ch]
|
||||
int v81; // [sp+14h] [-106Ch]
|
||||
int v82; // [sp+18h] [-1068h]
|
||||
int v83; // [sp+18h] [-1068h]
|
||||
int v84; // [sp+18h] [-1068h]
|
||||
int v85; // [sp+18h] [-1068h]
|
||||
int v86; // [sp+18h] [-1068h]
|
||||
int v87; // [sp+18h] [-1068h]
|
||||
int v88; // [sp+18h] [-1068h]
|
||||
int v89; // [sp+18h] [-1068h]
|
||||
int v90; // [sp+1Ch] [-1064h]
|
||||
int v91; // [sp+1Ch] [-1064h]
|
||||
int v92; // [sp+1Ch] [-1064h]
|
||||
int v93; // [sp+1Ch] [-1064h]
|
||||
int v94; // [sp+1Ch] [-1064h]
|
||||
int v95; // [sp+1Ch] [-1064h]
|
||||
int v96; // [sp+1Ch] [-1064h]
|
||||
int v97; // [sp+1Ch] [-1064h]
|
||||
va v98; // [sp+50h] [-1030h] BYREF
|
||||
|
||||
v7 = HIDWORD(indent);
|
||||
v8 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%sblendParms {\n",
|
||||
a3: indent,
|
||||
a4,
|
||||
a5,
|
||||
a6: v50,
|
||||
a7: v58,
|
||||
a8: v66,
|
||||
a9: v74,
|
||||
a10: v82,
|
||||
a11: v90);
|
||||
idFile_String::operator+=(this: str, str: v8->buffer);
|
||||
if ( this->parms.srcAnim != nullptr )
|
||||
LODWORD(v11) = this->parms.srcAnim->name.str;
|
||||
else
|
||||
LODWORD(v11) = &byte_8200D768;
|
||||
HIDWORD(v11) = v7;
|
||||
v12 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tsrcAnim \"%s\"\n",
|
||||
a3: v11,
|
||||
a4: v10,
|
||||
a5: v9,
|
||||
a6: v51,
|
||||
a7: v59,
|
||||
a8: v67,
|
||||
a9: v75,
|
||||
a10: v83,
|
||||
a11: v91);
|
||||
idFile_String::operator+=(this: str, str: v12->buffer);
|
||||
destAnim = this->parms.destAnim;
|
||||
if ( destAnim != nullptr )
|
||||
LODWORD(v16) = destAnim->name.str;
|
||||
else
|
||||
LODWORD(v16) = &byte_8200D768;
|
||||
HIDWORD(v16) = v7;
|
||||
v17 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tdestAnim \"%s\"\n",
|
||||
a3: v16,
|
||||
a4: v14,
|
||||
a5: v13,
|
||||
a6: v52,
|
||||
a7: v60,
|
||||
a8: v68,
|
||||
a9: v76,
|
||||
a10: v84,
|
||||
a11: v92);
|
||||
idFile_String::operator+=(this: str, str: v17->buffer);
|
||||
HIDWORD(v18) = (unsigned __int16)this->parms.sourceStartFrame;
|
||||
LODWORD(v18) = &unk_821B0000;
|
||||
HIDWORD(v19) = v7;
|
||||
LODWORD(v19) = SWORD1(v18);
|
||||
v21 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tsourceStartFrame %d\n",
|
||||
a3: v19,
|
||||
a4: v20,
|
||||
a5: v18,
|
||||
a6: v53,
|
||||
a7: v61,
|
||||
a8: v69,
|
||||
a9: v77,
|
||||
a10: v85,
|
||||
a11: v93);
|
||||
idFile_String::operator+=(this: str, str: v21->buffer);
|
||||
HIDWORD(v22) = (unsigned __int16)this->parms.sourceDuration;
|
||||
LODWORD(v22) = &unk_821B0000;
|
||||
HIDWORD(v23) = v7;
|
||||
LODWORD(v23) = SWORD1(v22);
|
||||
v25 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tsourceDuration %d\n",
|
||||
a3: v23,
|
||||
a4: v22,
|
||||
a5: v24,
|
||||
a6: v54,
|
||||
a7: v62,
|
||||
a8: v70,
|
||||
a9: v78,
|
||||
a10: v86,
|
||||
a11: v94);
|
||||
idFile_String::operator+=(this: str, str: v25->buffer);
|
||||
HIDWORD(v26) = v7;
|
||||
LODWORD(v26) = this->parms.destStartFrame;
|
||||
v29 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tdestStartFrame %d\n",
|
||||
a3: v26,
|
||||
a4: v28,
|
||||
a5: v27,
|
||||
a6: v55,
|
||||
a7: v63,
|
||||
a8: v71,
|
||||
a9: v79,
|
||||
a10: v87,
|
||||
a11: v95);
|
||||
idFile_String::operator+=(this: str, str: v29->buffer);
|
||||
HIDWORD(v30) = (unsigned __int16)this->parms.destDuration;
|
||||
LODWORD(v30) = &unk_821B0000;
|
||||
HIDWORD(v31) = v7;
|
||||
LODWORD(v31) = SWORD1(v30);
|
||||
v33 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tdestDuration %d\n",
|
||||
a3: v31,
|
||||
a4: v32,
|
||||
a5: v30,
|
||||
a6: v56,
|
||||
a7: v64,
|
||||
a8: v72,
|
||||
a9: v80,
|
||||
a10: v88,
|
||||
a11: v96);
|
||||
idFile_String::operator+=(this: str, str: v33->buffer);
|
||||
LODWORD(v36) = (unsigned __int8)this->parms.originBlend;
|
||||
v37 = (char)v36;
|
||||
if ( (_BYTE)v36 != 0 )
|
||||
{
|
||||
LODWORD(v38) = &idSort_Quick<idSortedMaterial,idSort_SortedMaterial> `RTTI Type Descriptor';
|
||||
HIDWORD(v38) = 4 * (char)v36;
|
||||
LODWORD(v39) = idMD6Blend::originBlendNames;
|
||||
HIDWORD(v39) = &unk_821B0000;
|
||||
HIDWORD(v40) = v7;
|
||||
LODWORD(v40) = idMD6Blend::originBlendNames[v37];
|
||||
v41 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\toriginBlend \"%s\"\n",
|
||||
a3: v40,
|
||||
a4: v39,
|
||||
a5: v38,
|
||||
a6: v57,
|
||||
a7: v65,
|
||||
a8: v73,
|
||||
a9: v81,
|
||||
a10: v89,
|
||||
a11: v97);
|
||||
idFile_String::operator+=(this: str, str: v41->buffer);
|
||||
}
|
||||
blendType = this->parms.blendType;
|
||||
if ( this->parms.blendType != 0 )
|
||||
{
|
||||
LODWORD(v43) = &idSort_Quick<idSortedMaterial,idSort_SortedMaterial> `RTTI Type Descriptor';
|
||||
HIDWORD(v43) = 4 * blendType;
|
||||
LODWORD(v44) = idMD6Branch::blendTypeNames;
|
||||
HIDWORD(v44) = &unk_821B0000;
|
||||
HIDWORD(v45) = v7;
|
||||
LODWORD(v45) = idMD6Branch::blendTypeNames[blendType];
|
||||
v46 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tblendType \"%s\"\n",
|
||||
a3: v45,
|
||||
a4: v44,
|
||||
a5: v43,
|
||||
a6: v57,
|
||||
a7: v65,
|
||||
a8: v73,
|
||||
a9: v81,
|
||||
a10: v89,
|
||||
a11: v97);
|
||||
idFile_String::operator+=(this: str, str: v46->buffer);
|
||||
}
|
||||
if ( (this->parms.flags & 1) != 0 )
|
||||
{
|
||||
HIDWORD(v35) = v7;
|
||||
LODWORD(v34) = this->parms.flags & 1;
|
||||
v47 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tsourceEndRelative\n",
|
||||
a3: v35,
|
||||
a4: v36,
|
||||
a5: v34,
|
||||
a6: v57,
|
||||
a7: v65,
|
||||
a8: v73,
|
||||
a9: v81,
|
||||
a10: v89,
|
||||
a11: v97);
|
||||
idFile_String::operator+=(this: str, str: v47->buffer);
|
||||
}
|
||||
LODWORD(v34) = this->parms.flags & 2;
|
||||
if ( (this->parms.flags & 2) != 0 )
|
||||
{
|
||||
HIDWORD(v35) = v7;
|
||||
v48 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s\tdestEndRelative\n",
|
||||
a3: v35,
|
||||
a4: v36,
|
||||
a5: v34,
|
||||
a6: v57,
|
||||
a7: v65,
|
||||
a8: v73,
|
||||
a9: v81,
|
||||
a10: v89,
|
||||
a11: v97);
|
||||
idFile_String::operator+=(this: str, str: v48->buffer);
|
||||
}
|
||||
HIDWORD(v35) = v7;
|
||||
v49 = va::va(
|
||||
this: &v98,
|
||||
fmt: "%s}\n",
|
||||
a3: v35,
|
||||
a4: v36,
|
||||
a5: v34,
|
||||
a6: v57,
|
||||
a7: v65,
|
||||
a8: v73,
|
||||
a9: v81,
|
||||
a10: v89,
|
||||
a11: v97);
|
||||
idFile_String::operator+=(this: str, str: v49->buffer);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetRelativeFrames@blendParms_t@@ABA_NPBVidMD6Anim@@_NABF2AAF3@Z
|
||||
// EA : 0x825FDFC8
|
||||
// RVA : 0x005FDFC8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall blendParms_t::GetRelativeFrames(
|
||||
blendParms_t *this,
|
||||
const idMD6Anim *anim,
|
||||
const bool endRelative,
|
||||
__int16 *inFirstFrame,
|
||||
const __int16 *inDuration,
|
||||
__int16 *outFirstRelativeFrame,
|
||||
__int16 *outLastRelativeFrame)
|
||||
{
|
||||
idMD6AnimData *animData; // r11
|
||||
int v9; // r11
|
||||
|
||||
if ( endRelative )
|
||||
{
|
||||
if ( anim == nullptr )
|
||||
return 0;
|
||||
animData = anim->animData;
|
||||
if ( animData != nullptr )
|
||||
LOWORD(animData) = animData->numFrames;
|
||||
*outFirstRelativeFrame = (_WORD)animData - *inFirstFrame - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
*outFirstRelativeFrame = *inFirstFrame;
|
||||
}
|
||||
v9 = *inDuration + *outFirstRelativeFrame;
|
||||
if ( v9 >= 0 )
|
||||
{
|
||||
if ( v9 > 0x7FFF )
|
||||
LOWORD(v9) = 0x7FFF;
|
||||
*outLastRelativeFrame = v9;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
*outLastRelativeFrame = 0;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetSourceFrames@blendParms_t@@QBA_NPBVidMD6Anim@@AAF1@Z
|
||||
// EA : 0x825FE058
|
||||
// RVA : 0x005FE058
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall blendParms_t::GetSourceFrames(
|
||||
blendParms_t *this,
|
||||
const idMD6Anim *anim,
|
||||
__int16 *firstFrame,
|
||||
__int16 *lastFrame)
|
||||
{
|
||||
return blendParms_t::GetRelativeFrames(
|
||||
this,
|
||||
anim,
|
||||
endRelative: this->parms.flags & 1,
|
||||
inFirstFrame: &this->parms.sourceStartFrame,
|
||||
inDuration: &this->parms.sourceDuration,
|
||||
outFirstRelativeFrame: firstFrame,
|
||||
outLastRelativeFrame: lastFrame);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDestFrames@blendParms_t@@QBA_NPBVidMD6Anim@@AAF1@Z
|
||||
// EA : 0x825FE078
|
||||
// RVA : 0x005FE078
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall blendParms_t::GetDestFrames(
|
||||
blendParms_t *this,
|
||||
const idMD6Anim *anim,
|
||||
__int16 *firstFrame,
|
||||
__int16 *duration_)
|
||||
{
|
||||
__int16 v5[4]; // [sp+50h] [-10h] BYREF
|
||||
|
||||
*duration_ = this->parms.destDuration;
|
||||
return blendParms_t::GetRelativeFrames(
|
||||
this,
|
||||
anim,
|
||||
endRelative: (this->parms.flags & 2) != 0,
|
||||
inFirstFrame: &this->parms.destStartFrame,
|
||||
inDuration: &this->parms.destDuration,
|
||||
outFirstRelativeFrame: firstFrame,
|
||||
outLastRelativeFrame: v5);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetDestStartFrame@blendParms_t@@QAAXH@Z
|
||||
// EA : 0x825FE0C0
|
||||
// RVA : 0x005FE0C0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall blendParms_t::SetDestStartFrame(blendParms_t *this, int frame)
|
||||
{
|
||||
if ( frame >= -32767 )
|
||||
{
|
||||
if ( frame <= 0x7FFF )
|
||||
this->parms.destStartFrame = frame;
|
||||
else
|
||||
this->parms.destStartFrame = 0x7FFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.destStartFrame = -32767;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetDuration@blendParms_t@@QAAXH@Z
|
||||
// EA : 0x825FE0F0
|
||||
// RVA : 0x005FE0F0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall blendParms_t::SetDuration(blendParms_t *this, int frame)
|
||||
{
|
||||
if ( frame >= -32767 )
|
||||
{
|
||||
if ( frame <= 0x7FFF )
|
||||
this->parms.destDuration = frame;
|
||||
else
|
||||
this->parms.destDuration = 0x7FFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.destDuration = -32767;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetDurationMS@blendParms_t@@QAAXH@Z
|
||||
// EA : 0x825FE120
|
||||
// RVA : 0x005FE120
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall blendParms_t::SetDurationMS(blendParms_t *this, unsigned int ms)
|
||||
{
|
||||
int v2; // r11
|
||||
|
||||
v2 = (int)(float)((float)((float)__SPAIR64__(&unk_821B0000, ms) * (float)30.0) * (float)0.001);
|
||||
if ( v2 >= -32767 )
|
||||
{
|
||||
if ( v2 > 0x7FFF )
|
||||
LOWORD(v2) = 0x7FFF;
|
||||
this->parms.destDuration = v2;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.destDuration = -32767;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@blendParms_t@@QAAXPAVidDeclAnimWeb@@PAVidDeclAnimWebNode@@PBD2AAVidParser@@@Z
|
||||
// EA : 0x825FE188
|
||||
// RVA : 0x005FE188
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall blendParms_t::Parse(
|
||||
blendParms_t *this,
|
||||
idDeclAnimWeb *decl,
|
||||
idDeclAnimWebNode *node,
|
||||
const char *toSubWebName,
|
||||
const char *toStateName,
|
||||
idParser *src)
|
||||
{
|
||||
idDeclAnimWeb *v7; // r29
|
||||
idDeclAnimWebNode *v8; // r28
|
||||
int v10; // r3
|
||||
__int16 v11; // r11
|
||||
int v12; // r3
|
||||
__int16 v13; // r11
|
||||
int v14; // r3
|
||||
__int16 v15; // r11
|
||||
int v16; // r3
|
||||
__int16 v17; // r11
|
||||
__int64 v18; // r11
|
||||
long double v19; // fp2
|
||||
long double v20; // fp2
|
||||
__int16 v21; // r3
|
||||
char v22; // r9
|
||||
int v23; // r3
|
||||
char v24; // r9
|
||||
int v25; // r3
|
||||
char v26; // r8
|
||||
int v27; // r3
|
||||
char flags; // r9
|
||||
const char **v29; // r30
|
||||
char v30; // r29
|
||||
const char **v31; // r30
|
||||
char v32; // r29
|
||||
char v33; // [sp+50h] [-130h]
|
||||
idToken v34; // [sp+90h] [-F0h] BYREF
|
||||
|
||||
v34.len = 0;
|
||||
v34.allocedAndFlag = 20;
|
||||
v7 = decl;
|
||||
v34.floatvalue = -3.4028235e38;
|
||||
v8 = node;
|
||||
v34.data = v34.baseBuffer;
|
||||
v34.baseBuffer[0] = 0;
|
||||
v34.intvalue = 0;
|
||||
memset(&v34.whiteSpaceStart_p, 0, 12);
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 46, token: &v34);
|
||||
v33 = 0;
|
||||
if ( idParser::ReadToken(this: src, token: &v34) )
|
||||
{
|
||||
do
|
||||
{
|
||||
if ( v34.type == 5 && v34.subtype == 47 )
|
||||
break;
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "srcAnim") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "destAnim") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "sourceStartFrame") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "sourceDuration") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "destStartFrame") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "destDuration") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "duration") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "durationf") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "srcFirstFrame") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "srcLastFrame") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "destFrame") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "originBlend") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "blendType") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "sourceEndRelative") != 0 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v34.data, s2: "destEndRelative") != 0 )
|
||||
idParser::Error(this: src, str: "Unknown blendParms parameter '%s'", v34.data);
|
||||
else
|
||||
this->parms.flags |= 2u;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.flags |= 1u;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.blendType = 4;
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v34);
|
||||
v31 = idMD6Branch::blendTypeNames;
|
||||
v32 = 0;
|
||||
while ( idStr::Cmp(s1: v34.data, s2: *v31) != 0 )
|
||||
{
|
||||
++v31;
|
||||
++v32;
|
||||
if ( (int)v31 >= (int)&dword_835BFC0C )
|
||||
goto LABEL_66;
|
||||
}
|
||||
this->parms.blendType = v32;
|
||||
LABEL_66:
|
||||
if ( this->parms.blendType == 4 )
|
||||
idParser::Error(this: src, str: "Unknown blend type '%s'", v34.data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.originBlend = 3;
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v34);
|
||||
v29 = idMD6Blend::originBlendNames;
|
||||
v30 = 0;
|
||||
while ( idStr::Cmp(s1: v34.data, s2: *v29) != 0 )
|
||||
{
|
||||
++v29;
|
||||
++v30;
|
||||
if ( (int)v29 >= (int)&unk_835BFAF4 )
|
||||
goto LABEL_58;
|
||||
}
|
||||
this->parms.originBlend = v30;
|
||||
LABEL_58:
|
||||
if ( this->parms.originBlend == 3 )
|
||||
idParser::Error(this: src, str: "Unknown origin blend type '%s'", v34.data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v27 = idParser::ParseInt(this: src);
|
||||
if ( v27 > 0x7FFF )
|
||||
LOWORD(v27) = 0x7FFF;
|
||||
flags = this->parms.flags;
|
||||
this->parms.destStartFrame = v27;
|
||||
this->parms.flags = flags | 8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v25 = idParser::ParseInt(this: src);
|
||||
if ( v25 > 0x7FFF )
|
||||
LOWORD(v25) = 0x7FFF;
|
||||
v26 = this->parms.flags;
|
||||
this->parms.sourceDuration = v25;
|
||||
v33 = 1;
|
||||
this->parms.flags = v26 | 8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v23 = idParser::ParseInt(this: src);
|
||||
if ( v23 > 0x7FFF )
|
||||
LOWORD(v23) = 0x7FFF;
|
||||
v24 = this->parms.flags;
|
||||
this->parms.sourceStartFrame = v23;
|
||||
this->parms.flags = v24 | 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v21 = idParser::ParseInt(this: src);
|
||||
v22 = this->parms.flags;
|
||||
this->parms.destDuration = v21;
|
||||
this->parms.flags = v22 | 8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LODWORD(v18) = idParser::ParseInt(this: src);
|
||||
*(double *)&v19 = (float)((float)((float)v18 * (float)0.001) * (float)30.0);
|
||||
v20 = ceil(x: v19);
|
||||
this->parms.flags |= 8u;
|
||||
this->parms.destDuration = (int)(float)*(double *)&v20;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v16 = idParser::ParseInt(this: src);
|
||||
v17 = v16;
|
||||
if ( v16 >= -32767 )
|
||||
{
|
||||
if ( v16 > 0x7FFF )
|
||||
v17 = 0x7FFF;
|
||||
this->parms.destDuration = v17;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.destDuration = -32767;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v14 = idParser::ParseInt(this: src);
|
||||
v15 = v14;
|
||||
if ( v14 >= -32767 )
|
||||
{
|
||||
if ( v14 > 0x7FFF )
|
||||
v15 = 0x7FFF;
|
||||
this->parms.destStartFrame = v15;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.destStartFrame = -32767;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v12 = idParser::ParseInt(this: src);
|
||||
v13 = v12;
|
||||
if ( v12 >= -32767 )
|
||||
{
|
||||
if ( v12 > 0x7FFF )
|
||||
v13 = 0x7FFF;
|
||||
this->parms.sourceDuration = v13;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.sourceDuration = -32767;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v10 = idParser::ParseInt(this: src);
|
||||
v11 = v10;
|
||||
if ( v10 >= -32767 )
|
||||
{
|
||||
if ( v10 > 0x7FFF )
|
||||
v11 = 0x7FFF;
|
||||
this->parms.sourceStartFrame = v11;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->parms.sourceStartFrame = -32767;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v34);
|
||||
this->parms.destAnim = v34.len != 0
|
||||
? (const idMD6Anim *)idResourceList::Load(
|
||||
this: &idMD6Anim::resourceList,
|
||||
name: v34.data,
|
||||
makeDefault: true,
|
||||
skipStaleCheck: false)
|
||||
: nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v34);
|
||||
this->parms.srcAnim = v34.len != 0
|
||||
? (const idMD6Anim *)idResourceList::Load(
|
||||
this: &idMD6Anim::resourceList,
|
||||
name: v34.data,
|
||||
makeDefault: true,
|
||||
skipStaleCheck: false)
|
||||
: nullptr;
|
||||
}
|
||||
}
|
||||
while ( idParser::ReadToken(this: src, token: &v34) );
|
||||
v8 = node;
|
||||
v7 = decl;
|
||||
}
|
||||
if ( v33 != 0 )
|
||||
this->parms.sourceDuration -= this->parms.sourceStartFrame;
|
||||
idDeclAnimWeb::GetSubWebName(
|
||||
this: v7,
|
||||
index: (const idIndex<short,enum idDeclAnimWeb::invalidSubWebIndex_t> *)(unsigned __int16)v8->subWebIndex.value);
|
||||
idDeclAnimWeb::GetStateName(
|
||||
this: v7,
|
||||
index: (const idIndex<short,enum idDeclAnimWeb::invalidStateIndex_t> *)(unsigned __int16)v8->states.stateIndex[0].value);
|
||||
idStr::FreeData(this: &v34);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219794
|
||||
// EA : 0x825FE7F0
|
||||
// RVA : 0x005FE7F0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\blendparms.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219794()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 384 + 144));
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetBaseModel@idDeclAnimWeb@@QBAPBVidDeclMD6@@XZ
|
||||
// EA : 0x825FEE70
|
||||
// RVA : 0x005FEE70
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimweb.h
|
||||
// ========================================================================
|
||||
|
||||
const idDeclMD6 *__fastcall idDeclAnimWeb::GetBaseModel(idDeclAnimWeb *this)
|
||||
{
|
||||
if ( this->models.num <= 0 )
|
||||
return nullptr;
|
||||
else
|
||||
return *this->models.list;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclAnimWeb@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82603090
|
||||
// RVA : 0x00603090
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimweb.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclAnimWeb> *__fastcall idDeclAnimWeb::GetDeclInfo(idDeclAnimWeb *this)
|
||||
{
|
||||
return &idDeclAnimWeb::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,475 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclAnimWebEdge@@UAA@XZ
|
||||
// EA : 0x82605AB0
|
||||
// RVA : 0x00605AB0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclAnimWebEdge::~idDeclAnimWebEdge(idDeclAnimWebEdge *this)
|
||||
{
|
||||
this->__vftable = (idDeclAnimWebEdge_vtbl *)&idDeclAnimWebEdge::`vftable';
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclAnimWebEdge@@QAA@XZ
|
||||
// EA : 0x82605AC0
|
||||
// RVA : 0x00605AC0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclAnimWebEdge *__fastcall idDeclAnimWebEdge::idDeclAnimWebEdge(idDeclAnimWebEdge *this)
|
||||
{
|
||||
this->__vftable = (idDeclAnimWebEdge_vtbl *)&idDeclAnimWebEdge::`vftable';
|
||||
this->destSubWebIndex.value = -1;
|
||||
blendParms_t::blendParms_t(this: &this->blendParms);
|
||||
this->customFlags = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclAnimWebEdge@@QAAXPAVidDeclAnimWeb@@PAVidDeclAnimWebNode@@PAVidEdgeCache@2@AAVidParser@@@Z
|
||||
// EA : 0x82605B18
|
||||
// RVA : 0x00605B18
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclAnimWebEdge::Parse(
|
||||
idDeclAnimWebEdge *this,
|
||||
idDeclAnimWeb *decl,
|
||||
idDeclAnimWebNode *node,
|
||||
idDeclAnimWeb::idEdgeCache *edgeCache,
|
||||
idParser *src)
|
||||
{
|
||||
const char *SubWebName; // r3
|
||||
unsigned __int8 v11; // r23
|
||||
int len; // r22
|
||||
unsigned __int8 v13; // r11
|
||||
const enumTypeInfo_t *EnumInfo; // r3
|
||||
const enumTypeInfo_t *v15; // r27
|
||||
const enumValueInfo_t *EnumValueInfo; // r3
|
||||
char *data; // r5
|
||||
idIndex<short,enum idDeclAnimWeb::invalidStateIndex_t> v18; // [sp+50h] [-190h] BYREF
|
||||
__int16 v19; // [sp+52h] [-18Eh] BYREF
|
||||
idStr v20; // [sp+60h] [-180h] BYREF
|
||||
int v22; // [sp+84h] [-15Ch]
|
||||
idToken v23; // [sp+90h] [-150h] BYREF
|
||||
idToken v24; // [sp+E0h] [-100h] BYREF
|
||||
idToken v25; // [sp+130h] [-B0h] BYREF
|
||||
|
||||
v23.len = 0;
|
||||
v23.allocedAndFlag = 20;
|
||||
v23.floatvalue = -3.4028235e38;
|
||||
v23.data = v23.baseBuffer;
|
||||
v23.baseBuffer[0] = 0;
|
||||
v23.intvalue = 0;
|
||||
memset(&v23.whiteSpaceStart_p, 0, 12);
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 46, token: &v23);
|
||||
SubWebName = idDeclAnimWeb::GetSubWebName(
|
||||
this: decl,
|
||||
index: (const idIndex<short,enum idDeclAnimWeb::invalidSubWebIndex_t> *)(unsigned __int16)node->subWebIndex.value);
|
||||
idStr::idStr(this: &v20, text: SubWebName);
|
||||
v25.floatvalue = -3.4028235e38;
|
||||
v25.allocedAndFlag = 20;
|
||||
v25.data = v25.baseBuffer;
|
||||
v25.len = 0;
|
||||
v25.baseBuffer[0] = 0;
|
||||
v25.intvalue = 0;
|
||||
memset(&v25.whiteSpaceStart_p, 0, 12);
|
||||
idParser::ExpectTokenString(this: src, string: "toState");
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v25);
|
||||
v11 = edgeCache->flags & 0xFE;
|
||||
if ( idParser::CheckTokenString(this: src, string: "toSubWeb") != 0 )
|
||||
{
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v23);
|
||||
len = v23.len;
|
||||
idStr::EnsureAlloced(this: &v20, amount: v23.len + 1, keepold: false, geometricGrowth: false);
|
||||
memcpy(Dst: v20.data, Src: v23.data, Size: len);
|
||||
v20.data[len] = 0;
|
||||
v20.len = len;
|
||||
}
|
||||
if ( idParser::CheckTokenString(this: src, string: "weightScale") != 0 )
|
||||
{
|
||||
v22 = (int)(float)(idParser::ParseFloat(this: src, errorFlag: nullptr) * (float)16.0);
|
||||
v13 = v22;
|
||||
if ( v22 >= 0 )
|
||||
{
|
||||
if ( v22 > 255 )
|
||||
v13 = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
v13 = 0;
|
||||
}
|
||||
edgeCache->weightScale = v13;
|
||||
}
|
||||
if ( idParser::CheckTokenString(this: src, string: "randomizeWeight") != 0 )
|
||||
v11 |= idParser::ParseBool(this: src);
|
||||
if ( idParser::CheckTokenString(this: src, string: "blendParms") != 0 )
|
||||
blendParms_t::Parse(this: &this->blendParms, decl, node, toSubWebName: v20.data, toStateName: v25.data, src);
|
||||
if ( idParser::CheckTokenString(this: src, string: "customFlags") != 0 )
|
||||
{
|
||||
EnumInfo = idTypeInfoTools::FindEnumInfo(this: typeInfoTools, typeName: "animWebEdgeCustomFlag_t");
|
||||
v24.allocedAndFlag = 20;
|
||||
v24.floatvalue = -3.4028235e38;
|
||||
v15 = EnumInfo;
|
||||
v24.data = v24.baseBuffer;
|
||||
v24.len = 0;
|
||||
v24.baseBuffer[0] = 0;
|
||||
v24.intvalue = 0;
|
||||
memset(&v24.whiteSpaceStart_p, 0, 12);
|
||||
while ( idParser::ReadTokenOnLine(this: src, token: &v24) != 0 )
|
||||
{
|
||||
if ( v15 != nullptr )
|
||||
{
|
||||
EnumValueInfo = idTypeInfoTools::FindEnumValueInfo(
|
||||
this: typeInfoTools,
|
||||
enumInfo: v15,
|
||||
name: v24.data,
|
||||
defaultIfNotFound: false);
|
||||
if ( EnumValueInfo != nullptr )
|
||||
this->customFlags |= EnumValueInfo->value;
|
||||
else
|
||||
idLib::Warning(fmt: "unrecognized custom flag '%s'", v24.data);
|
||||
}
|
||||
}
|
||||
idStr::FreeData(this: &v24);
|
||||
}
|
||||
if ( v25.len != 0 )
|
||||
{
|
||||
v18.value = -1;
|
||||
idDeclAnimWeb::AddNode(
|
||||
this: decl,
|
||||
subWebName: v20.data,
|
||||
stateName: v25.data,
|
||||
nodeIndex: (idIndex<short,enum idDeclAnimWeb::invalidNodeIndex_t> *)edgeCache,
|
||||
subWebIndex: &this->destSubWebIndex,
|
||||
stateIndex: &v18);
|
||||
}
|
||||
else if ( v20.len != 0 )
|
||||
{
|
||||
data = v20.data;
|
||||
edgeCache->destNodeIndex.value = -1;
|
||||
this->destSubWebIndex.value = HIWORD(idDeclAnimWeb::AddSubWeb(
|
||||
this: (idDeclAnimWeb *)&v19,
|
||||
result: (idIndex<short,enum idDeclAnimWeb::invalidSubWebIndex_t> *)decl,
|
||||
subWebName: data)->__vftable);
|
||||
}
|
||||
else
|
||||
{
|
||||
idParser::Error(this: src, str: "idDeclAnimWebEdge: sub-web name cannot be empty.");
|
||||
}
|
||||
edgeCache->flags = v11;
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 47, token: &v23);
|
||||
idStr::FreeData(this: &v25);
|
||||
idStr::FreeData(this: &v20);
|
||||
idStr::FreeData(this: &v23);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219544
|
||||
// EA : 0x82605EA8
|
||||
// RVA : 0x00605EA8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219544()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 480 + 144));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219545
|
||||
// EA : 0x82605ED0
|
||||
// RVA : 0x00605ED0
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219545()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 480 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219546
|
||||
// EA : 0x82605EF8
|
||||
// RVA : 0x00605EF8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219546()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 480 + 304));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219547
|
||||
// EA : 0x82605F20
|
||||
// RVA : 0x00605F20
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219547()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 480 + 224));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Write@idDeclAnimWebEdge@@QBAXPBVidDeclAnimWeb@@PBVidDeclAnimWebNode@@PBVidEdgeCache@2@AAVidFile_String@@PBD@Z
|
||||
// EA : 0x82605F50
|
||||
// RVA : 0x00605F50
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclAnimWebEdge::Write(
|
||||
idDeclAnimWebEdge *this,
|
||||
const idDeclAnimWeb *decl,
|
||||
__int64 edgeCache,
|
||||
__int64 indent,
|
||||
__int64 a5)
|
||||
{
|
||||
int v7; // r26
|
||||
__int16 *v8; // r25
|
||||
idFile_String *v9; // r30
|
||||
unsigned int v10; // r29
|
||||
va *v11; // r3
|
||||
__int64 v12; // r10
|
||||
__int64 v13; // r8
|
||||
__int64 v14; // r6
|
||||
va *v15; // r3
|
||||
const char *StateName; // r3
|
||||
__int64 v17; // r10
|
||||
__int64 v18; // r8
|
||||
__int64 v19; // r8
|
||||
__int64 v20; // r6
|
||||
const char *SubWebName; // r3
|
||||
__int64 v22; // r10
|
||||
__int64 v23; // r8
|
||||
va *v24; // r3
|
||||
__int64 v25; // r10
|
||||
double v26; // fp0
|
||||
va *v27; // r3
|
||||
va *v28; // r3
|
||||
va *v29; // r3
|
||||
__int64 v30; // r6
|
||||
__int64 v31; // r10
|
||||
__int64 v32; // r8
|
||||
__int64 v33; // r10
|
||||
__int64 v34; // r6
|
||||
__int64 v35; // r8
|
||||
va *v36; // r3
|
||||
int v37; // [sp+8h] [-20B8h]
|
||||
int v38; // [sp+8h] [-20B8h]
|
||||
int v39; // [sp+8h] [-20B8h]
|
||||
int v40; // [sp+8h] [-20B8h]
|
||||
int v41; // [sp+Ch] [-20B4h]
|
||||
int v42; // [sp+Ch] [-20B4h]
|
||||
int v43; // [sp+Ch] [-20B4h]
|
||||
int v44; // [sp+Ch] [-20B4h]
|
||||
int v45; // [sp+10h] [-20B0h]
|
||||
int v46; // [sp+10h] [-20B0h]
|
||||
int v47; // [sp+10h] [-20B0h]
|
||||
int v48; // [sp+10h] [-20B0h]
|
||||
int v49; // [sp+14h] [-20ACh]
|
||||
int v50; // [sp+14h] [-20ACh]
|
||||
int v51; // [sp+14h] [-20ACh]
|
||||
int v52; // [sp+14h] [-20ACh]
|
||||
int v53; // [sp+18h] [-20A8h]
|
||||
int v54; // [sp+18h] [-20A8h]
|
||||
int v55; // [sp+18h] [-20A8h]
|
||||
int v56; // [sp+18h] [-20A8h]
|
||||
int v57; // [sp+1Ch] [-20A4h]
|
||||
int v58; // [sp+1Ch] [-20A4h]
|
||||
int v59; // [sp+1Ch] [-20A4h]
|
||||
int v60; // [sp+1Ch] [-20A4h]
|
||||
__int16 v61; // [sp+50h] [-2070h]
|
||||
idStr v62; // [sp+60h] [-2060h] BYREF
|
||||
va v63; // [sp+80h] [-2040h] BYREF
|
||||
va v64; // [sp+1080h] [-1040h] BYREF
|
||||
|
||||
v7 = HIDWORD(edgeCache);
|
||||
HIDWORD(edgeCache) = indent;
|
||||
v8 = (__int16 *)edgeCache;
|
||||
v9 = (idFile_String *)HIDWORD(indent);
|
||||
v10 = indent;
|
||||
v11 = va::va(
|
||||
this: &v63,
|
||||
fmt: "%sedge {\n",
|
||||
a3: edgeCache,
|
||||
a4: indent,
|
||||
a5,
|
||||
a6: v37,
|
||||
a7: v41,
|
||||
a8: v45,
|
||||
a9: v49,
|
||||
a10: v53,
|
||||
a11: v57);
|
||||
idFile_String::operator+=(this: v9, str: v11->buffer);
|
||||
v61 = *v8;
|
||||
if ( *v8 == -1 )
|
||||
{
|
||||
LODWORD(v12) = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
HIDWORD(v12) = decl->nodes.list;
|
||||
LODWORD(v13) = 4 * v61;
|
||||
LODWORD(v12) = *(_DWORD *)(v13 + HIDWORD(v12));
|
||||
}
|
||||
if ( v61 >= 0 )
|
||||
{
|
||||
StateName = idDeclAnimWeb::GetStateName(
|
||||
this: decl,
|
||||
index: (const idIndex<short,enum idDeclAnimWeb::invalidStateIndex_t> *)*(unsigned __int16 *)(v12 + 4));
|
||||
v15 = va::va(
|
||||
this: &v63,
|
||||
fmt: "%s\ttoState \"%s\"\n",
|
||||
a3: __SPAIR64__(v10, (unsigned int)StateName),
|
||||
a4: v18,
|
||||
a5: v17,
|
||||
a6: v38,
|
||||
a7: v42,
|
||||
a8: v46,
|
||||
a9: v50,
|
||||
a10: v54,
|
||||
a11: v58);
|
||||
}
|
||||
else
|
||||
{
|
||||
HIDWORD(v14) = v10;
|
||||
v15 = va::va(
|
||||
this: &v63,
|
||||
fmt: "%s\ttoState \"\"\n",
|
||||
a3: v14,
|
||||
a4: v13,
|
||||
a5: v12,
|
||||
a6: v38,
|
||||
a7: v42,
|
||||
a8: v46,
|
||||
a9: v50,
|
||||
a10: v54,
|
||||
a11: v58);
|
||||
}
|
||||
idFile_String::operator+=(this: v9, str: v15->buffer);
|
||||
if ( this->destSubWebIndex.value != *(__int16 *)(v7 + 2) )
|
||||
{
|
||||
SubWebName = idDeclAnimWeb::GetSubWebName(
|
||||
this: decl,
|
||||
index: (const idIndex<short,enum idDeclAnimWeb::invalidSubWebIndex_t> *)(unsigned __int16)this->destSubWebIndex.value);
|
||||
v24 = va::va(
|
||||
this: &v63,
|
||||
fmt: "%s\ttoSubWeb \"%s\"\n",
|
||||
a3: __SPAIR64__(v10, (unsigned int)SubWebName),
|
||||
a4: v23,
|
||||
a5: v22,
|
||||
a6: v39,
|
||||
a7: v43,
|
||||
a8: v47,
|
||||
a9: v51,
|
||||
a10: v55,
|
||||
a11: v59);
|
||||
idFile_String::operator+=(this: v9, str: v24->buffer);
|
||||
}
|
||||
LODWORD(v19) = *((unsigned __int8 *)v8 + 2);
|
||||
LODWORD(v25) = &unk_821B0000;
|
||||
HIDWORD(v25) = 0x82000000;
|
||||
v26 = (float)((float)v19 * (float)0.0625);
|
||||
if ( v26 != 1.0 )
|
||||
{
|
||||
v27 = va::va(
|
||||
this: &v63,
|
||||
fmt: "%s\tweightScale %g\n",
|
||||
a3: __SPAIR64__(v10, LODWORD(v26)),
|
||||
a4: v19,
|
||||
a5: v25,
|
||||
a6: v39,
|
||||
a7: v43,
|
||||
a8: v47,
|
||||
a9: v51,
|
||||
a10: v55,
|
||||
a11: v59,
|
||||
v26);
|
||||
idFile_String::operator+=(this: v9, str: v27->buffer);
|
||||
}
|
||||
LODWORD(v25) = *((_BYTE *)v8 + 3) & 1;
|
||||
if ( (*((_BYTE *)v8 + 3) & 1) != 0 )
|
||||
{
|
||||
HIDWORD(v20) = v10;
|
||||
v28 = va::va(
|
||||
this: &v63,
|
||||
fmt: "%s\trandomizeWeight 1\n",
|
||||
a3: v20,
|
||||
a4: v19,
|
||||
a5: v25,
|
||||
a6: v39,
|
||||
a7: v43,
|
||||
a8: v47,
|
||||
a9: v51,
|
||||
a10: v55,
|
||||
a11: v59);
|
||||
idFile_String::operator+=(this: v9, str: v28->buffer);
|
||||
}
|
||||
HIDWORD(v20) = v10;
|
||||
v29 = va::va(
|
||||
this: &v63,
|
||||
fmt: "%s\t",
|
||||
a3: v20,
|
||||
a4: v19,
|
||||
a5: v25,
|
||||
a6: v39,
|
||||
a7: v43,
|
||||
a8: v47,
|
||||
a9: v51,
|
||||
a10: v55,
|
||||
a11: v59);
|
||||
idStr::idStr(this: &v62, text: v29);
|
||||
HIDWORD(v30) = v62.data;
|
||||
blendParms_t::Write(this: &this->blendParms, str: v9, indent: v30, a4: v32, a5: v31);
|
||||
LODWORD(v33) = &unk_821B0000;
|
||||
HIDWORD(v34) = v10;
|
||||
v36 = va::va(
|
||||
this: &v64,
|
||||
fmt: "%s}\n",
|
||||
a3: v34,
|
||||
a4: v35,
|
||||
a5: v33,
|
||||
a6: v40,
|
||||
a7: v44,
|
||||
a8: v48,
|
||||
a9: v52,
|
||||
a10: v56,
|
||||
a11: v60);
|
||||
idFile_String::operator+=(this: v9, str: v36->buffer);
|
||||
idStr::FreeData(this: &v62);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219837
|
||||
// EA : 0x82606154
|
||||
// RVA : 0x00606154
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebedge.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219837()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 8384 + 96));
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,174 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?NumCoordinateDimensions@idModelInfo@idDeclAnimWebNode@@QBAHXZ
|
||||
// EA : 0x82582E40
|
||||
// RVA : 0x00582E40
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebnode.h
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclAnimWebNode::idModelInfo::NumCoordinateDimensions(idDeclAnimWebNode::idModelInfo *this)
|
||||
{
|
||||
idList<float,32> *coordinates; // r11
|
||||
char v2; // r10
|
||||
int num; // r10
|
||||
signed int v4; // r9
|
||||
|
||||
coordinates = this->coordinates;
|
||||
if ( coordinates == nullptr || coordinates->num <= 0 || (v2 = 1, this->animProps.num <= 0) )
|
||||
v2 = 0;
|
||||
if ( v2 == 0 )
|
||||
return 0;
|
||||
num = coordinates->num;
|
||||
v4 = this->animProps.num;
|
||||
__twllei(v4, 0);
|
||||
__twlgei(v4 & ~(__ROL4__(num, 1) - 1), 0xFFFFFFFF);
|
||||
return num / v4;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idModelInfo@idDeclAnimWebNode@@QAA@XZ
|
||||
// EA : 0x825920B8
|
||||
// RVA : 0x005920B8
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebnode.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclAnimWebNode::idModelInfo::~idModelInfo(idDeclAnimWebNode::idModelInfo *this)
|
||||
{
|
||||
idDeclAnimWebNode::idModelInfo::SetNumCoordinateDimensions(this, numDimensions: 0);
|
||||
idDeclAnimWebNode::idModelInfo::UpdateTagGroupsList(this, numTagGroups: 0);
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->animProps);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$688315
|
||||
// EA : 0x8259210C
|
||||
// RVA : 0x0059210C
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebnode.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_688315()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 112 + 132) + 12));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??4idModelInfo@idDeclAnimWebNode@@QAAABV01@ABV01@@Z
|
||||
// EA : 0x82592138
|
||||
// RVA : 0x00592138
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebnode.h
|
||||
// ========================================================================
|
||||
|
||||
const idDeclAnimWebNode::idModelInfo *__fastcall idDeclAnimWebNode::idModelInfo::operator=(
|
||||
idDeclAnimWebNode::idModelInfo *this,
|
||||
idDeclAnimWebNode::idModelInfo *other)
|
||||
{
|
||||
int v4; // r29
|
||||
|
||||
if ( other != this )
|
||||
{
|
||||
this->blendEq.str = other->blendEq.str;
|
||||
this->blendEqFixed.str = other->blendEqFixed.str;
|
||||
idList<idMD6AnimProps,32>::operator=(this: &this->animProps, other: &other->animProps);
|
||||
this->modelIndex.value = other->modelIndex.value;
|
||||
v4 = idDeclAnimWebNode::idModelInfo::NumCoordinateDimensions(this: other);
|
||||
idDeclAnimWebNode::idModelInfo::SetNumCoordinateDimensions(this, numDimensions: v4);
|
||||
if ( v4 > 0 )
|
||||
idList<float,32>::operator=(this: this->coordinates, other: other->coordinates);
|
||||
idDeclAnimWebNode::idModelInfo::CopyTagGroups(this, other);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?NumTagGroups@idModelInfo@idDeclAnimWebNode@@QBAHXZ
|
||||
// EA : 0x825F8E38
|
||||
// RVA : 0x005F8E38
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebnode.h
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclAnimWebNode::idModelInfo::NumTagGroups(idDeclAnimWebNode::idModelInfo *this)
|
||||
{
|
||||
idList<idDeclAnimWebTagGroup,32> *tagGroups; // r11
|
||||
|
||||
tagGroups = this->tagGroups;
|
||||
if ( tagGroups != nullptr )
|
||||
return tagGroups->num;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetCoordinate@idModelInfo@idDeclAnimWebNode@@QAAXHABV?$idList@M$04@@@Z
|
||||
// EA : 0x82606428
|
||||
// RVA : 0x00606428
|
||||
// PDB : w:\tech5\engine\decls\animwebs\declanimwebnode.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclAnimWebNode::idModelInfo::SetCoordinate(
|
||||
idDeclAnimWebNode::idModelInfo *this,
|
||||
const int propIndex,
|
||||
const idList<float,5> *value)
|
||||
{
|
||||
idList<float,32> *coordinates; // r11
|
||||
char v4; // r11
|
||||
int num; // r29
|
||||
int v6; // r11
|
||||
int v7; // r28
|
||||
int v8; // r10
|
||||
int v9; // r9
|
||||
int v10; // r27
|
||||
int v11; // r26
|
||||
float *v12; // r7
|
||||
int v13; // r11
|
||||
int v14; // r10
|
||||
int v15; // ctr
|
||||
|
||||
coordinates = this->coordinates;
|
||||
if ( coordinates == nullptr || coordinates->num <= 0 || (v4 = 1, this->animProps.num <= 0) )
|
||||
v4 = 0;
|
||||
if ( v4 != 0 )
|
||||
{
|
||||
num = value->num;
|
||||
v6 = 0;
|
||||
v7 = num * propIndex;
|
||||
if ( num >= 4 )
|
||||
{
|
||||
v8 = 0;
|
||||
v9 = v7;
|
||||
do
|
||||
{
|
||||
v10 = v7 + 2 + v6;
|
||||
v11 = v7 + 3 + v6;
|
||||
v6 += 4;
|
||||
this->coordinates->list[v9] = value->list[v8];
|
||||
v12 = &this->coordinates->list[v9];
|
||||
v9 += 4;
|
||||
v12[1] = value->list[v8 + 1];
|
||||
this->coordinates->list[v10] = value->list[v8 + 2];
|
||||
this->coordinates->list[v11] = value->list[v8 + 3];
|
||||
v8 += 4;
|
||||
}
|
||||
while ( v6 < num - 3 );
|
||||
}
|
||||
if ( v6 < num )
|
||||
{
|
||||
v14 = v6 + v7;
|
||||
v15 = num - v6;
|
||||
v13 = v6;
|
||||
do
|
||||
{
|
||||
this->coordinates->list[v14++] = value->list[v13++];
|
||||
--v15;
|
||||
}
|
||||
while ( v15 != 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclAF@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82613908
|
||||
// RVA : 0x00613908
|
||||
// PDB : w:\tech5\engine\decls\declaf.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclAF> *__fastcall idDeclAF::GetDeclInfo(idDeclAF *this)
|
||||
{
|
||||
return &idDeclAF::resourceList;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,27 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclBreakable@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82616010
|
||||
// RVA : 0x00616010
|
||||
// PDB : w:\tech5\engine\decls\declbreakable.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclBreakable> *__fastcall idDeclBreakable::GetDeclInfo(idDeclBreakable *this)
|
||||
{
|
||||
return &idDeclBreakable::resourceList;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclDestructiblePieceInfo@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82622DC0
|
||||
// RVA : 0x00622DC0
|
||||
// PDB : w:\tech5\engine\decls\declbreakable.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclDestructiblePieceInfo> *__fastcall idDeclDestructiblePieceInfo::GetDeclInfo(
|
||||
idDeclDestructiblePieceInfo *this)
|
||||
{
|
||||
return &idDeclDestructiblePieceInfo::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclDragJoints@@QAA@XZ
|
||||
// EA : 0x826182E0
|
||||
// RVA : 0x006182E0
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclDragJoints *__fastcall idDeclDragJoints::idDeclDragJoints(idDeclDragJoints *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->__vftable = (idDeclDragJoints_vtbl *)&idDeclDragJoints::`vftable';
|
||||
this->baseJoint.len = 0;
|
||||
this->baseJoint.allocedAndFlag = 20;
|
||||
this->baseJoint.data = this->baseJoint.baseBuffer;
|
||||
this->baseJoint.baseBuffer[0] = 0;
|
||||
this->joints.granularity = 0;
|
||||
this->joints.listStatic = 0;
|
||||
this->joints.memTag = 5;
|
||||
this->joints.list = nullptr;
|
||||
this->joints.size = 0;
|
||||
this->joints.num = 0;
|
||||
this->subWebs.granularity = 0;
|
||||
this->subWebs.memTag = 5;
|
||||
this->subWebs.listStatic = 0;
|
||||
this->subWebs.list = nullptr;
|
||||
this->subWebs.size = 0;
|
||||
this->subWebs.num = 0;
|
||||
this->ghostJointDistance = 16.0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219278
|
||||
// EA : 0x82618398
|
||||
// RVA : 0x00618398
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219278()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219279
|
||||
// EA : 0x826183C0
|
||||
// RVA : 0x006183C0
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219279()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 68));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219280
|
||||
// EA : 0x826183EC
|
||||
// RVA : 0x006183EC
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219280()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(*(_DWORD *)(v0 - 112 + 132) + 100));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclDragJoints@@UAA@XZ
|
||||
// EA : 0x82618430
|
||||
// RVA : 0x00618430
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclDragJoints::~idDeclDragJoints(idDeclDragJoints *this)
|
||||
{
|
||||
idStr *list; // r3
|
||||
idJointName *v3; // r3
|
||||
|
||||
this->__vftable = (idDeclDragJoints_vtbl *)&idDeclDragJoints::`vftable';
|
||||
if ( this->subWebs.listStatic == 0 || this->subWebs.listStatic == 2 )
|
||||
{
|
||||
list = this->subWebs.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idStr>(ptr: list, num: this->subWebs.size);
|
||||
this->subWebs.list = nullptr;
|
||||
this->subWebs.size = 0;
|
||||
}
|
||||
this->subWebs.num = 0;
|
||||
if ( this->joints.listStatic == 0 || this->joints.listStatic == 2 )
|
||||
{
|
||||
v3 = this->joints.list;
|
||||
if ( v3 != nullptr )
|
||||
idListArrayDelete<idStr>(ptr: v3, num: this->joints.size);
|
||||
this->joints.list = nullptr;
|
||||
this->joints.size = 0;
|
||||
}
|
||||
this->joints.num = 0;
|
||||
idStr::FreeData(this: &this->baseJoint);
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219375
|
||||
// EA : 0x826184D8
|
||||
// RVA : 0x006184D8
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219375()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219376
|
||||
// EA : 0x82618500
|
||||
// RVA : 0x00618500
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219376()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 68));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219377
|
||||
// EA : 0x8261852C
|
||||
// RVA : 0x0061852C
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219377()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(*(_DWORD *)(v0 - 112 + 132) + 100));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclDragJoints@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82618418
|
||||
// RVA : 0x00618418
|
||||
// PDB : w:\tech5\engine\decls\decldragjoints.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclDragJoints> *__fastcall idDeclDragJoints::GetDeclInfo(idDeclDragJoints *this)
|
||||
{
|
||||
return &idDeclDragJoints::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclElectricBolt@@QAA@XZ
|
||||
// EA : 0x826185B8
|
||||
// RVA : 0x006185B8
|
||||
// PDB : w:\tech5\engine\decls\declelectricbolt.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclElectricBolt *__fastcall idDeclElectricBolt::idDeclElectricBolt(idDeclElectricBolt *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->__vftable = (idDeclElectricBolt_vtbl *)&idDeclElectricBolt::`vftable';
|
||||
this->maxDeviation = 50.0;
|
||||
this->startWidth = 10.0;
|
||||
this->endWidth = 10.0;
|
||||
this->material = nullptr;
|
||||
this->applyGradient = false;
|
||||
this->revealTime = 0;
|
||||
this->color.x = 1.0;
|
||||
this->color.y = 1.0;
|
||||
this->color.z = 1.0;
|
||||
this->color.w = 1.0;
|
||||
this->subdivisions = 1;
|
||||
this->brightness = 1.0;
|
||||
this->maxBranchLevels = 0;
|
||||
this->branchProbability = 0.2;
|
||||
this->branchStartWidth = 5.0;
|
||||
this->branchEndWidth = 5.0;
|
||||
this->branchLength.y = 20.0;
|
||||
this->branchLength.x = 10.0;
|
||||
this->branchSubdivisions = 2;
|
||||
this->jitterTable = nullptr;
|
||||
this->jitterFalloffTable = nullptr;
|
||||
this->maxBranchAngle = 10.0;
|
||||
this->maxBranchDeviation = 15.0;
|
||||
this->jitterDecay = 0.0;
|
||||
this->jitterSpeed = 0.0099999998;
|
||||
this->jitterLeftMag.x = 0.0;
|
||||
this->jitterLeftMag.y = 0.0;
|
||||
this->jitterUpMag.x = 0.0;
|
||||
this->jitterUpMag.y = 0.0;
|
||||
this->useBranchOverride = false;
|
||||
this->branchOverride.material = nullptr;
|
||||
this->branchOverride.frames = 1;
|
||||
this->branchOverride.width = 10;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclElectricBolt@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x826186D8
|
||||
// RVA : 0x006186D8
|
||||
// PDB : w:\tech5\engine\decls\declelectricbolt.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclElectricBolt> *__fastcall idDeclElectricBolt::GetDeclInfo(idDeclElectricBolt *this)
|
||||
{
|
||||
return &idDeclElectricBolt::resourceList;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclEntityDef@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82618B98
|
||||
// RVA : 0x00618B98
|
||||
// PDB : w:\tech5\engine\decls\declentitydef.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclEntityDef> *__fastcall idDeclEntityDef::GetDeclInfo(idDeclEntityDef *this)
|
||||
{
|
||||
return &idDeclEntityDef::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,222 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?DefaultDefinition@idDeclEnv@@UBAPBDXZ
|
||||
// EA : 0x8261B378
|
||||
// RVA : 0x0061B378
|
||||
// PDB : w:\tech5\engine\decls\declenv.cpp
|
||||
// ========================================================================
|
||||
|
||||
const char *__fastcall idDeclEnv::DefaultDefinition(idDeclEnv *this)
|
||||
{
|
||||
return "{\n"
|
||||
"\trenderParms {\n"
|
||||
"\t\tenvBlendTime\t\t\t2.2\n"
|
||||
"\t\tuserEnvMap\t\t\t\tenv/default_px\n"
|
||||
"\t\tambientEnvMap\t\t\tenv/ambiTest_px\n"
|
||||
"\t\tenvMapRotation\t\t\t{ 0, 0, 0 }\n"
|
||||
"\t\tcbShadow\t\t\t\t{ 0, 0, 0 }\n"
|
||||
"\t\tcbMidtone\t\t\t\t{ 0, 0, 0 }\n"
|
||||
"\t\tcbHighlight\t\t\t\t{ 0, 0, 0 }\n"
|
||||
"\t\tcbDesaturate\t\t\t0\n"
|
||||
"\t\tcbBrightness\t\t\t{ 1, 1, 1, 1 }\n"
|
||||
"\t\tcbColorDodge\t\t\t{ 0, 0, 0, 0 }\n"
|
||||
"\t\tcbColorBurn\t\t\t\t{ 1, 1, 1, 1 }\n"
|
||||
"\t\tcbColorMultiply\t\t\t{ 1, 1, 1, 1 }\n"
|
||||
"\t\tcbColorScreen\t\t\t{ 0, 0, 0, 0 }\n"
|
||||
"\t\tdepthBasedColorGrading\t{ 0, 0, 0, 0 }\n"
|
||||
"\t\tfogColor\t\t\t\t{ 0.2, 0.43, 0.5, 0.0 }\n"
|
||||
"\t\tfogScale\t\t\t\t0.00005\n"
|
||||
"\t\tfogStart\t\t\t\t0.0\n"
|
||||
"\t\tfogEnd\t\t\t\t\t32000.0\n"
|
||||
"\t\tnewAmbientScale\t\t\t{ 0.3, 0.3, 0.3 }\n"
|
||||
"\t\texposure\t\t\t\t1.0\n"
|
||||
"\t\tglareScale\t\t\t\t0.3\n"
|
||||
"\t\tdepthOfField\t\t\t{ 1.0, 1.0, 5500.0, 1.0 }\n"
|
||||
"\t\tscreenOverlay\t\t\t_white\n"
|
||||
"\t\toverlayOpacity\t\t\t0\n"
|
||||
"\t\tgrainMap\t\t\t\ttextures/common/postgrain\n"
|
||||
"\t\tgrainAmount\t\t\t\t0.03\n"
|
||||
"\t\tgrainHz\t\t\t\t\t20\n"
|
||||
"\t\tgrainLevelsMin\t\t\t0\n"
|
||||
"\t\tgrainLevelsMax\t\t\t1\n"
|
||||
"\t}\n"
|
||||
"}\n";
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FreeData@idDeclEnv@@UAAXXZ
|
||||
// EA : 0x8261B388
|
||||
// RVA : 0x0061B388
|
||||
// PDB : w:\tech5\engine\decls\declenv.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclEnv::FreeData(idDeclEnv *this)
|
||||
{
|
||||
idParmBlock::Clear(this: &this->parmBlock);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclEnv@@UAAXAAVidParser@@@Z
|
||||
// EA : 0x8261B398
|
||||
// RVA : 0x0061B398
|
||||
// PDB : w:\tech5\engine\decls\declenv.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclEnv::Parse(idDeclEnv *this, idParser *src)
|
||||
{
|
||||
char *data; // r11
|
||||
const idDecl *v5; // r30
|
||||
const idDecl *v6; // r3
|
||||
char v7; // r11
|
||||
char *v8; // r4
|
||||
idParmBlock v9; // [sp+50h] [-F0h] BYREF
|
||||
idToken v10[2]; // [sp+80h] [-C0h] BYREF
|
||||
|
||||
v10[0].len = 0;
|
||||
v10[0].allocedAndFlag = 20;
|
||||
v10[0].floatvalue = -3.4028235e38;
|
||||
v10[0].data = v10[0].baseBuffer;
|
||||
v10[0].baseBuffer[0] = 0;
|
||||
v10[0].intvalue = 0;
|
||||
v10[0].whiteSpaceStart_p = nullptr;
|
||||
v10[0].whiteSpaceEnd_p = nullptr;
|
||||
v10[0].next = nullptr;
|
||||
this->FreeData(this);
|
||||
idParmBlock::idParmBlock(this: &v9, threadId: THREAD_MAIN);
|
||||
if ( idParser::ReadToken(this: src, token: v10) )
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
if ( idStr::Cmp(s1: v10[0].data, s2: "}") == 0 )
|
||||
{
|
||||
idParmBlock::Append(this: &this->parmBlock, block: &v9);
|
||||
this->blendDuration = idParmBlock::GetFloat(
|
||||
this: &this->parmBlock,
|
||||
parm: (const idDeclRenderParm *)rpBlendDuration.r);
|
||||
idParmBlock::~idParmBlock(this: &v9);
|
||||
goto LABEL_29;
|
||||
}
|
||||
if ( idStr::Icmp(s1: v10[0].data, s2: "inherit") == 0 )
|
||||
{
|
||||
if ( !idParser::ExpectTokenString(this: src, string: "{") )
|
||||
goto _M219370;
|
||||
if ( idParser::ExpectTokenType(this: src, type: 4, subtype: 0, token: v10) == 0 )
|
||||
{
|
||||
idParser::Error(this: src, str: "idDeclEnv::Parse Failed to parse inherit data\n");
|
||||
idParmBlock::~idParmBlock(this: &v9);
|
||||
goto LABEL_29;
|
||||
}
|
||||
if ( !idParser::ExpectTokenString(this: src, string: "}") )
|
||||
{
|
||||
idParser::Error(this: src, str: "idDeclEnv::Parse Unexpected token, missing '}'\n");
|
||||
idParmBlock::~idParmBlock(this: &v9);
|
||||
goto LABEL_29;
|
||||
}
|
||||
if ( v10[0].len != 0 )
|
||||
break;
|
||||
}
|
||||
LABEL_18:
|
||||
if ( idStr::Icmp(s1: v10[0].data, s2: "renderParms") == 0 )
|
||||
{
|
||||
if ( !idParser::ExpectTokenString(this: src, string: "{") )
|
||||
{
|
||||
_M219370:
|
||||
idParser::Error(this: src, str: "idDeclEnv::Parse Unexpected token, missing '{'\n");
|
||||
idParmBlock::~idParmBlock(this: &v9);
|
||||
goto LABEL_29;
|
||||
}
|
||||
idParmBlock::Parse(this: &v9, src);
|
||||
if ( idParser::HadWarning(this: src) )
|
||||
{
|
||||
idParmBlock::~idParmBlock(this: &v9);
|
||||
goto LABEL_29;
|
||||
}
|
||||
}
|
||||
if ( !idParser::ReadToken(this: src, token: v10) )
|
||||
goto LABEL_22;
|
||||
}
|
||||
data = v10[0].data;
|
||||
if ( v10[0].data != nullptr )
|
||||
{
|
||||
v6 = idDeclInfo::FindWithInheritance(this: &idDeclEnv::resourceList, name: v10[0].data, makeDefault: false);
|
||||
v5 = v6;
|
||||
if ( v6 != nullptr )
|
||||
{
|
||||
idParmBlock::Append(this: &this->parmBlock, block: (const idParmBlock *)&v6[1]);
|
||||
v7 = 1;
|
||||
goto LABEL_14;
|
||||
}
|
||||
data = v10[0].data;
|
||||
}
|
||||
else
|
||||
{
|
||||
v5 = nullptr;
|
||||
}
|
||||
idParser::Warning(this: src, str: "idDeclEnv::Parse - Invalid base decl '%s'", data);
|
||||
v7 = 0;
|
||||
LABEL_14:
|
||||
if ( v7 != 0 )
|
||||
{
|
||||
declManager->AddDependency_2(this: declManager, a2: (idDecl *)this, a3: v5);
|
||||
v8 = v10[0].data;
|
||||
}
|
||||
else
|
||||
{
|
||||
v8 = &byte_8200D768;
|
||||
}
|
||||
idAtomicString::Set(this: &this->parentDeclName, str_: v8);
|
||||
goto LABEL_18;
|
||||
}
|
||||
LABEL_22:
|
||||
idParser::Error(this: src, str: "idDeclEnv::Parse Unexpected End of File\n");
|
||||
idParmBlock::~idParmBlock(this: &v9);
|
||||
LABEL_29:
|
||||
idStr::FreeData(this: &v10[0]);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219193
|
||||
// EA : 0x8261B6AC
|
||||
// RVA : 0x0061B6AC
|
||||
// PDB : w:\tech5\engine\decls\declenv.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219193()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 320 + 128));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219194
|
||||
// EA : 0x8261B6D4
|
||||
// RVA : 0x0061B6D4
|
||||
// PDB : w:\tech5\engine\decls\declenv.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219194()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idParmBlock::~idParmBlock(this: (idParmBlock *)(v0 - 320 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'rpBlendDuration''
|
||||
// EA : 0x83336668
|
||||
// RVA : 0x01336668
|
||||
// PDB : w:\tech5\engine\decls\declenv.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _dynamic_initializer_for__rpBlendDuration__()
|
||||
{
|
||||
rpBlendDuration.next = idBaseCodeResource::codeResourceList;
|
||||
idBaseCodeResource::codeResourceList = (idBaseCodeResource *)&rpBlendDuration;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclEnv@@QAA@XZ
|
||||
// EA : 0x82620368
|
||||
// RVA : 0x00620368
|
||||
// PDB : w:\tech5\engine\decls\declenv.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclEnv *__fastcall idDeclEnv::idDeclEnv(idDeclEnv *this)
|
||||
{
|
||||
idDecl::idDecl(this: &this->idDecl);
|
||||
this->__vftable = (idDeclEnv_vtbl *)&idDeclEnv::`vftable';
|
||||
idParmBlock::idParmBlock(this: &this->parmBlock, threadId: THREAD_MAIN);
|
||||
this->parentDeclName.str = &byte_8200D768;
|
||||
this->blendDuration = 2.2;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221396
|
||||
// EA : 0x826203E0
|
||||
// RVA : 0x006203E0
|
||||
// PDB : w:\tech5\engine\decls\declenv.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221396()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDecl::~idDecl(this: *(idDecl **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclEnv@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82620408
|
||||
// RVA : 0x00620408
|
||||
// PDB : w:\tech5\engine\decls\declenv.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclEnv> *__fastcall idDeclEnv::GetDeclInfo(idDeclEnv *this)
|
||||
{
|
||||
return &idDeclEnv::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??1idCrosshairInfo@@QAA@XZ
|
||||
// EA : 0x8261B700
|
||||
// RVA : 0x0061B700
|
||||
// PDB : w:\tech5\engine\decls\declflare.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idCrosshairInfo::~idCrosshairInfo(idDeclFlare *this)
|
||||
{
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->subflares);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclFlare@@QAA@XZ
|
||||
// EA : 0x8261B710
|
||||
// RVA : 0x0061B710
|
||||
// PDB : w:\tech5\engine\decls\declflare.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclFlare *__fastcall idDeclFlare::idDeclFlare(idDeclFlare *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->__vftable = (idDeclFlare_vtbl *)&idDeclFlare::`vftable';
|
||||
this->subflares.list = nullptr;
|
||||
this->subflares.granularity = 0;
|
||||
this->subflares.memTag = 79;
|
||||
this->subflares.listStatic = 0;
|
||||
this->subflares.size = 0;
|
||||
this->subflares.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->subflares);
|
||||
*((_BYTE *)this + 80) &= ~0x80u;
|
||||
this->viewAngleFade = 0.0;
|
||||
this->invViewAngleFade = 1.0;
|
||||
this->brightness = 1.0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->subflares);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219129
|
||||
// EA : 0x8261B7A4
|
||||
// RVA : 0x0061B7A4
|
||||
// PDB : w:\tech5\engine\decls\declflare.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219129()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 128 + 148));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219130
|
||||
// EA : 0x8261B7CC
|
||||
// RVA : 0x0061B7CC
|
||||
// PDB : w:\tech5\engine\decls\declflare.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219130()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 128 + 148) + 64));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclFlare@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8261B7F8
|
||||
// RVA : 0x0061B7F8
|
||||
// PDB : w:\tech5\engine\decls\declflare.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclFlare> *__fastcall idDeclFlare::GetDeclInfo(idDeclFlare *this)
|
||||
{
|
||||
return &idDeclFlare::resourceList;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclFX@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8261FA90
|
||||
// RVA : 0x0061FA90
|
||||
// PDB : w:\tech5\engine\decls\declfx.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclFX> *__fastcall idDeclFX::GetDeclInfo(idDeclFX *this)
|
||||
{
|
||||
return &idDeclFX::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclGameTime@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x826202E8
|
||||
// RVA : 0x006202E8
|
||||
// PDB : w:\tech5\engine\decls\declgametime.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclGameTime> *__fastcall idDeclGameTime::GetDeclInfo(idDeclGameTime *this)
|
||||
{
|
||||
return &idDeclGameTime::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,577 @@
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclRenderParm::resourceList''
|
||||
// EA : 0x83336688
|
||||
// RVA : 0x01336688
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclRenderParm::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclRenderParm::resourceList,
|
||||
identifier: "renderParm",
|
||||
classname: "idDeclRenderParm",
|
||||
fileExt: "rpa");
|
||||
idDeclRenderParm::resourceList.__vftable = (idDeclInfoTemplate<idDeclRenderParm>_vtbl *)&idDeclInfoTemplate<idDeclRenderParm>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclRenderParm::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclRenderProg::resourceList''
|
||||
// EA : 0x833366E8
|
||||
// RVA : 0x013366E8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclRenderProg::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclRenderProg::resourceList,
|
||||
identifier: "renderProg",
|
||||
classname: "idDeclRenderProg",
|
||||
fileExt: "rpr");
|
||||
idDeclRenderProg::resourceList.__vftable = (idDeclInfoTemplate<idDeclRenderProg>_vtbl *)&idDeclInfoTemplate<idDeclRenderProg>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclRenderProg::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclEntityDef::resourceList''
|
||||
// EA : 0x83336748
|
||||
// RVA : 0x01336748
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclEntityDef::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclEntityDef::resourceList,
|
||||
identifier: "entityDef",
|
||||
classname: "idDeclEntityDef",
|
||||
fileExt: "def");
|
||||
idDeclEntityDef::resourceList.__vftable = (idDeclInfoTemplate<idDeclEntityDef>_vtbl *)&idDeclInfoTemplate<idDeclEntityDef>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclEntityDef::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idMaterial::resourceList''
|
||||
// EA : 0x833367A8
|
||||
// RVA : 0x013367A8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idMaterial::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idMaterial::resourceList,
|
||||
identifier: "material",
|
||||
classname: "idMaterial",
|
||||
fileExt: "m2");
|
||||
idMaterial::resourceList.__vftable = (idDeclInfoTemplate<idMaterial>_vtbl *)&idDeclInfoTemplate<idMaterial>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idMaterial::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclParticle::resourceList''
|
||||
// EA : 0x83336808
|
||||
// RVA : 0x01336808
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclParticle::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclParticle::resourceList,
|
||||
identifier: "particle",
|
||||
classname: "idDeclParticle",
|
||||
fileExt: "prt");
|
||||
idDeclParticle::resourceList.__vftable = (idDeclInfoTemplate<idDeclParticle>_vtbl *)&idDeclInfoTemplate<idDeclParticle>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclParticle::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclCloth::resourceList''
|
||||
// EA : 0x83336868
|
||||
// RVA : 0x01336868
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclCloth::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclCloth::resourceList,
|
||||
identifier: "cloth",
|
||||
classname: "idDeclCloth",
|
||||
fileExt: "cloth");
|
||||
idDeclCloth::resourceList.__vftable = (idDeclInfoTemplate<idDeclCloth>_vtbl *)&idDeclInfoTemplate<idDeclCloth>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclCloth::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclMD6::resourceList''
|
||||
// EA : 0x833368C8
|
||||
// RVA : 0x013368C8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclMD6::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclMD6::resourceList,
|
||||
identifier: "md6Def",
|
||||
classname: "idDeclMD6",
|
||||
fileExt: "md6def");
|
||||
idDeclMD6::resourceList.__vftable = (idDeclInfoTemplate<idDeclMD6>_vtbl *)&idDeclInfoTemplate<idDeclMD6>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclMD6::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclAF::resourceList''
|
||||
// EA : 0x83336928
|
||||
// RVA : 0x01336928
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclAF::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclAF::resourceList,
|
||||
identifier: "articulatedFigure",
|
||||
classname: "idDeclAF",
|
||||
fileExt: "af");
|
||||
idDeclAF::resourceList.__vftable = (idDeclInfoTemplate<idDeclAF>_vtbl *)&idDeclInfoTemplate<idDeclAF>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclAF::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclWalkIK::resourceList''
|
||||
// EA : 0x83336988
|
||||
// RVA : 0x01336988
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclWalkIK::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclWalkIK::resourceList,
|
||||
identifier: "walkIK",
|
||||
classname: "idDeclWalkIK",
|
||||
fileExt: "walkik");
|
||||
idDeclWalkIK::resourceList.__vftable = (idDeclInfoTemplate<idDeclWalkIK>_vtbl *)&idDeclInfoTemplate<idDeclWalkIK>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclWalkIK::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclReachIK::resourceList''
|
||||
// EA : 0x833369E8
|
||||
// RVA : 0x013369E8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclReachIK::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclReachIK::resourceList,
|
||||
identifier: "reachIK",
|
||||
classname: "idDeclReachIK",
|
||||
fileExt: "reachik");
|
||||
idDeclReachIK::resourceList.__vftable = (idDeclInfoTemplate<idDeclReachIK>_vtbl *)&idDeclInfoTemplate<idDeclReachIK>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclReachIK::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclRollBones::resourceList''
|
||||
// EA : 0x83336A48
|
||||
// RVA : 0x01336A48
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclRollBones::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclRollBones::resourceList,
|
||||
identifier: "rollBones",
|
||||
classname: "idDeclRollBones",
|
||||
fileExt: "rollbones");
|
||||
idDeclRollBones::resourceList.__vftable = (idDeclInfoTemplate<idDeclRollBones>_vtbl *)&idDeclInfoTemplate<idDeclRollBones>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclRollBones::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclDragJoints::resourceList''
|
||||
// EA : 0x83336AA8
|
||||
// RVA : 0x01336AA8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclDragJoints::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclDragJoints::resourceList,
|
||||
identifier: "dragJoints",
|
||||
classname: "idDeclDragJoints",
|
||||
fileExt: "dragjoints");
|
||||
idDeclDragJoints::resourceList.__vftable = (idDeclInfoTemplate<idDeclDragJoints>_vtbl *)&idDeclInfoTemplate<idDeclDragJoints>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclDragJoints::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclSkins::resourceList''
|
||||
// EA : 0x83336B08
|
||||
// RVA : 0x01336B08
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclSkins::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclSkins::resourceList,
|
||||
identifier: "skins",
|
||||
classname: "idDeclSkins",
|
||||
fileExt: "skin");
|
||||
idDeclSkins::resourceList.__vftable = (idDeclInfoTemplate<idDeclSkins>_vtbl *)&idDeclInfoTemplate<idDeclSkins>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclSkins::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclTable::resourceList''
|
||||
// EA : 0x83336B68
|
||||
// RVA : 0x01336B68
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclTable::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(this: &idDeclTable::resourceList, identifier: "table", classname: "idDeclTable", fileExt: "m2");
|
||||
idDeclTable::resourceList.__vftable = (idDeclInfoTemplate<idDeclTable>_vtbl *)&idDeclInfoTemplate<idDeclTable>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclTable::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclEnv::resourceList''
|
||||
// EA : 0x83336BC8
|
||||
// RVA : 0x01336BC8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclEnv::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(this: &idDeclEnv::resourceList, identifier: "env", classname: "idDeclEnv", fileExt: "env");
|
||||
idDeclEnv::resourceList.__vftable = (idDeclInfoTemplate<idDeclEnv>_vtbl *)&idDeclInfoTemplate<idDeclEnv>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclEnv::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclFX::resourceList''
|
||||
// EA : 0x83336C28
|
||||
// RVA : 0x01336C28
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclFX::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(this: &idDeclFX::resourceList, identifier: "fx", classname: "idDeclFX", fileExt: "fx");
|
||||
idDeclFX::resourceList.__vftable = (idDeclInfoTemplate<idDeclFX>_vtbl *)&idDeclInfoTemplate<idDeclFX>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclFX::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclFoliage::resourceList''
|
||||
// EA : 0x83336C88
|
||||
// RVA : 0x01336C88
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclFoliage::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclFoliage::resourceList,
|
||||
identifier: "foliage",
|
||||
classname: "idDeclFoliage",
|
||||
fileExt: "foliage");
|
||||
idDeclFoliage::resourceList.__vftable = (idDeclInfoTemplate<idDeclFoliage>_vtbl *)&idDeclInfoTemplate<idDeclFoliage>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclFoliage::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclVisemeSet::resourceList''
|
||||
// EA : 0x83336CE8
|
||||
// RVA : 0x01336CE8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclVisemeSet::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclVisemeSet::resourceList,
|
||||
identifier: "visemeSet",
|
||||
classname: "idDeclVisemeSet",
|
||||
fileExt: "vset");
|
||||
idDeclVisemeSet::resourceList.__vftable = (idDeclInfoTemplate<idDeclVisemeSet>_vtbl *)&idDeclInfoTemplate<idDeclVisemeSet>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclVisemeSet::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclVoiceOver::resourceList''
|
||||
// EA : 0x83336D48
|
||||
// RVA : 0x01336D48
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclVoiceOver::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclVoiceOver::resourceList,
|
||||
identifier: "voiceover",
|
||||
classname: "idDeclVoiceOver",
|
||||
fileExt: "vo");
|
||||
idDeclVoiceOver::resourceList.__vftable = (idDeclInfoTemplate<idDeclVoiceOver>_vtbl *)&idDeclInfoTemplate<idDeclVoiceOver>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclVoiceOver::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclAnimWeb::resourceList''
|
||||
// EA : 0x83336DA8
|
||||
// RVA : 0x01336DA8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclAnimWeb::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclAnimWeb::resourceList,
|
||||
identifier: "animWeb",
|
||||
classname: "idDeclAnimWeb",
|
||||
fileExt: "aweb");
|
||||
idDeclAnimWeb::resourceList.__vftable = (idDeclInfoTemplate<idDeclAnimWeb>_vtbl *)&idDeclInfoTemplate<idDeclAnimWeb>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclAnimWeb::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclBreakable::resourceList''
|
||||
// EA : 0x83336E08
|
||||
// RVA : 0x01336E08
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclBreakable::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclBreakable::resourceList,
|
||||
identifier: "breakable",
|
||||
classname: "idDeclBreakable",
|
||||
fileExt: "break");
|
||||
idDeclBreakable::resourceList.__vftable = (idDeclInfoTemplate<idDeclBreakable>_vtbl *)&idDeclInfoTemplate<idDeclBreakable>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclBreakable::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclRibbon::resourceList''
|
||||
// EA : 0x83336E68
|
||||
// RVA : 0x01336E68
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclRibbon::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclRibbon::resourceList,
|
||||
identifier: "ribbon",
|
||||
classname: "idDeclRibbon",
|
||||
fileExt: "ribbon");
|
||||
idDeclRibbon::resourceList.__vftable = (idDeclInfoTemplate<idDeclRibbon>_vtbl *)&idDeclInfoTemplate<idDeclRibbon>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclRibbon::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclFlare::resourceList''
|
||||
// EA : 0x83336EC8
|
||||
// RVA : 0x01336EC8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclFlare::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclFlare::resourceList,
|
||||
identifier: "flare",
|
||||
classname: "idDeclFlare",
|
||||
fileExt: "flare");
|
||||
idDeclFlare::resourceList.__vftable = (idDeclInfoTemplate<idDeclFlare>_vtbl *)&idDeclInfoTemplate<idDeclFlare>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclFlare::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclDetail::resourceList''
|
||||
// EA : 0x83336F28
|
||||
// RVA : 0x01336F28
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclDetail::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclDetail::resourceList,
|
||||
identifier: "detail",
|
||||
classname: "idDeclDetail",
|
||||
fileExt: "detail");
|
||||
idDeclDetail::resourceList.__vftable = (idDeclInfoTemplate<idDeclDetail>_vtbl *)&idDeclInfoTemplate<idDeclDetail>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclDetail::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclElectricBolt::resourceList''
|
||||
// EA : 0x83336F88
|
||||
// RVA : 0x01336F88
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclElectricBolt::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclElectricBolt::resourceList,
|
||||
identifier: "ebolt",
|
||||
classname: "idDeclElectricBolt",
|
||||
fileExt: "ebolt");
|
||||
idDeclElectricBolt::resourceList.__vftable = (idDeclInfoTemplate<idDeclElectricBolt>_vtbl *)&idDeclInfoTemplate<idDeclElectricBolt>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclElectricBolt::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclVehicleProps::resourceList''
|
||||
// EA : 0x83336FE8
|
||||
// RVA : 0x01336FE8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclVehicleProps::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclVehicleProps::resourceList,
|
||||
identifier: "vehicle",
|
||||
classname: "idDeclVehicleProps",
|
||||
fileExt: "vehicle");
|
||||
idDeclVehicleProps::resourceList.__vftable = (idDeclInfoTemplate<idDeclVehicleProps>_vtbl *)&idDeclInfoTemplate<idDeclVehicleProps>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclVehicleProps::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclTypeInfo::resourceList''
|
||||
// EA : 0x83337048
|
||||
// RVA : 0x01337048
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclTypeInfo::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclTypeInfo::resourceList,
|
||||
identifier: "typeinfo",
|
||||
classname: "idDeclTypeInfo",
|
||||
fileExt: "tdef");
|
||||
idDeclTypeInfo::resourceList.__vftable = (idDeclInfoTemplate<idDeclTypeInfo>_vtbl *)&idDeclInfoTemplate<idDeclTypeInfo>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclTypeInfo::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclPonytail::resourceList''
|
||||
// EA : 0x833370A8
|
||||
// RVA : 0x013370A8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclPonytail::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclPonytail::resourceList,
|
||||
identifier: "ponytail",
|
||||
classname: "idDeclPonytail",
|
||||
fileExt: "tdef");
|
||||
idDeclPonytail::resourceList.__vftable = (idDeclInfoTemplate<idDeclPonytail>_vtbl *)&idDeclInfoTemplate<idDeclPonytail>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclPonytail::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclGameTime::resourceList''
|
||||
// EA : 0x83337108
|
||||
// RVA : 0x01337108
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclGameTime::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclGameTime::resourceList,
|
||||
identifier: "gameTime",
|
||||
classname: "idDeclGameTime",
|
||||
fileExt: "tdef");
|
||||
idDeclGameTime::resourceList.__vftable = (idDeclInfoTemplate<idDeclGameTime>_vtbl *)&idDeclInfoTemplate<idDeclGameTime>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclGameTime::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclProductionFilter::resourceList''
|
||||
// EA : 0x83337168
|
||||
// RVA : 0x01337168
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclProductionFilter::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclProductionFilter::resourceList,
|
||||
identifier: "productionfilter",
|
||||
classname: "idDeclProductionFilter",
|
||||
fileExt: "tdef");
|
||||
idDeclProductionFilter::resourceList.__vftable = (idDeclInfoTemplate<idDeclProductionFilter>_vtbl *)&idDeclInfoTemplate<idDeclProductionFilter>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclProductionFilter::resourceList__);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'idDeclDestructiblePieceInfo::resourceList''
|
||||
// EA : 0x833371C8
|
||||
// RVA : 0x013371C8
|
||||
// PDB : w:\tech5\engine\decls\declholder.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __noreturn _dynamic_initializer_for__idDeclDestructiblePieceInfo::resourceList__()
|
||||
{
|
||||
idDeclInfo::idDeclInfo(
|
||||
this: &idDeclDestructiblePieceInfo::resourceList,
|
||||
identifier: "destructiblePiece",
|
||||
classname: "idDeclDestructiblePieceInfo",
|
||||
fileExt: "tdef");
|
||||
idDeclDestructiblePieceInfo::resourceList.__vftable = (idDeclInfoTemplate<idDeclDestructiblePieceInfo>_vtbl *)&idDeclInfoTemplate<idDeclDestructiblePieceInfo>::`vftable';
|
||||
atexit(func: (void (__fastcall *)())_dynamic_atexit_destructor_for__idDeclDestructiblePieceInfo::resourceList__);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclImpactParticle@@QAA@XZ
|
||||
// EA : 0x82623E88
|
||||
// RVA : 0x00623E88
|
||||
// PDB : w:\tech5\engine\decls\declimpactparticle.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclImpactParticle *__fastcall idDeclImpactParticle::idDeclImpactParticle(idDeclImpactParticle *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->defaultPrt = nullptr;
|
||||
this->__vftable = (idDeclImpactParticle_vtbl *)&idDeclImpactParticle::`vftable';
|
||||
this->metalPrt = nullptr;
|
||||
this->stonePrt = nullptr;
|
||||
this->fleshPrt = nullptr;
|
||||
this->woodPrt = nullptr;
|
||||
this->cardboardPrt = nullptr;
|
||||
this->liquidPrt = nullptr;
|
||||
this->glassPrt = nullptr;
|
||||
this->plasticPrt = nullptr;
|
||||
this->asphaltPrt = nullptr;
|
||||
this->dirtPrt = nullptr;
|
||||
this->concretePrt = nullptr;
|
||||
this->foliagePrt = nullptr;
|
||||
this->linoleumPrt = nullptr;
|
||||
this->fabricPrt = nullptr;
|
||||
this->rubberPrt = nullptr;
|
||||
this->rockPrt = nullptr;
|
||||
this->steamPipePrt = nullptr;
|
||||
this->waterPipePrt = nullptr;
|
||||
this->armorPrt = nullptr;
|
||||
this->sludgePrt = nullptr;
|
||||
this->shieldPrt = nullptr;
|
||||
this->bloodPoolPrt = nullptr;
|
||||
this->ashPrt = nullptr;
|
||||
this->mutantFleshPrt = nullptr;
|
||||
this->thickPaddingPrt = nullptr;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetImpactParticleForMaterial@idDeclImpactParticle@@QBAPBVidDeclParticle@@H@Z
|
||||
// EA : 0x82623F30
|
||||
// RVA : 0x00623F30
|
||||
// PDB : w:\tech5\engine\decls\declimpactparticle.cpp
|
||||
// ========================================================================
|
||||
|
||||
const idDeclParticle *__fastcall idDeclImpactParticle::GetImpactParticleForMaterial(
|
||||
idDeclImpactParticle *this,
|
||||
const int materialID)
|
||||
{
|
||||
const idDeclParticle *result; // r3
|
||||
|
||||
switch ( materialID )
|
||||
{
|
||||
case 1:
|
||||
case 22:
|
||||
case 29:
|
||||
case 30:
|
||||
case 32:
|
||||
result = this->metalPrt;
|
||||
break;
|
||||
case 2:
|
||||
result = this->stonePrt;
|
||||
break;
|
||||
case 3:
|
||||
result = this->fleshPrt;
|
||||
break;
|
||||
case 4:
|
||||
case 31:
|
||||
result = this->woodPrt;
|
||||
break;
|
||||
case 5:
|
||||
result = this->cardboardPrt;
|
||||
break;
|
||||
case 6:
|
||||
result = this->liquidPrt;
|
||||
break;
|
||||
case 7:
|
||||
result = this->glassPrt;
|
||||
break;
|
||||
case 8:
|
||||
result = this->plasticPrt;
|
||||
break;
|
||||
case 9:
|
||||
result = this->asphaltPrt;
|
||||
break;
|
||||
case 10:
|
||||
result = this->dirtPrt;
|
||||
break;
|
||||
case 11:
|
||||
result = this->concretePrt;
|
||||
break;
|
||||
case 12:
|
||||
result = this->foliagePrt;
|
||||
break;
|
||||
case 13:
|
||||
result = this->linoleumPrt;
|
||||
break;
|
||||
case 14:
|
||||
result = this->fabricPrt;
|
||||
break;
|
||||
case 15:
|
||||
result = this->rubberPrt;
|
||||
break;
|
||||
case 16:
|
||||
result = this->rockPrt;
|
||||
break;
|
||||
case 17:
|
||||
result = this->steamPipePrt;
|
||||
break;
|
||||
case 18:
|
||||
result = this->waterPipePrt;
|
||||
break;
|
||||
case 19:
|
||||
result = this->armorPrt;
|
||||
break;
|
||||
case 20:
|
||||
result = this->sludgePrt;
|
||||
break;
|
||||
case 25:
|
||||
result = this->bloodPoolPrt;
|
||||
break;
|
||||
case 26:
|
||||
result = this->ashPrt;
|
||||
break;
|
||||
case 27:
|
||||
result = this->mutantFleshPrt;
|
||||
break;
|
||||
case 28:
|
||||
result = this->thickPaddingPrt;
|
||||
break;
|
||||
default:
|
||||
result = this->defaultPrt;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclImpactParticle@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x826240A0
|
||||
// RVA : 0x006240A0
|
||||
// PDB : w:\tech5\engine\decls\declimpactparticle.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclImpactParticle> *__fastcall idDeclImpactParticle::GetDeclInfo(idDeclImpactParticle *this)
|
||||
{
|
||||
return &idDeclImpactParticle::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclImpactSound@@QAA@XZ
|
||||
// EA : 0x82624118
|
||||
// RVA : 0x00624118
|
||||
// PDB : w:\tech5\engine\decls\declimpactsound.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclImpactSound *__fastcall idDeclImpactSound::idDeclImpactSound(idDeclImpactSound *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->defaultSound = nullptr;
|
||||
this->__vftable = (idDeclImpactSound_vtbl *)&idDeclImpactSound::`vftable';
|
||||
this->metalSound = nullptr;
|
||||
this->stoneSound = nullptr;
|
||||
this->fleshSound = nullptr;
|
||||
this->woodSound = nullptr;
|
||||
this->cardboardSound = nullptr;
|
||||
this->liquidSound = nullptr;
|
||||
this->glassSound = nullptr;
|
||||
this->plasticSound = nullptr;
|
||||
this->asphaltSound = nullptr;
|
||||
this->dirtSound = nullptr;
|
||||
this->concreteSound = nullptr;
|
||||
this->foliageSound = nullptr;
|
||||
this->linoleumSound = nullptr;
|
||||
this->fabricSound = nullptr;
|
||||
this->rubberSound = nullptr;
|
||||
this->rockSound = nullptr;
|
||||
this->steamPipeSound = nullptr;
|
||||
this->waterPipeSound = nullptr;
|
||||
this->armorSound = nullptr;
|
||||
this->sludgeSound = nullptr;
|
||||
this->impNestSound = nullptr;
|
||||
this->hollowMetalSound = nullptr;
|
||||
this->sheetMetalSound = nullptr;
|
||||
this->fleshPlayerSound = nullptr;
|
||||
this->bloodPoolSound = nullptr;
|
||||
this->ashSound = nullptr;
|
||||
this->mutantFleshSound = nullptr;
|
||||
this->thickPaddingSound = nullptr;
|
||||
this->playerAPCMetalSound = nullptr;
|
||||
this->ricketyMetalSound = nullptr;
|
||||
this->ricketyWoodSound = nullptr;
|
||||
this->soundInterval = 100;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetImpactSoundForMaterial@idDeclImpactSound@@QBAPBVidSoundShader@@H@Z
|
||||
// EA : 0x826241E0
|
||||
// RVA : 0x006241E0
|
||||
// PDB : w:\tech5\engine\decls\declimpactsound.cpp
|
||||
// ========================================================================
|
||||
|
||||
const idSoundShader *__fastcall idDeclImpactSound::GetImpactSoundForMaterial(
|
||||
idDeclImpactSound *this,
|
||||
const int materialID)
|
||||
{
|
||||
const idSoundShader *result; // r3
|
||||
|
||||
switch ( materialID )
|
||||
{
|
||||
case 1:
|
||||
result = this->metalSound;
|
||||
break;
|
||||
case 2:
|
||||
result = this->stoneSound;
|
||||
break;
|
||||
case 3:
|
||||
result = this->fleshSound;
|
||||
break;
|
||||
case 4:
|
||||
result = this->woodSound;
|
||||
break;
|
||||
case 5:
|
||||
result = this->cardboardSound;
|
||||
break;
|
||||
case 6:
|
||||
result = this->liquidSound;
|
||||
break;
|
||||
case 7:
|
||||
result = this->glassSound;
|
||||
break;
|
||||
case 8:
|
||||
result = this->plasticSound;
|
||||
break;
|
||||
case 9:
|
||||
result = this->asphaltSound;
|
||||
break;
|
||||
case 10:
|
||||
result = this->dirtSound;
|
||||
break;
|
||||
case 11:
|
||||
result = this->concreteSound;
|
||||
break;
|
||||
case 12:
|
||||
result = this->foliageSound;
|
||||
break;
|
||||
case 13:
|
||||
result = this->linoleumSound;
|
||||
break;
|
||||
case 14:
|
||||
result = this->fabricSound;
|
||||
break;
|
||||
case 15:
|
||||
result = this->rubberSound;
|
||||
break;
|
||||
case 16:
|
||||
result = this->rockSound;
|
||||
break;
|
||||
case 17:
|
||||
result = this->steamPipeSound;
|
||||
break;
|
||||
case 18:
|
||||
result = this->waterPipeSound;
|
||||
break;
|
||||
case 19:
|
||||
result = this->armorSound;
|
||||
break;
|
||||
case 20:
|
||||
result = this->sludgeSound;
|
||||
break;
|
||||
case 21:
|
||||
result = this->impNestSound;
|
||||
break;
|
||||
case 22:
|
||||
result = this->hollowMetalSound;
|
||||
break;
|
||||
case 23:
|
||||
result = this->fleshPlayerSound;
|
||||
break;
|
||||
case 25:
|
||||
result = this->bloodPoolSound;
|
||||
break;
|
||||
case 26:
|
||||
result = this->ashSound;
|
||||
break;
|
||||
case 27:
|
||||
result = this->mutantFleshSound;
|
||||
break;
|
||||
case 28:
|
||||
result = this->thickPaddingSound;
|
||||
break;
|
||||
case 29:
|
||||
result = this->playerAPCMetalSound;
|
||||
break;
|
||||
case 30:
|
||||
result = this->ricketyMetalSound;
|
||||
break;
|
||||
case 31:
|
||||
result = this->ricketyWoodSound;
|
||||
break;
|
||||
case 32:
|
||||
result = this->sheetMetalSound;
|
||||
break;
|
||||
default:
|
||||
result = this->defaultSound;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclImpactSound@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82624388
|
||||
// RVA : 0x00624388
|
||||
// PDB : w:\tech5\engine\decls\declimpactsound.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclImpactSound> *__fastcall idDeclImpactSound::GetDeclInfo(idDeclImpactSound *this)
|
||||
{
|
||||
return &idDeclImpactSound::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclLayer@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82BCC3F0
|
||||
// RVA : 0x00BCC3F0
|
||||
// PDB : w:\tech5\engine\decls\decllayer.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclLayer> *__fastcall idDeclLayer::GetDeclInfo(idDeclLayer *this)
|
||||
{
|
||||
return &idDeclLayer::resourceList;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,40 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclMapInfo@@QAA@XZ
|
||||
// EA : 0x82629070
|
||||
// RVA : 0x00629070
|
||||
// PDB : w:\tech5\engine\decls\declmapinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclMapInfo *__fastcall idDeclMapInfo::idDeclMapInfo(idDeclMapInfo *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this);
|
||||
this->__vftable = (idDeclMapInfo_vtbl *)&idDeclMapInfo::`vftable';
|
||||
this->prettyMapName.index = -1;
|
||||
this->discNumber = -1;
|
||||
this->dlcId = 0;
|
||||
this->loadingVideos.list = nullptr;
|
||||
this->loadingVideos.granularity = 0;
|
||||
this->loadingVideos.memTag = 5;
|
||||
this->loadingVideos.listStatic = 0;
|
||||
this->loadingVideos.size = 0;
|
||||
this->loadingVideos.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->loadingVideos);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219173
|
||||
// EA : 0x826290FC
|
||||
// RVA : 0x006290FC
|
||||
// PDB : w:\tech5\engine\decls\declmapinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219173()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclMapInfo@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82629128
|
||||
// RVA : 0x00629128
|
||||
// PDB : w:\tech5\engine\decls\declmapinfo.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclMapInfo> *__fastcall idDeclMapInfo::GetDeclInfo(idDeclMapInfo *this)
|
||||
{
|
||||
return &idDeclMapInfo::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclPonytail@@QAA@XZ
|
||||
// EA : 0x82622FF8
|
||||
// RVA : 0x00622FF8
|
||||
// PDB : w:\tech5\engine\decls\declponytail.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclPonytail *__fastcall idDeclPonytail::idDeclPonytail(idDeclPonytail *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->modelDef = nullptr;
|
||||
this->__vftable = (idDeclPonytail_vtbl *)&idDeclPonytail::`vftable';
|
||||
this->tagName.str = &byte_8200D768;
|
||||
this->jointInfo.granularity = 0;
|
||||
this->jointInfo.memTag = 30;
|
||||
this->jointInfo.listStatic = 0;
|
||||
this->jointInfo.list = nullptr;
|
||||
this->jointInfo.size = 0;
|
||||
this->jointInfo.num = 0;
|
||||
this->springInfo.list = nullptr;
|
||||
this->springInfo.granularity = 0;
|
||||
this->springInfo.memTag = 30;
|
||||
this->springInfo.listStatic = 0;
|
||||
this->springInfo.size = 0;
|
||||
this->springInfo.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->springInfo);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224092
|
||||
// EA : 0x826230A4
|
||||
// RVA : 0x006230A4
|
||||
// PDB : w:\tech5\engine\decls\declponytail.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224092()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224093
|
||||
// EA : 0x826230CC
|
||||
// RVA : 0x006230CC
|
||||
// PDB : w:\tech5\engine\decls\declponytail.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224093()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSpecialEvent_Area::jobStinger_t,5>::~idList<idDeclSpecialEvent_Area::jobStinger_t,5>(this: (idList<idDeclPonytail::idPonytailJointInfo,30> *)(*(_DWORD *)(v0 - 112 + 132) + 72));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclPonytail@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x826230F8
|
||||
// RVA : 0x006230F8
|
||||
// PDB : w:\tech5\engine\decls\declponytail.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclPonytail> *__fastcall idDeclPonytail::GetDeclInfo(idDeclPonytail *this)
|
||||
{
|
||||
return &idDeclPonytail::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclProductionFilter@@UAAXAAVidParser@@@Z
|
||||
// EA : 0x82629568
|
||||
// RVA : 0x00629568
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclProductionFilter::Parse(idDeclProductionFilter *this, idParser *src)
|
||||
{
|
||||
__int64 v3; // r10
|
||||
int v4; // r8
|
||||
int v5; // r7
|
||||
int v6; // r6
|
||||
idStr *list; // r4
|
||||
unsigned int num; // r5
|
||||
idStr *v9; // r4
|
||||
unsigned int v10; // r5
|
||||
idSort_Quick<idStr,idSort_QuickDefault<idStr> > v11; // [sp+50h] [-30h] BYREF
|
||||
idSort_Quick<idStr,idSort_QuickDefault<idStr> > v12; // [sp+54h] [-2Ch] BYREF
|
||||
idStr *v13; // [sp+58h] [-28h]
|
||||
|
||||
idDeclTypeInfo::Parse(this, src);
|
||||
v11.__vftable = (idSort_Quick<idStr,idSort_QuickDefault<idStr> >_vtbl *)&idSort_QuickDefault<idStr>::`vftable';
|
||||
list = this->entityFilter.list;
|
||||
if ( list != nullptr )
|
||||
{
|
||||
num = this->entityFilter.num;
|
||||
v13 = this->entityFilter.list;
|
||||
idSort_Quick<idStr,idSort_QuickDefault<idStr>>::Sort(this: &v11, base: list, num, a4: v6, a5: v5, a6: v4, a7: v3);
|
||||
}
|
||||
v12.__vftable = (idSort_Quick<idStr,idSort_QuickDefault<idStr> >_vtbl *)&idSort_QuickDefault<idStr>::`vftable';
|
||||
LODWORD(v3) = &idSort<idStr>::`vftable';
|
||||
v11.__vftable = (idSort_Quick<idStr,idSort_QuickDefault<idStr> >_vtbl *)&idSort<idStr>::`vftable';
|
||||
v9 = this->entityRenderModelFilter.list;
|
||||
if ( v9 != nullptr )
|
||||
{
|
||||
v10 = this->entityRenderModelFilter.num;
|
||||
v13 = this->entityRenderModelFilter.list;
|
||||
idSort_Quick<idStr,idSort_QuickDefault<idStr>>::Sort(this: &v12, base: v9, num: v10, a4: v6, a5: v5, a6: v4, a7: v3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219569
|
||||
// EA : 0x826295F0
|
||||
// RVA : 0x006295F0
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219569()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idSort_QuickDefault<idStr>::~idSort_QuickDefault<idStr>(this: (idSort_QuickDefault<idStr> *)(v0 - 128 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219570
|
||||
// EA : 0x82629618
|
||||
// RVA : 0x00629618
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219570()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idSort_QuickDefault<idStr>::~idSort_QuickDefault<idStr>(this: (idSort_QuickDefault<idStr> *)(v0 - 128 + 84));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclProductionFilter@@QAA@XZ
|
||||
// EA : 0x82629648
|
||||
// RVA : 0x00629648
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclProductionFilter *__fastcall idDeclProductionFilter::idDeclProductionFilter(idDeclProductionFilter *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this);
|
||||
this->__vftable = (idDeclProductionFilter_vtbl *)&idDeclProductionFilter::`vftable';
|
||||
this->entityFilter.granularity = 0;
|
||||
this->entityFilter.memTag = 5;
|
||||
this->entityFilter.listStatic = 0;
|
||||
this->entityFilter.list = nullptr;
|
||||
this->entityFilter.size = 0;
|
||||
this->entityFilter.num = 0;
|
||||
this->entityRenderModelFilter.granularity = 0;
|
||||
this->entityRenderModelFilter.memTag = 5;
|
||||
this->entityRenderModelFilter.listStatic = 0;
|
||||
this->entityRenderModelFilter.list = nullptr;
|
||||
this->entityRenderModelFilter.size = 0;
|
||||
this->entityRenderModelFilter.num = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219711
|
||||
// EA : 0x826296D8
|
||||
// RVA : 0x006296D8
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219711()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219712
|
||||
// EA : 0x82629700
|
||||
// RVA : 0x00629700
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219712()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(*(_DWORD *)(v0 - 112 + 132) + 64));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclProductionFilter@@UAA@XZ
|
||||
// EA : 0x82629748
|
||||
// RVA : 0x00629748
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclProductionFilter::~idDeclProductionFilter(idDeclProductionFilter *this)
|
||||
{
|
||||
idStr *list; // r3
|
||||
idStr *v3; // r3
|
||||
|
||||
this->__vftable = (idDeclProductionFilter_vtbl *)&idDeclProductionFilter::`vftable';
|
||||
if ( this->entityRenderModelFilter.listStatic == 0 || this->entityRenderModelFilter.listStatic == 2 )
|
||||
{
|
||||
list = this->entityRenderModelFilter.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idStr>(ptr: list, num: this->entityRenderModelFilter.size);
|
||||
this->entityRenderModelFilter.list = nullptr;
|
||||
this->entityRenderModelFilter.size = 0;
|
||||
}
|
||||
this->entityRenderModelFilter.num = 0;
|
||||
if ( this->entityFilter.listStatic == 0 || this->entityFilter.listStatic == 2 )
|
||||
{
|
||||
v3 = this->entityFilter.list;
|
||||
if ( v3 != nullptr )
|
||||
idListArrayDelete<idStr>(ptr: v3, num: this->entityFilter.size);
|
||||
this->entityFilter.list = nullptr;
|
||||
this->entityFilter.size = 0;
|
||||
}
|
||||
this->entityFilter.num = 0;
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219765
|
||||
// EA : 0x826297E8
|
||||
// RVA : 0x006297E8
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219765()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219766
|
||||
// EA : 0x82629810
|
||||
// RVA : 0x00629810
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219766()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(*(_DWORD *)(v0 - 112 + 132) + 64));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclProductionFilter@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82629730
|
||||
// RVA : 0x00629730
|
||||
// PDB : w:\tech5\engine\decls\declproductionfilter.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclProductionFilter> *__fastcall idDeclProductionFilter::GetDeclInfo(
|
||||
idDeclProductionFilter *this)
|
||||
{
|
||||
return &idDeclProductionFilter::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclReachIK@@QAA@XZ
|
||||
// EA : 0x826298A8
|
||||
// RVA : 0x006298A8
|
||||
// PDB : w:\tech5\engine\decls\declreachik.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclReachIK *__fastcall idDeclReachIK::idDeclReachIK(idDeclReachIK *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->__vftable = (idDeclReachIK_vtbl *)&idDeclReachIK::`vftable';
|
||||
this->armInfo.granularity = 0;
|
||||
this->armInfo.memTag = 83;
|
||||
this->armInfo.listStatic = 0;
|
||||
this->armInfo.list = nullptr;
|
||||
this->armInfo.size = 0;
|
||||
this->armInfo.num = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219791
|
||||
// EA : 0x82629918
|
||||
// RVA : 0x00629918
|
||||
// PDB : w:\tech5\engine\decls\declreachik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219791()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclReachIK@@UAA@XZ
|
||||
// EA : 0x82629958
|
||||
// RVA : 0x00629958
|
||||
// PDB : w:\tech5\engine\decls\declreachik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclReachIK::~idDeclReachIK(idDeclReachIK *this)
|
||||
{
|
||||
idIKArm *list; // r3
|
||||
|
||||
this->__vftable = (idDeclReachIK_vtbl *)&idDeclReachIK::`vftable';
|
||||
if ( this->armInfo.listStatic == 0 || this->armInfo.listStatic == 2 )
|
||||
{
|
||||
list = this->armInfo.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idPlaytestStorage::ai2FSMStateInfo_t>(ptr: (testReportField_t *)list, num: this->armInfo.size);
|
||||
this->armInfo.list = nullptr;
|
||||
this->armInfo.size = 0;
|
||||
}
|
||||
this->armInfo.num = 0;
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219825
|
||||
// EA : 0x826299C4
|
||||
// RVA : 0x006299C4
|
||||
// PDB : w:\tech5\engine\decls\declreachik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219825()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FreeData@idDeclReachIK@@UAAXXZ
|
||||
// EA : 0x82629A50
|
||||
// RVA : 0x00629A50
|
||||
// PDB : w:\tech5\engine\decls\declreachik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclReachIK::FreeData(idDeclReachIK *this)
|
||||
{
|
||||
idList<idIKArm,83> *p_armInfo; // r31
|
||||
|
||||
p_armInfo = &this->armInfo;
|
||||
if ( this->armInfo.size < 0 )
|
||||
idList<idPlaytestStorage::ai2FSMStateInfo_t,5>::Clear(this: (idList<idPlaytestStorage::ai2FSMStateInfo_t,5> *)&this->armInfo);
|
||||
p_armInfo->num = __CFADD__(-p_armInfo->size, p_armInfo->size ^ 0x80000000) ? 0 : p_armInfo->size;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclReachIK@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82629940
|
||||
// RVA : 0x00629940
|
||||
// PDB : w:\tech5\engine\decls\declreachik.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclReachIK> *__fastcall idDeclReachIK::GetDeclInfo(idDeclReachIK *this)
|
||||
{
|
||||
return &idDeclReachIK::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclRibbon@@QAA@XZ
|
||||
// EA : 0x82629AB0
|
||||
// RVA : 0x00629AB0
|
||||
// PDB : w:\tech5\engine\decls\declribbon.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclRibbon *__fastcall idDeclRibbon::idDeclRibbon(idDeclRibbon *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->maxLength = 0.0;
|
||||
this->fadeInFraction = 0.0;
|
||||
this->__vftable = (idDeclRibbon_vtbl *)&idDeclRibbon::`vftable';
|
||||
this->fadeOutFraction = 0.0;
|
||||
this->material = nullptr;
|
||||
this->duration = 0;
|
||||
this->gravity.x = 0.0;
|
||||
this->gravity.y = 0.0;
|
||||
this->gravity.z = 0.0;
|
||||
this->velocity.x = 0.0;
|
||||
this->velocity.y = 0.0;
|
||||
this->velocity.z = 0.0;
|
||||
this->startWidth = 2.0;
|
||||
this->endWidth = 32.0;
|
||||
this->color.x = 1.0;
|
||||
this->color.y = 1.0;
|
||||
this->color.z = 1.0;
|
||||
this->color.w = 1.0;
|
||||
this->viewOriented = true;
|
||||
this->textureTMin = 0.0;
|
||||
this->reorientNodes = false;
|
||||
this->nodeSubdivision = 0.0;
|
||||
this->textureRepeat = false;
|
||||
this->minNodeDistance = 0.0;
|
||||
this->textureRepeatStretch = false;
|
||||
this->helix.rotationScale = 0.0;
|
||||
this->helix.radius = 0.0;
|
||||
this->helix.velocity = 0.0;
|
||||
this->textureTMax = 1.0;
|
||||
this->helix.distortion0.x = 0.0;
|
||||
this->helix.distortion0.y = 0.0;
|
||||
this->helix.distortion1.x = 0.0;
|
||||
this->helix.distortion1.y = 0.0;
|
||||
this->turbulence.frequency = 0.0;
|
||||
this->turbulence.magnitude = 0.0;
|
||||
this->turbulence.velocity = 1.0;
|
||||
this->turbulence.magic.x = 0.93000001;
|
||||
this->turbulence.magic.y = 1.0;
|
||||
this->turbulence.magic.z = 0.91000003;
|
||||
this->turbulence.magic.w = 0.73000002;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclRibbon@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82629BC8
|
||||
// RVA : 0x00629BC8
|
||||
// PDB : w:\tech5\engine\decls\declribbon.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclRibbon> *__fastcall idDeclRibbon::GetDeclInfo(idDeclRibbon *this)
|
||||
{
|
||||
return &idDeclRibbon::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclRollBones@@QAA@XZ
|
||||
// EA : 0x82629C48
|
||||
// RVA : 0x00629C48
|
||||
// PDB : w:\tech5\engine\decls\declrollbones.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclRollBones *__fastcall idDeclRollBones::idDeclRollBones(idDeclRollBones *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->__vftable = (idDeclRollBones_vtbl *)&idDeclRollBones::`vftable';
|
||||
this->rollBones.granularity = 0;
|
||||
this->rollBones.memTag = 5;
|
||||
this->rollBones.listStatic = 0;
|
||||
this->rollBones.list = nullptr;
|
||||
this->rollBones.size = 0;
|
||||
this->rollBones.num = 0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219161
|
||||
// EA : 0x82629CB8
|
||||
// RVA : 0x00629CB8
|
||||
// PDB : w:\tech5\engine\decls\declrollbones.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219161()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclRollBones@@UAA@XZ
|
||||
// EA : 0x82629CF8
|
||||
// RVA : 0x00629CF8
|
||||
// PDB : w:\tech5\engine\decls\declrollbones.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclRollBones::~idDeclRollBones(idDeclRollBones *this)
|
||||
{
|
||||
idDeclRollBones::idDeclRollBoneInstance *list; // r3
|
||||
|
||||
this->__vftable = (idDeclRollBones_vtbl *)&idDeclRollBones::`vftable';
|
||||
if ( this->rollBones.listStatic == 0 || this->rollBones.listStatic == 2 )
|
||||
{
|
||||
list = this->rollBones.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idDeclRollBones::idDeclRollBoneInstance>(ptr: list, num: this->rollBones.size);
|
||||
this->rollBones.list = nullptr;
|
||||
this->rollBones.size = 0;
|
||||
}
|
||||
this->rollBones.num = 0;
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219195
|
||||
// EA : 0x82629D64
|
||||
// RVA : 0x00629D64
|
||||
// PDB : w:\tech5\engine\decls\declrollbones.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219195()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclRollBones@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82629CE0
|
||||
// RVA : 0x00629CE0
|
||||
// PDB : w:\tech5\engine\decls\declrollbones.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclRollBones> *__fastcall idDeclRollBones::GetDeclInfo(idDeclRollBones *this)
|
||||
{
|
||||
return &idDeclRollBones::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,344 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?DefaultDefinition@idDeclSkins@@UBAPBDXZ
|
||||
// EA : 0x82629DF0
|
||||
// RVA : 0x00629DF0
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
const char *__fastcall idDeclSkins::DefaultDefinition(idDeclSkins *this)
|
||||
{
|
||||
return "{\n}\n";
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Remap@idSkin@@QBAPBVidMaterial@@PBV2@@Z
|
||||
// EA : 0x82629E00
|
||||
// RVA : 0x00629E00
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
const idMaterial *__fastcall idSkin::Remap(idSkin *this, const idMaterial *mtr)
|
||||
{
|
||||
int num; // r8
|
||||
int v3; // r10
|
||||
idSkinMapping *list; // r9
|
||||
int i; // r11
|
||||
|
||||
num = this->mappings.num;
|
||||
v3 = 0;
|
||||
if ( num <= 0 )
|
||||
return mtr;
|
||||
list = this->mappings.list;
|
||||
for ( i = 0; list[i].from != mtr; ++i )
|
||||
{
|
||||
if ( ++v3 >= num )
|
||||
return mtr;
|
||||
}
|
||||
return list[v3].to;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?IndexForSkin@idDeclSkins@@QBAHPBD@Z
|
||||
// EA : 0x82629E50
|
||||
// RVA : 0x00629E50
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclSkins::IndexForSkin(idDeclSkins *this, const char *name)
|
||||
{
|
||||
int v4; // r29
|
||||
int i; // r31
|
||||
|
||||
v4 = 0;
|
||||
if ( this->skins.num <= 0 )
|
||||
return -1;
|
||||
for ( i = 0; idStr::Icmp(s1: this->skins.list[i].name.str, s2: name) != 0; ++i )
|
||||
{
|
||||
if ( ++v4 >= this->skins.num )
|
||||
return -1;
|
||||
}
|
||||
return v4;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?RebuildTextSource@idDeclSkins@@UAA_NXZ
|
||||
// EA : 0x82629EC8
|
||||
// RVA : 0x00629EC8
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclSkins::RebuildTextSource(idDeclSkins *this)
|
||||
{
|
||||
__int64 v2; // r8
|
||||
__int64 v3; // r6
|
||||
int v4; // r24
|
||||
__int64 v5; // r10
|
||||
int v6; // r30
|
||||
va *v7; // r3
|
||||
__int64 v8; // r8
|
||||
idSkin *list; // r11
|
||||
int v10; // r28
|
||||
__int64 v11; // r10
|
||||
int v12; // r29
|
||||
idSkin *v13; // r11
|
||||
idSkinMapping *v14; // r11
|
||||
const idMaterial *to; // r11
|
||||
__int64 v16; // r6
|
||||
va *v17; // r3
|
||||
int v19; // [sp+8h] [-10B8h]
|
||||
int v20; // [sp+Ch] [-10B4h]
|
||||
int v21; // [sp+10h] [-10B0h]
|
||||
int v22; // [sp+14h] [-10ACh]
|
||||
int v23; // [sp+18h] [-10A8h]
|
||||
int v24; // [sp+1Ch] [-10A4h]
|
||||
idStr v25; // [sp+50h] [-1070h] BYREF
|
||||
va v26; // [sp+70h] [-1050h] BYREF
|
||||
|
||||
idStr::idStr(this: &v25, text: "{\n");
|
||||
v4 = 0;
|
||||
if ( this->skins.num > 0 )
|
||||
{
|
||||
LODWORD(v5) = &unk_821C0000;
|
||||
HIDWORD(v5) = &unk_821C0000;
|
||||
v6 = 0;
|
||||
do
|
||||
{
|
||||
HIDWORD(v3) = this->skins.list[v6].name.str;
|
||||
v7 = va::va(
|
||||
this: &v26,
|
||||
fmt: "\t%s {\n",
|
||||
a3: v3,
|
||||
a4: v2,
|
||||
a5: v5,
|
||||
a6: v19,
|
||||
a7: v20,
|
||||
a8: v21,
|
||||
a9: v22,
|
||||
a10: v23,
|
||||
a11: v24);
|
||||
idStr::Append(this: &v25, text: v7);
|
||||
list = this->skins.list;
|
||||
v10 = 0;
|
||||
HIDWORD(v11) = list[v6].mappings.num;
|
||||
if ( SHIDWORD(v11) > 0 )
|
||||
{
|
||||
v12 = 0;
|
||||
v13 = &list[v6];
|
||||
do
|
||||
{
|
||||
v14 = &v13->mappings.list[v12];
|
||||
LODWORD(v11) = v14->from;
|
||||
if ( v14->from != nullptr )
|
||||
{
|
||||
to = v14->to;
|
||||
if ( to != nullptr )
|
||||
{
|
||||
LODWORD(v16) = to->name.str;
|
||||
HIDWORD(v16) = *(_DWORD *)(v11 + 8);
|
||||
v17 = va::va(
|
||||
this: &v26,
|
||||
fmt: "\t\t\"%s\" \"%s\"\n",
|
||||
a3: v16,
|
||||
a4: v8,
|
||||
a5: v11,
|
||||
a6: v19,
|
||||
a7: v20,
|
||||
a8: v21,
|
||||
a9: v22,
|
||||
a10: v23,
|
||||
a11: v24);
|
||||
idStr::Append(this: &v25, text: v17);
|
||||
}
|
||||
}
|
||||
++v10;
|
||||
++v12;
|
||||
v13 = &this->skins.list[v6];
|
||||
HIDWORD(v11) = v13->mappings.num;
|
||||
}
|
||||
while ( v10 < SHIDWORD(v11) );
|
||||
}
|
||||
idStr::Append(this: &v25, text: "\t}\n");
|
||||
++v4;
|
||||
++v6;
|
||||
}
|
||||
while ( v4 < this->skins.num );
|
||||
}
|
||||
idStr::Append(this: &v25, text: "}\n");
|
||||
idDecl::SetText(this: &this->idDecl, text: v25.data, length: v25.len);
|
||||
idStr::FreeData(this: &v25);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219940
|
||||
// EA : 0x8262A010
|
||||
// RVA : 0x0062A010
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219940()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 4288 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FreeData@idDeclSkins@@UAAXXZ
|
||||
// EA : 0x8262A038
|
||||
// RVA : 0x0062A038
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclSkins::FreeData(idDeclSkins *this)
|
||||
{
|
||||
char *list; // r3
|
||||
|
||||
if ( this->skins.listStatic == 0 || this->skins.listStatic == 2 )
|
||||
{
|
||||
list = (char *)this->skins.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idStateData::transition_t>(ptr: list, num: this->skins.size);
|
||||
this->skins.list = nullptr;
|
||||
this->skins.size = 0;
|
||||
}
|
||||
this->skins.num = 0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclSkins@@UAAXAAVidParser@@@Z
|
||||
// EA : 0x8262A2F0
|
||||
// RVA : 0x0062A2F0
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclSkins::Parse(idDeclSkins *this, idParser *src)
|
||||
{
|
||||
const idMaterial *v4; // r3
|
||||
const idMaterial *v5; // r3
|
||||
idSkinMapping v6; // [sp+50h] [-D0h] BYREF
|
||||
idSkin v7; // [sp+60h] [-C0h] BYREF
|
||||
idToken v8[2]; // [sp+80h] [-A0h] BYREF
|
||||
|
||||
v8[0].len = 0;
|
||||
v8[0].allocedAndFlag = 20;
|
||||
v8[0].floatvalue = -3.4028235e38;
|
||||
v8[0].data = v8[0].baseBuffer;
|
||||
v8[0].baseBuffer[0] = 0;
|
||||
v8[0].intvalue = 0;
|
||||
v8[0].whiteSpaceStart_p = nullptr;
|
||||
v8[0].whiteSpaceEnd_p = nullptr;
|
||||
v8[0].next = nullptr;
|
||||
if ( idParser::CheckTokenString(this: src, string: "}") == 0 )
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
v7.mappings.memTag = 46;
|
||||
v7.mappings.listStatic = 0;
|
||||
memset(&v7.mappings, 0, 14);
|
||||
v7.name.str = &byte_8200D768;
|
||||
idParser::ExpectAnyToken(this: src, token: v8);
|
||||
idAtomicString::Set(this: &v7.name, str_: v8[0].data);
|
||||
idParser::ExpectTokenString(this: src, string: "{");
|
||||
if ( idParser::CheckTokenString(this: src, string: "}") == 0 )
|
||||
break;
|
||||
LABEL_12:
|
||||
if ( v7.mappings.num != 0 )
|
||||
idList<idSkin,46>::Append(this: &this->skins, obj: &v7);
|
||||
if ( v7.mappings.listStatic == 0 || v7.mappings.listStatic == 2 )
|
||||
{
|
||||
if ( v7.mappings.list != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v7.mappings.list, align: ALIGN_16);
|
||||
v7.mappings.list = nullptr;
|
||||
v7.mappings.size = 0;
|
||||
}
|
||||
v7.mappings.num = 0;
|
||||
if ( idParser::CheckTokenString(this: src, string: "}") != 0 )
|
||||
goto LABEL_20;
|
||||
}
|
||||
while ( idParser::ReadToken(this: src, token: v8) )
|
||||
{
|
||||
if ( v8[0].data != nullptr )
|
||||
v4 = (const idMaterial *)idDeclInfo::FindWithInheritance(
|
||||
this: &idMaterial::resourceList,
|
||||
name: v8[0].data,
|
||||
makeDefault: true);
|
||||
else
|
||||
v4 = nullptr;
|
||||
v6.from = v4;
|
||||
if ( !idParser::ReadToken(this: src, token: v8) )
|
||||
{
|
||||
idParser::Warning(this: src, str: "Unexpected end of file");
|
||||
if ( v7.mappings.listStatic == 0 || v7.mappings.listStatic == 2 )
|
||||
{
|
||||
if ( v7.mappings.list != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v7.mappings.list, align: ALIGN_16);
|
||||
v7.mappings.list = nullptr;
|
||||
v7.mappings.size = 0;
|
||||
}
|
||||
v7.mappings.num = 0;
|
||||
goto LABEL_20;
|
||||
}
|
||||
if ( v8[0].data != nullptr )
|
||||
v5 = (const idMaterial *)idDeclInfo::FindWithInheritance(
|
||||
this: &idMaterial::resourceList,
|
||||
name: v8[0].data,
|
||||
makeDefault: true);
|
||||
else
|
||||
v5 = nullptr;
|
||||
v6.to = v5;
|
||||
idList<cachedPageFile_t,5>::Append(this: &v7.mappings, obj: &v6);
|
||||
if ( idParser::CheckTokenString(this: src, string: "}") != 0 )
|
||||
goto LABEL_12;
|
||||
}
|
||||
idParser::Warning(this: src, str: "Unexpected end of file");
|
||||
if ( v7.mappings.listStatic == 0 || v7.mappings.listStatic == 2 )
|
||||
{
|
||||
if ( v7.mappings.list != nullptr )
|
||||
idMem::Free(this: &mem, ptr: v7.mappings.list, align: ALIGN_16);
|
||||
v7.mappings.list = nullptr;
|
||||
v7.mappings.size = 0;
|
||||
}
|
||||
v7.mappings.num = 0;
|
||||
}
|
||||
LABEL_20:
|
||||
idStr::FreeData(this: &v8[0]);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$220341
|
||||
// EA : 0x8262A580
|
||||
// RVA : 0x0062A580
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_220341()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 288 + 128));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$220342
|
||||
// EA : 0x8262A5A8
|
||||
// RVA : 0x0062A5A8
|
||||
// PDB : w:\tech5\engine\decls\declskins.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_220342()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idLobby::migrationInfo_t::~migrationInfo_t(this: (idSkin *)(v0 - 288 + 96));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclSkins@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82623C40
|
||||
// RVA : 0x00623C40
|
||||
// PDB : w:\tech5\engine\decls\declskins.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclSkins> *__fastcall idDeclSkins::GetDeclInfo(idDeclSkins *this)
|
||||
{
|
||||
return &idDeclSkins::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclStaticImage@@QAA@XZ
|
||||
// EA : 0x8262A5D0
|
||||
// RVA : 0x0062A5D0
|
||||
// PDB : w:\tech5\engine\decls\declstaticimage.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclStaticImage *__fastcall idDeclStaticImage::idDeclStaticImage(idDeclStaticImage *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this);
|
||||
this->__vftable = (idDeclStaticImage_vtbl *)&idDeclStaticImage::`vftable';
|
||||
this->fileName.str = &byte_8200D768;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclStaticImage@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8262A618
|
||||
// RVA : 0x0062A618
|
||||
// PDB : w:\tech5\engine\decls\declstaticimage.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclStaticImage> *__fastcall idDeclStaticImage::GetDeclInfo(idDeclStaticImage *this)
|
||||
{
|
||||
return &idDeclStaticImage::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,309 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclTable@@UAA@XZ
|
||||
// EA : 0x8262A630
|
||||
// RVA : 0x0062A630
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTable::~idDeclTable(idDeclTable *this)
|
||||
{
|
||||
this->__vftable = (idDeclTable_vtbl *)&idDeclTable::`vftable';
|
||||
idParmState::RemoveTable(this: renderThreadParmState, table: this);
|
||||
idMem::Free(this: &mem, ptr: this->table, align: ALIGN_16);
|
||||
idDecl::~idDecl(this: &this->idDecl);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219301
|
||||
// EA : 0x8262A6A0
|
||||
// RVA : 0x0062A6A0
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219301()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDecl::~idDecl(this: *(idDecl **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FreeData@idDeclTable@@UAAXXZ
|
||||
// EA : 0x8262A6C8
|
||||
// RVA : 0x0062A6C8
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTable::FreeData(idDeclTable *this)
|
||||
{
|
||||
idLookupTable::Clear(this: this->table);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?DefaultDefinition@idDeclTable@@UBAPBDXZ
|
||||
// EA : 0x8262A6D0
|
||||
// RVA : 0x0062A6D0
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
const char *__fastcall idDeclTable::DefaultDefinition(idDeclTable *this)
|
||||
{
|
||||
return "{ { 0 } }\n";
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclTable@@QAA@XZ
|
||||
// EA : 0x8262A758
|
||||
// RVA : 0x0062A758
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclTable *__fastcall idDeclTable::idDeclTable(idDeclTable *this)
|
||||
{
|
||||
float *v2; // r3
|
||||
idLookupTable *v3; // r10
|
||||
|
||||
idDecl::idDecl(this: &this->idDecl);
|
||||
this->__vftable = (idDeclTable_vtbl *)&idDeclTable::`vftable';
|
||||
this->left = 0.0;
|
||||
this->right = 1.0;
|
||||
v2 = (float *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\engine\\decls\\DeclTable.cpp(20) : TAG_TABLE",
|
||||
size: 0x220u,
|
||||
tag: TAG_TABLE,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
if ( v2 != nullptr )
|
||||
{
|
||||
v2[1] = 0.0;
|
||||
v2[2] = 1.0;
|
||||
*(_BYTE *)v2 = 0;
|
||||
*((_BYTE *)v2 + 1) = 0;
|
||||
v3 = (idLookupTable *)v2;
|
||||
*((_BYTE *)v2 + 2) = 0;
|
||||
v2[135] = 0.0;
|
||||
v2[131] = 0.0;
|
||||
v2[132] = NAN;
|
||||
*((_BYTE *)v2 + 532) = 0;
|
||||
v2[134] = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
v3 = nullptr;
|
||||
}
|
||||
this->table = v3;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219672
|
||||
// EA : 0x8262A844
|
||||
// RVA : 0x0062A844
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219672()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDecl::~idDecl(this: *(idDecl **)(v0 - 128 + 148));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclTable@@UAAXAAVidParser@@@Z
|
||||
// EA : 0x8262A878
|
||||
// RVA : 0x0062A878
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTable::Parse(idDeclTable *this, idParser *src)
|
||||
{
|
||||
bool v4; // r14
|
||||
double v5; // fp29
|
||||
double v6; // fp28
|
||||
double v7; // fp30
|
||||
int v8; // r9
|
||||
int v9; // r10
|
||||
idLookupTable *v10; // r11
|
||||
idLookupTable *v11; // r11
|
||||
double min; // fp0
|
||||
idLookupTable *v13; // r10
|
||||
double max; // fp11
|
||||
idLookupTable *v15; // r11
|
||||
double v16; // fp31
|
||||
idLookupTable *table; // r3
|
||||
bool v18; // [sp+50h] [-120h] BYREF
|
||||
idLookupTable *v19; // [sp+54h] [-11Ch]
|
||||
idToken v20; // [sp+60h] [-110h] BYREF
|
||||
|
||||
v20.len = 0;
|
||||
v20.baseBuffer[0] = 0;
|
||||
v20.floatvalue = -3.4028235e38;
|
||||
v20.intvalue = 0;
|
||||
memset(&v20.whiteSpaceStart_p, 0, 12);
|
||||
v20.allocedAndFlag = 20;
|
||||
v20.data = v20.baseBuffer;
|
||||
v4 = false;
|
||||
v5 = 1.0e30;
|
||||
v6 = -1.0e30;
|
||||
v7 = 0.0;
|
||||
idLookupTable::Clear(this: this->table);
|
||||
if ( idParser::ReadToken(this: src, token: &v20) )
|
||||
{
|
||||
while ( idStr::Cmp(s1: v20.data, s2: "}") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "snap") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "clamp") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "spline") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "max") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "min") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "left") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "right") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v20.data, s2: "{") != 0 )
|
||||
{
|
||||
idParser::Warning(this: src, str: "unknown token '%s'", v20.data);
|
||||
}
|
||||
else
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
v16 = idParser::ParseFloat(this: src, errorFlag: &v18);
|
||||
if ( v18 )
|
||||
break;
|
||||
if ( idParser::CheckTokenString(this: src, string: ":") != 0 )
|
||||
{
|
||||
v7 = v16;
|
||||
v16 = idParser::ParseFloat(this: src, errorFlag: &v18);
|
||||
if ( v18 )
|
||||
break;
|
||||
}
|
||||
table = this->table;
|
||||
if ( table->values.numKnots >= 64 )
|
||||
{
|
||||
idParser::Warning(this: src, str: "more than %d points", 64);
|
||||
goto _M220076;
|
||||
}
|
||||
if ( v16 < v5 )
|
||||
v5 = v16;
|
||||
if ( v16 > v6 )
|
||||
v6 = v16;
|
||||
idLookupTable::AddValue(this: table, t: v7, v: v16);
|
||||
v7 = (float)((float)v7 + (float)1.0);
|
||||
idParser::ReadToken(this: src, token: &v20);
|
||||
if ( idStr::Cmp(s1: v20.data, s2: "}") == 0 )
|
||||
goto LABEL_5;
|
||||
if ( idStr::Cmp(s1: v20.data, s2: ",") != 0 )
|
||||
{
|
||||
idParser::Warning(this: src, str: "expected comma or brace");
|
||||
goto _M220076;
|
||||
}
|
||||
}
|
||||
}
|
||||
goto _M220076;
|
||||
}
|
||||
this->right = idParser::ParseFloat(this: src, errorFlag: nullptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->left = idParser::ParseFloat(this: src, errorFlag: nullptr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this->table->_min = idParser::ParseFloat(this: src, errorFlag: nullptr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this->table->_max = idParser::ParseFloat(this: src, errorFlag: nullptr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idLookupTable::SetSpline(this: this->table, b: true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v4 = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idLookupTable::SetSnap(this: this->table, b: true);
|
||||
}
|
||||
LABEL_5:
|
||||
if ( !idParser::ReadToken(this: src, token: &v20) )
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( v5 < 0.0 || v6 > 1.0 )
|
||||
{
|
||||
v8 = 0;
|
||||
if ( this->table->values.numKnots > 0 )
|
||||
{
|
||||
v9 = 64;
|
||||
do
|
||||
{
|
||||
++v8;
|
||||
v19 = this->table;
|
||||
v10 = v19;
|
||||
v19->values.times[v9] = (float)(v19->values.times[v9] - (float)v5)
|
||||
* (float)((float)1.0 / (float)((float)v6 - (float)v5));
|
||||
v10->values.changed = true;
|
||||
++v9;
|
||||
}
|
||||
while ( v8 < this->table->values.numKnots );
|
||||
}
|
||||
v11 = this->table;
|
||||
min = v11->_min;
|
||||
v19 = v11;
|
||||
v11->_min = (float)((float)min * (float)((float)v6 - (float)v5)) + (float)v5;
|
||||
v13 = this->table;
|
||||
max = v13->_max;
|
||||
v19 = v13;
|
||||
v13->_max = (float)((float)max * (float)((float)v6 - (float)v5)) + (float)v5;
|
||||
}
|
||||
v15 = this->table;
|
||||
if ( v15->spline && v15->snap )
|
||||
{
|
||||
idParser::Warning(this: src, str: "both spline and snap specified, snap ignored");
|
||||
idLookupTable::SetSnap(this: this->table, b: false);
|
||||
}
|
||||
idLookupTable::SetClamp(this: this->table, b: v4);
|
||||
idLookupTable::Finalize(this: this->table);
|
||||
_M220076:
|
||||
idStr::FreeData(this: &v20);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219844
|
||||
// EA : 0x8262ACC4
|
||||
// RVA : 0x0062ACC4
|
||||
// PDB : w:\tech5\engine\decls\decltable.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219844()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 368 + 96));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclTable@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8262A6E0
|
||||
// RVA : 0x0062A6E0
|
||||
// PDB : w:\tech5\engine\decls\decltable.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclTable> *__fastcall idDeclTable::GetDeclInfo(idDeclTable *this)
|
||||
{
|
||||
return &idDeclTable::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,518 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclTypeInfo@@QAA@XZ
|
||||
// EA : 0x8262ACF0
|
||||
// RVA : 0x0062ACF0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclTypeInfo *__fastcall idDeclTypeInfo::idDeclTypeInfo(idDeclTypeInfo *this)
|
||||
{
|
||||
idDecl::idDecl(this);
|
||||
this->parent = nullptr;
|
||||
this->__vftable = (idDeclTypeInfo_vtbl *)&idDeclTypeInfo::`vftable';
|
||||
this->hasBeenParsedAtLeastOnce = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclTypeInfo@@UAA@XZ
|
||||
// EA : 0x8262AD38
|
||||
// RVA : 0x0062AD38
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTypeInfo::~idDeclTypeInfo(idDeclTypeInfo *this)
|
||||
{
|
||||
this->__vftable = (idDeclTypeInfo_vtbl *)&idDeclTypeInfo::`vftable';
|
||||
idDecl::~idDecl(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclTypeInfo@@UAAXAAVidParser@@@Z
|
||||
// EA : 0x8262ADC8
|
||||
// RVA : 0x0062ADC8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTypeInfo::Parse(idDeclTypeInfo *this, idParser *src)
|
||||
{
|
||||
const char *v2; // r29
|
||||
int v3; // r24
|
||||
idParser *p_data; // r25
|
||||
char *data; // r28
|
||||
idDeclInfo *v7; // r3
|
||||
idDeclTypeInfo *v8; // r3
|
||||
const char *v9; // r23
|
||||
int *v10; // r26
|
||||
char *v11; // r28
|
||||
const char *v12; // r27
|
||||
idDeclTypeInfo *parent; // r3
|
||||
idDeclInfo *v14; // r3
|
||||
idDecl *v15; // r22
|
||||
int v16; // r3
|
||||
idArray<idResource *,32> *v17; // r27
|
||||
idResource *v18; // r3
|
||||
const char *str; // r28
|
||||
const char *ResourceTypeName; // r4
|
||||
const char *v21; // r3
|
||||
idDeclTypeInfo_vtbl *v22; // r11
|
||||
int v23; // r3
|
||||
idDeclInfo *v24; // r3
|
||||
idDeclInfo *v25; // r3
|
||||
idDeclInfo *v26; // r3
|
||||
idDeclInfo *v27; // r3
|
||||
idStr v28; // [sp+50h] [-220h] BYREF
|
||||
idDeclTypeInfo *v29; // [sp+70h] [-200h]
|
||||
idToken v30; // [sp+80h] [-1F0h] BYREF
|
||||
idTypeInfoFile v31; // [sp+D0h] [-1A0h] BYREF
|
||||
idTypeInfoFile v32; // [sp+170h] [-100h] BYREF
|
||||
|
||||
v2 = nullptr;
|
||||
v3 = 20;
|
||||
v30.len = 0;
|
||||
v30.allocedAndFlag = 20;
|
||||
p_data = src;
|
||||
v30.floatvalue = -3.4028235e38;
|
||||
v30.data = v30.baseBuffer;
|
||||
this->parent = nullptr;
|
||||
v30.baseBuffer[0] = 0;
|
||||
v30.intvalue = 0;
|
||||
memset(&v30.whiteSpaceStart_p, 0, 12);
|
||||
if ( idParser::PeekTokenString(this: src, string: "inherit") != 0 )
|
||||
{
|
||||
idParser::ExpectTokenString(this: p_data, string: "inherit");
|
||||
idParser::ExpectTokenString(this: p_data, string: "=");
|
||||
idParser::ExpectTokenType(this: p_data, type: 1, subtype: 0, token: &v30);
|
||||
if ( v30.len != 0 )
|
||||
{
|
||||
data = v30.data;
|
||||
v7 = this->GetDeclInfo(this);
|
||||
v8 = (idDeclTypeInfo *)idResourceList::Load(this: v7, name: data, makeDefault: false, skipStaleCheck: false);
|
||||
this->parent = v8;
|
||||
declManager->AddDependency_2(this: declManager, a2: this, a3: v8);
|
||||
}
|
||||
idParser::ExpectTokenString(this: p_data, string: ";");
|
||||
}
|
||||
LOBYTE(v9) = 1;
|
||||
v10 = &joystick.joyAxis[0][2];
|
||||
v11 = &byte_8200D768;
|
||||
v12 = "edit";
|
||||
if ( this->parent != nullptr || this->hasBeenParsedAtLeastOnce )
|
||||
{
|
||||
idTypeInfoFile::idTypeInfoFile(this: &v31, indent_: 0);
|
||||
v31.settings.writeModifier = WRITE_DEF_AND_EDIT_ONLY;
|
||||
v31.settings.resolveEntityPointers = false;
|
||||
v31.settings.resolveModelPointers = false;
|
||||
idTypeInfoFile::WriteMemoryFile(this: &v31);
|
||||
parent = this->parent;
|
||||
if ( parent != nullptr )
|
||||
{
|
||||
if ( (*((_BYTE *)&parent->idResource + 32) & 0x20) != 0 )
|
||||
{
|
||||
p_data = (idParser *)&keyActions[3][4][214].binding.data;
|
||||
if ( idResourceList::loadResourceRecursionLevel > 0 )
|
||||
{
|
||||
v17 = &idResourceList::recursiveLoads;
|
||||
v10 = (int *)"%s::LoadResource( %s )\n";
|
||||
v3 = (int)"<unknown type>";
|
||||
v9 = "<null>";
|
||||
do
|
||||
{
|
||||
v18 = v17->ptr[0];
|
||||
if ( v17->ptr[0] != nullptr )
|
||||
{
|
||||
str = v18->name.str;
|
||||
ResourceTypeName = idResource::GetResourceTypeName(this: v18);
|
||||
}
|
||||
else
|
||||
{
|
||||
str = "<null>";
|
||||
ResourceTypeName = "<unknown type>";
|
||||
}
|
||||
idLib::Printf(fmt: "%s::LoadResource( %s )\n", ResourceTypeName, str);
|
||||
++v2;
|
||||
v17 = (idArray<idResource *,32> *)((char *)v17 + 4);
|
||||
}
|
||||
while ( (int)v2 < idResourceList::loadResourceRecursionLevel );
|
||||
}
|
||||
v2 = this->name.str;
|
||||
v11 = (char *)this->parent->name.str;
|
||||
v12 = idResource::GetResourceTypeName(this);
|
||||
v21 = idResource::GetResourceTypeName(this: this->parent);
|
||||
idLib::Error(
|
||||
fmt: "Resource %s:%s is being used for parent inheritance for %s:%s before it is fully defined.",
|
||||
v21,
|
||||
v11,
|
||||
v12,
|
||||
v2);
|
||||
}
|
||||
v22 = parent->__vftable;
|
||||
v29 = parent;
|
||||
v23 = ((int (*)(void))v22->GetDeclInfo)();
|
||||
idTypeInfoTools::WriteObject(
|
||||
this: (idTypeInfoTools *)v10[5472],
|
||||
file: &v31,
|
||||
objectType: *(const char **)(v23 + 1048),
|
||||
objectOps: v11,
|
||||
objectName: v12,
|
||||
objectPtr: this->parent);
|
||||
}
|
||||
else
|
||||
{
|
||||
v14 = this->GetDeclInfo(this);
|
||||
v15 = v14->AllocDecl(this: v14);
|
||||
v16 = (int)v15->GetDeclInfo(this: v15);
|
||||
idTypeInfoTools::WriteObject(
|
||||
this: typeInfoTools,
|
||||
file: &v31,
|
||||
objectType: *(const char **)(v16 + 1048),
|
||||
objectOps: &byte_8200D768,
|
||||
objectName: "edit",
|
||||
objectPtr: v15);
|
||||
((void (__fastcall *)(idDecl *, int))v15->dtr_idResource)(a1: v15, a2: 1);
|
||||
}
|
||||
idTypeInfoFile::ReadMemoryFile(this: &v31);
|
||||
v24 = this->GetDeclInfo(this);
|
||||
idTypeInfoTools::ReadObject(
|
||||
this: (idTypeInfoTools *)v10[5472],
|
||||
file: &v31,
|
||||
objectType: v24->classname,
|
||||
objectOps: v11,
|
||||
objectName: v12,
|
||||
objectPtr: this);
|
||||
idTypeInfoFile::~idTypeInfoFile(this: &v31);
|
||||
}
|
||||
v28.allocedAndFlag = v3;
|
||||
v28.len = (int)v2;
|
||||
v28.data = v28.baseBuffer;
|
||||
v28.baseBuffer[0] = (char)v2;
|
||||
idParser::ParseBracedSectionExact(this: p_data, out: &v28, parseFirstBrace: false);
|
||||
idTypeInfoFile::idTypeInfoFile(this: &v32, indent_: 0);
|
||||
idTypeInfoFile::ReadMemory(this: &v32, data: v28.data, length: v28.len, name: this->name.str, startLine: 0);
|
||||
v25 = this->GetDeclInfo(this);
|
||||
if ( idTypeInfoFile::CheckType(this: &v32, type: v25->classname, ops: v11, name: v12)
|
||||
|| (v26 = this->GetDeclInfo(this),
|
||||
idTypeInfoFile::CheckType(this: &v32, type: v26->classname, ops: v11, name: "data")) )
|
||||
{
|
||||
v27 = this->GetDeclInfo(this);
|
||||
idTypeInfoTools::ReadObject(
|
||||
this: (idTypeInfoTools *)v10[5472],
|
||||
file: &v32,
|
||||
objectType: v27->classname,
|
||||
objectOps: v11,
|
||||
objectName: v12,
|
||||
objectPtr: this);
|
||||
}
|
||||
this->hasBeenParsedAtLeastOnce = (char)v9;
|
||||
idTypeInfoFile::~idTypeInfoFile(this: &v32);
|
||||
idStr::FreeData(this: &v28);
|
||||
idStr::FreeData(this: &v30);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// $LN114
|
||||
// EA : 0x8262B1E4
|
||||
// RVA : 0x0062B1E4
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _LN114()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 624 + 128));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221031
|
||||
// EA : 0x8262B20C
|
||||
// RVA : 0x0062B20C
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221031()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoFile::~idTypeInfoFile(this: (idTypeInfoFile *)(v0 - 624 + 208));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221032
|
||||
// EA : 0x8262B234
|
||||
// RVA : 0x0062B234
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221032()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 624 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221033
|
||||
// EA : 0x8262B25C
|
||||
// RVA : 0x0062B25C
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221033()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoFile::~idTypeInfoFile(this: (idTypeInfoFile *)(v0 - 624 + 368));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?SetState@idDeclTypeInfo@@QAAXPBV1@@Z
|
||||
// EA : 0x8262B290
|
||||
// RVA : 0x0062B290
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTypeInfo::SetState(idDeclTypeInfo *this, idDeclTypeInfo *empty)
|
||||
{
|
||||
idDeclTypeInfo *parent; // r27
|
||||
idDeclTypeInfo_vtbl *v4; // r11
|
||||
int v5; // r3
|
||||
idDeclInfo *v6; // r3
|
||||
idDeclInfo *v7; // r3
|
||||
idDeclInfo *v8; // r3
|
||||
__int64 v9; // r10
|
||||
__int64 v10; // r8
|
||||
__int64 v11; // r6
|
||||
idDeclTypeInfo *v12; // r11
|
||||
va *v13; // r3
|
||||
char *TypeInfoString; // r3
|
||||
int v15; // [sp+8h] [-12D8h]
|
||||
int v16; // [sp+Ch] [-12D4h]
|
||||
int v17; // [sp+10h] [-12D0h]
|
||||
int v18; // [sp+14h] [-12CCh]
|
||||
int v19; // [sp+18h] [-12C8h]
|
||||
int v20; // [sp+1Ch] [-12C4h]
|
||||
idTypeInfoTree v21; // [sp+50h] [-1290h] BYREF
|
||||
idTypeInfoTree v22; // [sp+70h] [-1270h] BYREF
|
||||
idStr v23; // [sp+90h] [-1250h] BYREF
|
||||
idTypeInfoFile v24; // [sp+B0h] [-1230h] BYREF
|
||||
idTypeInfoFile v25; // [sp+150h] [-1190h] BYREF
|
||||
idTypeInfoFile v26; // [sp+1F0h] [-10F0h] BYREF
|
||||
va v27; // [sp+290h] [-1050h] BYREF
|
||||
|
||||
parent = this->parent;
|
||||
if ( parent == nullptr )
|
||||
parent = empty;
|
||||
idTypeInfoFile::idTypeInfoFile(this: &v24, indent_: 0);
|
||||
idTypeInfoFile::WriteMemoryFile(this: &v24);
|
||||
v4 = this->__vftable;
|
||||
v24.settings.resolveEntityPointers = false;
|
||||
v24.settings.writeModifier = WRITE_DEF_AND_EDIT_ONLY;
|
||||
v24.settings.resolveModelPointers = false;
|
||||
v24.settings.skipMarkedObjects = false;
|
||||
v24.settings.writeComments = false;
|
||||
v5 = (int)v4->GetDeclInfo(this);
|
||||
idTypeInfoFile::WriteType(this: &v24, type: *(const char **)(v5 + 1048), ops: &byte_8200D768, name: "edit");
|
||||
v6 = this->GetDeclInfo(this);
|
||||
idTypeInfoTools::WriteObject(
|
||||
this: typeInfoTools,
|
||||
file: &v24,
|
||||
objectType: v6->classname,
|
||||
objectOps: &byte_8200D768,
|
||||
objectName: "edit",
|
||||
objectPtr: parent);
|
||||
v22.nodeBlockAlloc.allowAllocs = true;
|
||||
v22.nodeBlockAlloc.clearAllocs = false;
|
||||
memset(&v22, 0, 20);
|
||||
idTypeInfoFile::ReadMemoryFile(this: &v24);
|
||||
idTypeInfoTree::Parse(this: &v22, file: &v24);
|
||||
idTypeInfoFile::idTypeInfoFile(this: &v25, indent_: 0);
|
||||
idTypeInfoFile::WriteMemoryFile(this: &v25);
|
||||
v25.settings.writeModifier = WRITE_DEF_AND_EDIT_ONLY;
|
||||
v25.settings.resolveEntityPointers = false;
|
||||
v25.settings.resolveModelPointers = false;
|
||||
v25.settings.skipMarkedObjects = false;
|
||||
v25.settings.writeComments = false;
|
||||
v7 = this->GetDeclInfo(this);
|
||||
idTypeInfoFile::WriteType(this: &v25, type: v7->classname, ops: &byte_8200D768, name: "edit");
|
||||
v8 = this->GetDeclInfo(this);
|
||||
idTypeInfoTools::WriteObject(
|
||||
this: typeInfoTools,
|
||||
file: &v25,
|
||||
objectType: v8->classname,
|
||||
objectOps: &byte_8200D768,
|
||||
objectName: "edit",
|
||||
objectPtr: this);
|
||||
v21.nodeBlockAlloc.allowAllocs = true;
|
||||
v21.nodeBlockAlloc.clearAllocs = false;
|
||||
memset(&v21, 0, 20);
|
||||
idTypeInfoFile::ReadMemoryFile(this: &v25);
|
||||
idTypeInfoTree::Parse(this: &v21, file: &v25);
|
||||
idTypeInfoTree::ExtendListsWithDefaultsBasedOn(
|
||||
this: &v22,
|
||||
referenceTree: &v21,
|
||||
settings: &v24.settings,
|
||||
tit: typeInfoTools);
|
||||
idTypeInfoTree::Diff(this: &v21, tree: &v22);
|
||||
idTypeInfoFile::idTypeInfoFile(this: &v26, indent_: 1);
|
||||
idTypeInfoFile::WriteMemoryFile(this: &v26);
|
||||
v26.settings.writeComments = true;
|
||||
v26.settings.resolveEntityPointers = false;
|
||||
v26.settings.resolveModelPointers = false;
|
||||
v26.settings.writeType = false;
|
||||
idTypeInfoTree::Write(this: &v21, file: &v26, onlyDiff: true);
|
||||
idStr::idStr(this: &v23, text: "{\n");
|
||||
v12 = this->parent;
|
||||
if ( v12 != nullptr )
|
||||
{
|
||||
LODWORD(v9) = &unk_821C0000;
|
||||
HIDWORD(v11) = v12->name.str;
|
||||
v13 = va::va(
|
||||
this: &v27,
|
||||
fmt: "\tinherit = \"%s\";\n",
|
||||
a3: v11,
|
||||
a4: v10,
|
||||
a5: v9,
|
||||
a6: v15,
|
||||
a7: v16,
|
||||
a8: v17,
|
||||
a9: v18,
|
||||
a10: v19,
|
||||
a11: v20);
|
||||
idStr::Append(this: &v23, text: v13);
|
||||
}
|
||||
TypeInfoString = (char *)idTypeInfoFile::GetTypeInfoString(this: &v26);
|
||||
idStr::Append(this: &v23, text: TypeInfoString);
|
||||
idStr::Append(this: &v23, text: "\n}");
|
||||
idDecl::SetText(this, text: v23.data, length: 0);
|
||||
idStr::FreeData(this: &v23);
|
||||
idTypeInfoFile::~idTypeInfoFile(this: &v26);
|
||||
idTypeInfoTree::~idTypeInfoTree(this: &v21);
|
||||
idTypeInfoFile::~idTypeInfoFile(this: &v25);
|
||||
idTypeInfoTree::~idTypeInfoTree(this: &v22);
|
||||
idTypeInfoFile::~idTypeInfoFile(this: &v24);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221321
|
||||
// EA : 0x8262B534
|
||||
// RVA : 0x0062B534
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221321()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoFile::~idTypeInfoFile(this: (idTypeInfoFile *)(v0 - 4832 + 176));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221322
|
||||
// EA : 0x8262B55C
|
||||
// RVA : 0x0062B55C
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221322()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoTree::~idTypeInfoTree(this: (idTypeInfoTree *)(v0 - 4832 + 112));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221323
|
||||
// EA : 0x8262B584
|
||||
// RVA : 0x0062B584
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221323()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoFile::~idTypeInfoFile(this: (idTypeInfoFile *)(v0 - 4832 + 336));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221324
|
||||
// EA : 0x8262B5AC
|
||||
// RVA : 0x0062B5AC
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221324()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoTree::~idTypeInfoTree(this: (idTypeInfoTree *)(v0 - 4832 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221325
|
||||
// EA : 0x8262B5D4
|
||||
// RVA : 0x0062B5D4
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221325()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoFile::~idTypeInfoFile(this: (idTypeInfoFile *)(v0 - 4832 + 496));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221326
|
||||
// EA : 0x8262B5FC
|
||||
// RVA : 0x0062B5FC
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221326()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 4832 + 144));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?RebuildTextSource@idDeclTypeInfo@@UAA_NXZ
|
||||
// EA : 0x8262B628
|
||||
// RVA : 0x0062B628
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclTypeInfo::RebuildTextSource(idDeclTypeInfo *this)
|
||||
{
|
||||
idDeclTypeInfo *parent; // r31
|
||||
idDeclInfo *v3; // r3
|
||||
|
||||
parent = this->parent;
|
||||
if ( parent == nullptr )
|
||||
{
|
||||
v3 = this->GetDeclInfo(this);
|
||||
parent = (idDeclTypeInfo *)v3->AllocDecl(this: v3);
|
||||
}
|
||||
idDeclTypeInfo::SetState(this, empty: parent);
|
||||
if ( parent != this->parent && parent != nullptr )
|
||||
((void (__fastcall *)(idDeclTypeInfo *, int))parent->dtr_idResource)(a1: parent, a2: 1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclTypeInfo@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8262AD48
|
||||
// RVA : 0x0062AD48
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclTypeInfo> *__fastcall idDeclTypeInfo::GetDeclInfo(idDeclTypeInfo *this)
|
||||
{
|
||||
return &idDeclTypeInfo::resourceList;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetInheritName@idDeclTypeInfo@@QBAPBDXZ
|
||||
// EA : 0x82D78D88
|
||||
// RVA : 0x00D78D88
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfo.h
|
||||
// ========================================================================
|
||||
|
||||
char *__fastcall idDeclTypeInfo::GetInheritName(idDeclTypeInfo *this)
|
||||
{
|
||||
idDeclTypeInfo *parent; // r11
|
||||
|
||||
parent = this->parent;
|
||||
if ( parent != nullptr )
|
||||
return (char *)parent->name.str;
|
||||
else
|
||||
return &byte_8200D768;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,314 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclTypeInfoGraph@@UAAXAAVidParser@@@Z
|
||||
// EA : 0x8262B6C8
|
||||
// RVA : 0x0062B6C8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTypeInfoGraph::Parse(idDeclTypeInfoGraph *this, idParser *src)
|
||||
{
|
||||
idDeclTypeInfo::Parse(this, src);
|
||||
this->OnDeclParsed(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclTypeInfoGraph@@QAA@XZ
|
||||
// EA : 0x8262B828
|
||||
// RVA : 0x0062B828
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclTypeInfoGraph *__fastcall idDeclTypeInfoGraph::idDeclTypeInfoGraph(idDeclTypeInfoGraph *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this);
|
||||
this->__vftable = (idDeclTypeInfoGraph_vtbl *)&idDeclTypeInfoGraph::`vftable';
|
||||
this->subGraphs.list = nullptr;
|
||||
this->subGraphs.granularity = 0;
|
||||
this->subGraphs.memTag = 5;
|
||||
this->subGraphs.listStatic = 0;
|
||||
this->subGraphs.size = 0;
|
||||
this->subGraphs.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->subGraphs);
|
||||
this->nodes.list = nullptr;
|
||||
this->nodes.granularity = 0;
|
||||
this->nodes.memTag = 5;
|
||||
this->nodes.listStatic = 0;
|
||||
this->nodes.size = 0;
|
||||
this->nodes.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->nodes);
|
||||
this->links.list = nullptr;
|
||||
this->links.granularity = 0;
|
||||
this->links.memTag = 5;
|
||||
this->links.listStatic = 0;
|
||||
this->links.size = 0;
|
||||
this->links.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->links);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224458
|
||||
// EA : 0x8262B8C4
|
||||
// RVA : 0x0062B8C4
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224458()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 128 + 148));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224459
|
||||
// EA : 0x8262B8EC
|
||||
// RVA : 0x0062B8EC
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224459()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 128 + 148) + 64));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224460
|
||||
// EA : 0x8262B918
|
||||
// RVA : 0x0062B918
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224460()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 128 + 148) + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclTypeInfoGraph@@UAA@XZ
|
||||
// EA : 0x8262B9B0
|
||||
// RVA : 0x0062B9B0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTypeInfoGraph::~idDeclTypeInfoGraph(idDeclTypeInfoGraph *this)
|
||||
{
|
||||
idList<idVehicleState *,5> *p_subGraphs; // r29
|
||||
|
||||
this->__vftable = (idDeclTypeInfoGraph_vtbl *)&idDeclTypeInfoGraph::`vftable';
|
||||
p_subGraphs = (idList<idVehicleState *,5> *)&this->subGraphs;
|
||||
idList<idTypeInfoSubGraph *,5>::DeleteContents(this: (idList<idTypeInfoGraphLink *,5> *)&this->subGraphs);
|
||||
idList<idTypeInfoSubGraph *,5>::DeleteContents(this: (idList<idTypeInfoGraphLink *,5> *)&this->nodes);
|
||||
idList<idTypeInfoSubGraph *,5>::DeleteContents(this: &this->links);
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->links);
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->nodes);
|
||||
idList<idThread *,58>::Clear(this: p_subGraphs);
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224547
|
||||
// EA : 0x8262BA20
|
||||
// RVA : 0x0062BA20
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224547()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 128 + 148));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224548
|
||||
// EA : 0x8262BA48
|
||||
// RVA : 0x0062BA48
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224548()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 128 + 148) + 64));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224549
|
||||
// EA : 0x8262BA74
|
||||
// RVA : 0x0062BA74
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224549()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 128 + 148) + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224550
|
||||
// EA : 0x8262BAA0
|
||||
// RVA : 0x0062BAA0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224550()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 128 + 148) + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetLinksFrom@idDeclTypeInfoGraph@@QBAXPBVidTypeInfoGraphNode@@AAV?$idList@PBVidTypeInfoGraphLink@@$04@@@Z
|
||||
// EA : 0x8262BB30
|
||||
// RVA : 0x0062BB30
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTypeInfoGraph::GetLinksFrom(
|
||||
idDeclTypeInfoGraph *this,
|
||||
const idTypeInfoGraphNode *node,
|
||||
idList<enum encounterGroupRole_t,5> *links_in)
|
||||
{
|
||||
int v6; // r29
|
||||
int v7; // r30
|
||||
const encounterGroupRole_t *v8; // r4
|
||||
idTypeInfoGraphNode *v9; // r11
|
||||
|
||||
if ( node != nullptr )
|
||||
{
|
||||
v6 = 0;
|
||||
if ( this->links.num > 0 )
|
||||
{
|
||||
v7 = 0;
|
||||
do
|
||||
{
|
||||
v8 = (const encounterGroupRole_t *)&this->links.list[v7];
|
||||
v9 = (idTypeInfoGraphNode *)*v8;
|
||||
if ( *v8 != ROLE_NONE )
|
||||
v9 = this->nodes.list[LODWORD(v9->position.x)];
|
||||
if ( v9 == node )
|
||||
idList<idAnimWebBlendTree *,5>::Append(this: links_in, obj: v8);
|
||||
++v6;
|
||||
++v7;
|
||||
}
|
||||
while ( v6 < this->links.num );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetSubGraphFactory@idDeclTypeInfoGraph@@SAAAV?$idGraphItemFactory@VidTypeInfoSubGraph@@@@XZ
|
||||
// EA : 0x8262BE30
|
||||
// RVA : 0x0062BE30
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *__fastcall idDeclTypeInfoGraph::GetSubGraphFactory()
|
||||
{
|
||||
if ( (_S13 & 1) == 0 )
|
||||
{
|
||||
_S13 |= 1u;
|
||||
idGraphItemFactory<idTypeInfoSubGraph>::idGraphItemFactory<idTypeInfoSubGraph>(this: &subGraphFactory);
|
||||
atexit(func: (void (__fastcall *)())_idDeclTypeInfoGraph::GetSubGraphFactory_::_2_::_dynamic_atexit_destructor_for__subGraphFactory__);
|
||||
}
|
||||
return &subGraphFactory;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$226282
|
||||
// EA : 0x8262BEA8
|
||||
// RVA : 0x0062BEA8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_226282()
|
||||
{
|
||||
_S13 &= ~1u;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetGraphNodeFactory@idDeclTypeInfoGraph@@SAAAV?$idGraphItemFactory@VidTypeInfoGraphNode@@@@XZ
|
||||
// EA : 0x8262BED0
|
||||
// RVA : 0x0062BED0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *__fastcall idDeclTypeInfoGraph::GetGraphNodeFactory()
|
||||
{
|
||||
if ( (_S14 & 1) == 0 )
|
||||
{
|
||||
_S14 |= 1u;
|
||||
idGraphItemFactory<idTypeInfoGraphNode>::idGraphItemFactory<idTypeInfoGraphNode>(this: &nodeFactory);
|
||||
atexit(func: (void (__fastcall *)())_idDeclTypeInfoGraph::GetGraphNodeFactory_::_2_::_dynamic_atexit_destructor_for__nodeFactory__);
|
||||
}
|
||||
return &nodeFactory;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$226299
|
||||
// EA : 0x8262BF48
|
||||
// RVA : 0x0062BF48
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_226299()
|
||||
{
|
||||
_S14 &= ~1u;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetGraphLinkFactory@idDeclTypeInfoGraph@@SAAAV?$idGraphItemFactory@VidTypeInfoGraphLink@@@@XZ
|
||||
// EA : 0x8262BF70
|
||||
// RVA : 0x0062BF70
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *__fastcall idDeclTypeInfoGraph::GetGraphLinkFactory()
|
||||
{
|
||||
if ( (_S15 & 1) == 0 )
|
||||
{
|
||||
_S15 |= 1u;
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idGraphItemFactory<idTypeInfoGraphLink>(this: &linkFactory);
|
||||
atexit(func: (void (__fastcall *)())_idDeclTypeInfoGraph::GetGraphLinkFactory_::_2_::_dynamic_atexit_destructor_for__linkFactory__);
|
||||
}
|
||||
return &linkFactory;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$226316
|
||||
// EA : 0x8262BFE8
|
||||
// RVA : 0x0062BFE8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_226316()
|
||||
{
|
||||
_S15 &= ~1u;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,816 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?Create@?$idGraphItemFactory@VidTypeInfoSubGraph@@@@QBAPAVidTypeInfoSubGraph@@PBD@Z
|
||||
// EA : 0x8262B708
|
||||
// RVA : 0x0062B708
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoGraphLink *__fastcall idGraphItemFactory<idTypeInfoSubGraph>::Create(
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *this,
|
||||
const char *itemClassName)
|
||||
{
|
||||
int v4; // r30
|
||||
int i; // r29
|
||||
const char *str; // r3
|
||||
int v7; // r3
|
||||
char v8; // r11
|
||||
idTypeInfoGraphLink *v10; // r3
|
||||
idTypeInfoGraphLink *v11; // r31
|
||||
|
||||
v4 = 0;
|
||||
if ( this->registry.num <= 0 )
|
||||
return nullptr;
|
||||
for ( i = 0; ; ++i )
|
||||
{
|
||||
str = this->registry.list[i].type.className.str;
|
||||
if ( str == itemClassName || (v7 = idStr::Cmp(s1: str, s2: itemClassName), v8 = 0, v7 == 0) )
|
||||
v8 = 1;
|
||||
if ( v8 != 0 )
|
||||
break;
|
||||
if ( ++v4 >= this->registry.num )
|
||||
return nullptr;
|
||||
}
|
||||
v10 = this->registry.list[v4].creationFunction();
|
||||
v11 = v10;
|
||||
if ( v10 != nullptr )
|
||||
idAtomicString::Set(this: &v10->className, str_: itemClassName);
|
||||
return v11;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetSubGraphColor@idDeclTypeInfoGraph@@UBA?AVidColor@@PBVidTypeInfoSubGraph@@@Z
|
||||
// EA : 0x8262B948
|
||||
// RVA : 0x0062B948
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclTypeInfoGraph *__fastcall idDeclTypeInfoGraph::GetSubGraphColor(
|
||||
idDeclTypeInfoGraph *this,
|
||||
idColor *result,
|
||||
idColor *link)
|
||||
{
|
||||
(*(void (__fastcall **)(idDeclTypeInfoGraph *, idColor *))(LODWORD(link->r) + 4))(a1: this, a2: link);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetNodeInfo@idDeclTypeInfoGraph@@UBAXPBVidTypeInfoGraphNode@@AAVidStr@@AA_N@Z
|
||||
// EA : 0x8262B988
|
||||
// RVA : 0x0062B988
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclTypeInfoGraph::GetNodeInfo(
|
||||
idDeclTypeInfoGraph *this,
|
||||
idTypeInfoGraphNode *node,
|
||||
idStr *info,
|
||||
bool *showSelected)
|
||||
{
|
||||
node->GetInfo(this: node, a2: info, a3: showSelected);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idGraphItemFactory@VidTypeInfoSubGraph@@@@QAA@XZ
|
||||
// EA : 0x8262BBB8
|
||||
// RVA : 0x0062BBB8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *__fastcall idGraphItemFactory<idTypeInfoSubGraph>::idGraphItemFactory<idTypeInfoSubGraph>(
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *this)
|
||||
{
|
||||
this->__vftable = (idGraphItemFactory<idTypeInfoSubGraph>_vtbl *)&idGraphItemFactory<idTypeInfoSubGraph>::`vftable';
|
||||
this->registry.list = nullptr;
|
||||
this->registry.granularity = 0;
|
||||
this->registry.memTag = 87;
|
||||
this->registry.listStatic = 0;
|
||||
this->registry.size = 0;
|
||||
this->registry.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->registry);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idGraphItemFactory@VidTypeInfoGraphNode@@@@QAA@XZ
|
||||
// EA : 0x8262BC18
|
||||
// RVA : 0x0062BC18
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *__fastcall idGraphItemFactory<idTypeInfoGraphNode>::idGraphItemFactory<idTypeInfoGraphNode>(
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *this)
|
||||
{
|
||||
this->__vftable = (idGraphItemFactory<idTypeInfoGraphNode>_vtbl *)&idGraphItemFactory<idTypeInfoGraphNode>::`vftable';
|
||||
this->registry.list = nullptr;
|
||||
this->registry.granularity = 0;
|
||||
this->registry.memTag = 87;
|
||||
this->registry.listStatic = 0;
|
||||
this->registry.size = 0;
|
||||
this->registry.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->registry);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idGraphItemFactory@VidTypeInfoGraphLink@@@@QAA@XZ
|
||||
// EA : 0x8262BC78
|
||||
// RVA : 0x0062BC78
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *__fastcall idGraphItemFactory<idTypeInfoGraphLink>::idGraphItemFactory<idTypeInfoGraphLink>(
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *this)
|
||||
{
|
||||
this->__vftable = (idGraphItemFactory<idTypeInfoGraphLink>_vtbl *)&idGraphItemFactory<idTypeInfoGraphLink>::`vftable';
|
||||
this->registry.list = nullptr;
|
||||
this->registry.granularity = 0;
|
||||
this->registry.memTag = 87;
|
||||
this->registry.listStatic = 0;
|
||||
this->registry.size = 0;
|
||||
this->registry.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->registry);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetMySubGraphFactory@idDeclTypeInfoGraph@@UBAAAV?$idGraphItemFactory@VidTypeInfoSubGraph@@@@XZ
|
||||
// EA : 0x8262C008
|
||||
// RVA : 0x0062C008
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
// attributes: thunk
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *__fastcall idDeclTypeInfoGraph::GetMySubGraphFactory(idDeclTypeInfoGraph *this)
|
||||
{
|
||||
return idDeclTypeInfoGraph::GetSubGraphFactory();
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetMyGraphNodeFactory@idDeclTypeInfoGraph@@UBAAAV?$idGraphItemFactory@VidTypeInfoGraphNode@@@@XZ
|
||||
// EA : 0x8262C010
|
||||
// RVA : 0x0062C010
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
// attributes: thunk
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *__fastcall idDeclTypeInfoGraph::GetMyGraphNodeFactory(
|
||||
idDeclTypeInfoGraph *this)
|
||||
{
|
||||
return idDeclTypeInfoGraph::GetGraphNodeFactory();
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetMyGraphLinkFactory@idDeclTypeInfoGraph@@UBAAAV?$idGraphItemFactory@VidTypeInfoGraphLink@@@@XZ
|
||||
// EA : 0x8262C018
|
||||
// RVA : 0x0062C018
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
// attributes: thunk
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *__fastcall idDeclTypeInfoGraph::GetMyGraphLinkFactory(
|
||||
idDeclTypeInfoGraph *this)
|
||||
{
|
||||
return idDeclTypeInfoGraph::GetGraphLinkFactory();
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idTypeInfoGraphItem@@UAA@XZ
|
||||
// EA : 0x82BBE900
|
||||
// RVA : 0x00BBE900
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idTypeInfoGraphItem::~idTypeInfoGraphItem(idTypeInfoGraphNode *this)
|
||||
{
|
||||
this->__vftable = (idTypeInfoGraphNode_vtbl *)&idTypeInfoGraphItem::`vftable';
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetColor@idTypeInfoSubGraphTest2@@UBA?AVidColor@@XZ
|
||||
// EA : 0x82BBE910
|
||||
// RVA : 0x00BBE910
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoSubGraphTest2 *__fastcall idTypeInfoSubGraphTest2::GetColor(idTypeInfoSubGraphTest2 *this, idColor *result)
|
||||
{
|
||||
float g; // r8
|
||||
float b; // r7
|
||||
float a; // r6
|
||||
|
||||
g = idColor::colorWhite.g;
|
||||
b = idColor::colorWhite.b;
|
||||
a = idColor::colorWhite.a;
|
||||
this->__vftable = (idTypeInfoSubGraphTest2_vtbl *)LODWORD(idColor::colorWhite.r);
|
||||
*(float *)&this->name.str = g;
|
||||
*(float *)&this->className.str = b;
|
||||
*(float *)&this->subnodes.list = a;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDisplayName@idTypeInfoGraphItem@@UBAXAAVidStr@@@Z
|
||||
// EA : 0x82BBE940
|
||||
// RVA : 0x00BBE940
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idTypeInfoGraphItem::GetDisplayName(idTypeInfoGraphItem *this, idStr *displayName)
|
||||
{
|
||||
idStr::operator=(this: displayName, text: this->name.str);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetColor@idTypeInfoGraphNode@@UBA?AVidColor@@XZ
|
||||
// EA : 0x82BBE950
|
||||
// RVA : 0x00BBE950
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoGraphNode *__fastcall idTypeInfoGraphNode::GetColor(idTypeInfoGraphNode *this, idColor *result)
|
||||
{
|
||||
float g; // r8
|
||||
float b; // r7
|
||||
float a; // r6
|
||||
|
||||
g = idTypeInfoGraphNode::baseColor.g;
|
||||
b = idTypeInfoGraphNode::baseColor.b;
|
||||
a = idTypeInfoGraphNode::baseColor.a;
|
||||
this->__vftable = (idTypeInfoGraphNode_vtbl *)LODWORD(idTypeInfoGraphNode::baseColor.r);
|
||||
*(float *)&this->name.str = g;
|
||||
*(float *)&this->className.str = b;
|
||||
this->position.x = a;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDisplayName@idTypeInfoGraphLink@@UBAXAAVidStr@@@Z
|
||||
// EA : 0x82BBE980
|
||||
// RVA : 0x00BBE980
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idTypeInfoGraphLink::GetDisplayName(idTypeInfoGraphLink *this, idStr *displayName)
|
||||
{
|
||||
idStr::operator=(this: displayName, text: &byte_8200D768);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?CreateInstance@?$idRegisterInGraphItemFactory@VidTypeInfoGraphNodeTest@@VidTypeInfoGraphNode@@@@SAPAVidTypeInfoGraphNode@@XZ
|
||||
// EA : 0x82BBED30
|
||||
// RVA : 0x00BBED30
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoGraphNode *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest,idTypeInfoGraphNode>::CreateInstance()
|
||||
{
|
||||
idTypeInfoGraphNode *result; // r3
|
||||
|
||||
result = (idTypeInfoGraphNode *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\shared\\idlib\\Heap.h(64) : tag",
|
||||
size: 0x14u,
|
||||
tag: TAG_DECL,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
if ( result == nullptr )
|
||||
return nullptr;
|
||||
result->__vftable = (idTypeInfoGraphNode_vtbl *)&idTypeInfoGraphItem::`vftable';
|
||||
result->name.str = &byte_8200D768;
|
||||
result->className.str = &byte_8200D768;
|
||||
result->position.x = 0.0;
|
||||
result->position.y = 0.0;
|
||||
result->__vftable = (idTypeInfoGraphNode_vtbl *)&idTypeInfoGraphNodeTest::`vftable';
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?CreateInstance@?$idRegisterInGraphItemFactory@VidTypeInfoGraphNodeTest2@@VidTypeInfoGraphNode@@@@SAPAVidTypeInfoGraphNode@@XZ
|
||||
// EA : 0x82BBEDD0
|
||||
// RVA : 0x00BBEDD0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoGraphNode *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest2,idTypeInfoGraphNode>::CreateInstance()
|
||||
{
|
||||
idTypeInfoGraphNode *result; // r3
|
||||
|
||||
result = (idTypeInfoGraphNode *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\shared\\idlib\\Heap.h(64) : tag",
|
||||
size: 0x34u,
|
||||
tag: TAG_DECL,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
if ( result == nullptr )
|
||||
return nullptr;
|
||||
result->__vftable = (idTypeInfoGraphNode_vtbl *)&idTypeInfoGraphItem::`vftable';
|
||||
result->name.str = &byte_8200D768;
|
||||
result->className.str = &byte_8200D768;
|
||||
result->position.x = 0.0;
|
||||
result->position.y = 0.0;
|
||||
result->__vftable = (idTypeInfoGraphNode_vtbl *)&idTypeInfoGraphNodeTest2::`vftable';
|
||||
result[1].className.str = (const char *)20;
|
||||
result[1].name.str = (const char *)&result[1].position;
|
||||
result[1].__vftable = nullptr;
|
||||
HIBYTE(result[1].position.x) = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?CreateInstance@?$idRegisterInGraphItemFactory@VidTypeInfoGraphLinkTest@@VidTypeInfoGraphLink@@@@SAPAVidTypeInfoGraphLink@@XZ
|
||||
// EA : 0x82BBEE90
|
||||
// RVA : 0x00BBEE90
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoGraphLink *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest,idTypeInfoGraphLink>::CreateInstance()
|
||||
{
|
||||
idTypeInfoGraphLink *result; // r3
|
||||
|
||||
result = (idTypeInfoGraphLink *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\shared\\idlib\\Heap.h(64) : tag",
|
||||
size: 0x18u,
|
||||
tag: TAG_DECL,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
if ( result == nullptr )
|
||||
return nullptr;
|
||||
result->__vftable = (idTypeInfoGraphLink_vtbl *)&idTypeInfoGraphItem::`vftable';
|
||||
result->name.str = &byte_8200D768;
|
||||
result->className.str = &byte_8200D768;
|
||||
result->startNodeIndex = -1;
|
||||
result->endNodeIndex = -1;
|
||||
result->__vftable = (idTypeInfoGraphLink_vtbl *)&idTypeInfoGraphLinkTest::`vftable';
|
||||
HIBYTE(result[1].__vftable) = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?CreateInstance@?$idRegisterInGraphItemFactory@VidTypeInfoGraphLinkTest2@@VidTypeInfoGraphLink@@@@SAPAVidTypeInfoGraphLink@@XZ
|
||||
// EA : 0x82BBF130
|
||||
// RVA : 0x00BBF130
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoGraphLink *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest2,idTypeInfoGraphLink>::CreateInstance()
|
||||
{
|
||||
idTypeInfoGraphLink *result; // r3
|
||||
|
||||
result = (idTypeInfoGraphLink *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\shared\\idlib\\Heap.h(64) : tag",
|
||||
size: 0x14u,
|
||||
tag: TAG_DECL,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
if ( result == nullptr )
|
||||
return nullptr;
|
||||
result->__vftable = (idTypeInfoGraphLink_vtbl *)&idTypeInfoGraphItem::`vftable';
|
||||
result->name.str = &byte_8200D768;
|
||||
result->className.str = &byte_8200D768;
|
||||
result->startNodeIndex = -1;
|
||||
result->endNodeIndex = -1;
|
||||
result->__vftable = (idTypeInfoGraphLink_vtbl *)&idTypeInfoGraphLinkTest2::`vftable';
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idTypeInfoSubGraph@@QAA@XZ
|
||||
// EA : 0x82BBF4D8
|
||||
// RVA : 0x00BBF4D8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoSubGraph *__fastcall idTypeInfoSubGraph::idTypeInfoSubGraph(idTypeInfoSubGraph *this)
|
||||
{
|
||||
this->__vftable = (idTypeInfoSubGraph_vtbl *)&idTypeInfoGraphItem::`vftable';
|
||||
this->name.str = &byte_8200D768;
|
||||
this->className.str = &byte_8200D768;
|
||||
this->__vftable = (idTypeInfoSubGraph_vtbl *)&idTypeInfoSubGraph::`vftable';
|
||||
this->subnodes.list = nullptr;
|
||||
this->subnodes.granularity = 0;
|
||||
this->subnodes.memTag = 5;
|
||||
this->subnodes.listStatic = 0;
|
||||
this->subnodes.size = 0;
|
||||
this->subnodes.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->subnodes);
|
||||
this->position.x = 0.0;
|
||||
this->position.y = 0.0;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$492022
|
||||
// EA : 0x82BBF590
|
||||
// RVA : 0x00BBF590
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_492022()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoGraphItem::~idTypeInfoGraphItem(this: *(idTypeInfoGraphNode **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetColor@idTypeInfoSubGraph@@UBA?AVidColor@@XZ
|
||||
// EA : 0x82BBF5B8
|
||||
// RVA : 0x00BBF5B8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoSubGraph *__fastcall idTypeInfoSubGraph::GetColor(idTypeInfoSubGraph *this, idColor *result)
|
||||
{
|
||||
float g; // r8
|
||||
float b; // r7
|
||||
float a; // r6
|
||||
|
||||
g = idTypeInfoSubGraph::baseColor.g;
|
||||
b = idTypeInfoSubGraph::baseColor.b;
|
||||
a = idTypeInfoSubGraph::baseColor.a;
|
||||
this->__vftable = (idTypeInfoSubGraph_vtbl *)LODWORD(idTypeInfoSubGraph::baseColor.r);
|
||||
*(float *)&this->name.str = g;
|
||||
*(float *)&this->className.str = b;
|
||||
*(float *)&this->subnodes.list = a;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idTypeInfoSubGraph@@UAA@XZ
|
||||
// EA : 0x82BBF5F0
|
||||
// RVA : 0x00BBF5F0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idTypeInfoSubGraph::~idTypeInfoSubGraph(idTypeInfoSubGraph *this)
|
||||
{
|
||||
this->__vftable = (idTypeInfoSubGraph_vtbl *)&idTypeInfoSubGraph::`vftable';
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->subnodes);
|
||||
this->__vftable = (idTypeInfoSubGraph_vtbl *)&idTypeInfoGraphItem::`vftable';
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$492064
|
||||
// EA : 0x82BBF648
|
||||
// RVA : 0x00BBF648
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_492064()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idTypeInfoGraphItem::~idTypeInfoGraphItem(this: *(idTypeInfoGraphNode **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?CreateInstance@?$idRegisterInGraphItemFactory@VidTypeInfoSubGraphTest@@VidTypeInfoSubGraph@@@@SAPAVidTypeInfoSubGraph@@XZ
|
||||
// EA : 0x82BBF810
|
||||
// RVA : 0x00BBF810
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoSubGraph *__fastcall idRegisterInGraphItemFactory<idTypeInfoSubGraphTest,idTypeInfoSubGraph>::CreateInstance()
|
||||
{
|
||||
idTypeInfoSubGraph *v0; // r3
|
||||
idTypeInfoSubGraph *v1; // r30
|
||||
|
||||
v0 = (idTypeInfoSubGraph *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\shared\\idlib\\Heap.h(64) : tag",
|
||||
size: 0x38u,
|
||||
tag: TAG_DECL,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
v1 = v0;
|
||||
if ( v0 == nullptr )
|
||||
return nullptr;
|
||||
idTypeInfoSubGraph::idTypeInfoSubGraph(this: v0);
|
||||
v1->__vftable = (idTypeInfoSubGraph_vtbl *)&idTypeInfoSubGraphTest::`vftable';
|
||||
*(float *)&v1[1].subnodes.list = -1.0;
|
||||
*(float *)&v1[1].className.str = -1.0;
|
||||
*(float *)&v1[1].name.str = -1.0;
|
||||
*(float *)&v1[1].__vftable = -1.0;
|
||||
HIBYTE(v1[1].subnodes.num) = 0;
|
||||
return v1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$492164
|
||||
// EA : 0x82BBF8BC
|
||||
// RVA : 0x00BBF8BC
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_492164()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
operator delete(p: *(void **)(v0 - 112 + 80), tag: TAG_DECL);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?CreateInstance@?$idRegisterInGraphItemFactory@VidTypeInfoSubGraphTest2@@VidTypeInfoSubGraph@@@@SAPAVidTypeInfoSubGraph@@XZ
|
||||
// EA : 0x82BBF8F0
|
||||
// RVA : 0x00BBF8F0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idTypeInfoSubGraph *__fastcall idRegisterInGraphItemFactory<idTypeInfoSubGraphTest2,idTypeInfoSubGraph>::CreateInstance()
|
||||
{
|
||||
idTypeInfoSubGraph *v0; // r3
|
||||
_DWORD *v1; // r30
|
||||
|
||||
v0 = (idTypeInfoSubGraph *)idMem::AllocWithLocation(
|
||||
this: &mem,
|
||||
location: "w:\\tech5\\shared\\idlib\\Heap.h(64) : tag",
|
||||
size: 0x24u,
|
||||
tag: TAG_DECL,
|
||||
zeroBuffer: false,
|
||||
align: ALIGN_16,
|
||||
heap: HEAP_DEFAULTHEAP);
|
||||
v1 = &v0->__vftable;
|
||||
if ( v0 == nullptr )
|
||||
return nullptr;
|
||||
idTypeInfoSubGraph::idTypeInfoSubGraph(this: v0);
|
||||
*v1 = &idTypeInfoSubGraphTest2::`vftable';
|
||||
return (idTypeInfoSubGraph *)v1;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$492197_0
|
||||
// EA : 0x82BBF974
|
||||
// RVA : 0x00BBF974
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_492197_0()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
operator delete(p: *(void **)(v0 - 112 + 80), tag: TAG_DECL);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idRegisterInGraphItemFactory@VidTypeInfoSubGraphTest@@VidTypeInfoSubGraph@@@@IAA@PBD0AAV?$idGraphItemFactory@VidTypeInfoSubGraph@@@@1@Z
|
||||
// EA : 0x82BC06D8
|
||||
// RVA : 0x00BC06D8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idRegisterInGraphItemFactory<idTypeInfoSubGraphTest,idTypeInfoSubGraph> *__fastcall idRegisterInGraphItemFactory<idTypeInfoSubGraphTest,idTypeInfoSubGraph>::idRegisterInGraphItemFactory<idTypeInfoSubGraphTest,idTypeInfoSubGraph>(
|
||||
idRegisterInGraphItemFactory<idTypeInfoSubGraphTest,idTypeInfoSubGraph> *this,
|
||||
const char *className,
|
||||
const char *diplayedName,
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *graphItemFactory,
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *globalItemFactory)
|
||||
{
|
||||
char v9; // r11
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v10; // r3
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v11; // r3
|
||||
idAtomicString v13; // [sp+50h] [-30h] BYREF
|
||||
idAtomicString v14; // [sp+54h] [-2Ch] BYREF
|
||||
|
||||
idAtomicString::Set(this: &v13, str_: className);
|
||||
idAtomicString::Set(this: &v14, str_: diplayedName);
|
||||
if ( v14.str == &byte_8200D768 || (v9 = 0, *v14.str == 0) )
|
||||
v9 = 1;
|
||||
if ( v9 != 0 )
|
||||
v14.str = v13.str;
|
||||
v10 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&graphItemFactory->registry);
|
||||
v10->type.className = v13;
|
||||
v10->type.displayedName = v14;
|
||||
v10->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoSubGraphTest,idTypeInfoSubGraph>::CreateInstance;
|
||||
v11 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&globalItemFactory->registry);
|
||||
v11->type.className = v13;
|
||||
v11->type.displayedName = v14;
|
||||
v11->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoSubGraphTest,idTypeInfoSubGraph>::CreateInstance;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idRegisterInGraphItemFactory@VidTypeInfoSubGraphTest2@@VidTypeInfoSubGraph@@@@IAA@PBD0AAV?$idGraphItemFactory@VidTypeInfoSubGraph@@@@1@Z
|
||||
// EA : 0x82BC07A0
|
||||
// RVA : 0x00BC07A0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idRegisterInGraphItemFactory<idTypeInfoSubGraphTest2,idTypeInfoSubGraph> *__fastcall idRegisterInGraphItemFactory<idTypeInfoSubGraphTest2,idTypeInfoSubGraph>::idRegisterInGraphItemFactory<idTypeInfoSubGraphTest2,idTypeInfoSubGraph>(
|
||||
idRegisterInGraphItemFactory<idTypeInfoSubGraphTest2,idTypeInfoSubGraph> *this,
|
||||
const char *className,
|
||||
const char *diplayedName,
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *graphItemFactory,
|
||||
idGraphItemFactory<idTypeInfoSubGraph> *globalItemFactory)
|
||||
{
|
||||
char v9; // r11
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v10; // r3
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v11; // r3
|
||||
idAtomicString v13; // [sp+50h] [-30h] BYREF
|
||||
idAtomicString v14; // [sp+54h] [-2Ch] BYREF
|
||||
|
||||
idAtomicString::Set(this: &v13, str_: className);
|
||||
idAtomicString::Set(this: &v14, str_: diplayedName);
|
||||
if ( v14.str == &byte_8200D768 || (v9 = 0, *v14.str == 0) )
|
||||
v9 = 1;
|
||||
if ( v9 != 0 )
|
||||
v14.str = v13.str;
|
||||
v10 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&graphItemFactory->registry);
|
||||
v10->type.className = v13;
|
||||
v10->type.displayedName = v14;
|
||||
v10->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoSubGraphTest2,idTypeInfoSubGraph>::CreateInstance;
|
||||
v11 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&globalItemFactory->registry);
|
||||
v11->type.className = v13;
|
||||
v11->type.displayedName = v14;
|
||||
v11->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoSubGraphTest2,idTypeInfoSubGraph>::CreateInstance;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idRegisterInGraphItemFactory@VidTypeInfoGraphNodeTest@@VidTypeInfoGraphNode@@@@IAA@PBD0AAV?$idGraphItemFactory@VidTypeInfoGraphNode@@@@1@Z
|
||||
// EA : 0x82BC0868
|
||||
// RVA : 0x00BC0868
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest,idTypeInfoGraphNode> *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest,idTypeInfoGraphNode>::idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest,idTypeInfoGraphNode>(
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest,idTypeInfoGraphNode> *this,
|
||||
const char *className,
|
||||
const char *diplayedName,
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *graphItemFactory,
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *globalItemFactory)
|
||||
{
|
||||
char v9; // r11
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v10; // r3
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v11; // r3
|
||||
idAtomicString v13; // [sp+50h] [-30h] BYREF
|
||||
idAtomicString v14; // [sp+54h] [-2Ch] BYREF
|
||||
|
||||
idAtomicString::Set(this: &v13, str_: className);
|
||||
idAtomicString::Set(this: &v14, str_: diplayedName);
|
||||
if ( v14.str == &byte_8200D768 || (v9 = 0, *v14.str == 0) )
|
||||
v9 = 1;
|
||||
if ( v9 != 0 )
|
||||
v14.str = v13.str;
|
||||
v10 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&graphItemFactory->registry);
|
||||
v10->type.className = v13;
|
||||
v10->type.displayedName = v14;
|
||||
v10->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest,idTypeInfoGraphNode>::CreateInstance;
|
||||
v11 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&globalItemFactory->registry);
|
||||
v11->type.className = v13;
|
||||
v11->type.displayedName = v14;
|
||||
v11->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest,idTypeInfoGraphNode>::CreateInstance;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idRegisterInGraphItemFactory@VidTypeInfoGraphNodeTest2@@VidTypeInfoGraphNode@@@@IAA@PBD0AAV?$idGraphItemFactory@VidTypeInfoGraphNode@@@@1@Z
|
||||
// EA : 0x82BC0930
|
||||
// RVA : 0x00BC0930
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest2,idTypeInfoGraphNode> *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest2,idTypeInfoGraphNode>::idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest2,idTypeInfoGraphNode>(
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest2,idTypeInfoGraphNode> *this,
|
||||
const char *className,
|
||||
const char *diplayedName,
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *graphItemFactory,
|
||||
idGraphItemFactory<idTypeInfoGraphNode> *globalItemFactory)
|
||||
{
|
||||
char v9; // r11
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v10; // r3
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v11; // r3
|
||||
idAtomicString v13; // [sp+50h] [-30h] BYREF
|
||||
idAtomicString v14; // [sp+54h] [-2Ch] BYREF
|
||||
|
||||
idAtomicString::Set(this: &v13, str_: className);
|
||||
idAtomicString::Set(this: &v14, str_: diplayedName);
|
||||
if ( v14.str == &byte_8200D768 || (v9 = 0, *v14.str == 0) )
|
||||
v9 = 1;
|
||||
if ( v9 != 0 )
|
||||
v14.str = v13.str;
|
||||
v10 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&graphItemFactory->registry);
|
||||
v10->type.className = v13;
|
||||
v10->type.displayedName = v14;
|
||||
v10->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest2,idTypeInfoGraphNode>::CreateInstance;
|
||||
v11 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: (idList<idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair,87> *)&globalItemFactory->registry);
|
||||
v11->type.className = v13;
|
||||
v11->type.displayedName = v14;
|
||||
v11->creationFunction = (idTypeInfoGraphLink *(__fastcall *)())idRegisterInGraphItemFactory<idTypeInfoGraphNodeTest2,idTypeInfoGraphNode>::CreateInstance;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idRegisterInGraphItemFactory@VidTypeInfoGraphLinkTest@@VidTypeInfoGraphLink@@@@IAA@PBD0AAV?$idGraphItemFactory@VidTypeInfoGraphLink@@@@1@Z
|
||||
// EA : 0x82BC09F8
|
||||
// RVA : 0x00BC09F8
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest,idTypeInfoGraphLink> *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest,idTypeInfoGraphLink>::idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest,idTypeInfoGraphLink>(
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest,idTypeInfoGraphLink> *this,
|
||||
const char *className,
|
||||
const char *diplayedName,
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *graphItemFactory,
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *globalItemFactory)
|
||||
{
|
||||
char v9; // r11
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v10; // r3
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v11; // r3
|
||||
idAtomicString v13; // [sp+50h] [-30h] BYREF
|
||||
idAtomicString v14; // [sp+54h] [-2Ch] BYREF
|
||||
|
||||
idAtomicString::Set(this: &v13, str_: className);
|
||||
idAtomicString::Set(this: &v14, str_: diplayedName);
|
||||
if ( v14.str == &byte_8200D768 || (v9 = 0, *v14.str == 0) )
|
||||
v9 = 1;
|
||||
if ( v9 != 0 )
|
||||
v14.str = v13.str;
|
||||
v10 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: &graphItemFactory->registry);
|
||||
v10->type.className = v13;
|
||||
v10->type.displayedName = v14;
|
||||
v10->creationFunction = idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest,idTypeInfoGraphLink>::CreateInstance;
|
||||
v11 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: &globalItemFactory->registry);
|
||||
v11->type.className = v13;
|
||||
v11->type.displayedName = v14;
|
||||
v11->creationFunction = idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest,idTypeInfoGraphLink>::CreateInstance;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0?$idRegisterInGraphItemFactory@VidTypeInfoGraphLinkTest2@@VidTypeInfoGraphLink@@@@IAA@PBD0AAV?$idGraphItemFactory@VidTypeInfoGraphLink@@@@1@Z
|
||||
// EA : 0x82BC0AC0
|
||||
// RVA : 0x00BC0AC0
|
||||
// PDB : w:\tech5\engine\decls\decltypeinfograph.h
|
||||
// ========================================================================
|
||||
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest2,idTypeInfoGraphLink> *__fastcall idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest2,idTypeInfoGraphLink>::idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest2,idTypeInfoGraphLink>(
|
||||
idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest2,idTypeInfoGraphLink> *this,
|
||||
const char *className,
|
||||
const char *diplayedName,
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *graphItemFactory,
|
||||
idGraphItemFactory<idTypeInfoGraphLink> *globalItemFactory)
|
||||
{
|
||||
char v9; // r11
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v10; // r3
|
||||
idGraphItemFactory<idTypeInfoGraphLink>::idTypeCreationPair *v11; // r3
|
||||
idAtomicString v13; // [sp+50h] [-30h] BYREF
|
||||
idAtomicString v14; // [sp+54h] [-2Ch] BYREF
|
||||
|
||||
idAtomicString::Set(this: &v13, str_: className);
|
||||
idAtomicString::Set(this: &v14, str_: diplayedName);
|
||||
if ( v14.str == &byte_8200D768 || (v9 = 0, *v14.str == 0) )
|
||||
v9 = 1;
|
||||
if ( v9 != 0 )
|
||||
v14.str = v13.str;
|
||||
v10 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: &graphItemFactory->registry);
|
||||
v10->type.className = v13;
|
||||
v10->type.displayedName = v14;
|
||||
v10->creationFunction = idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest2,idTypeInfoGraphLink>::CreateInstance;
|
||||
v11 = idList<idGraphItemFactory<idTypeInfoSubGraph>::idTypeCreationPair,87>::Alloc(this: &globalItemFactory->registry);
|
||||
v11->type.className = v13;
|
||||
v11->type.displayedName = v14;
|
||||
v11->creationFunction = idRegisterInGraphItemFactory<idTypeInfoGraphLinkTest2,idTypeInfoGraphLink>::CreateInstance;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,535 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??0idVehicleEffectsDef@@QAA@XZ
|
||||
// EA : 0x82622998
|
||||
// RVA : 0x00622998
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
idVehicleEffectsDef *__fastcall idVehicleEffectsDef::idVehicleEffectsDef(idVehicleEffectsDef *this)
|
||||
{
|
||||
this->dustVelocityScale = 0.25;
|
||||
this->tireKickup = nullptr;
|
||||
this->tireKickup2 = nullptr;
|
||||
this->tireKickupSpacing = 32.0;
|
||||
this->tireInitialKickup = nullptr;
|
||||
this->tireKickup2Spacing = 32.0;
|
||||
this->rolloverKickup = nullptr;
|
||||
this->tireSkidParms.fadeTime = 500;
|
||||
this->tireSkidParms.halfLength = 32.0;
|
||||
this->tireSkidParms.lifeTime = 2000;
|
||||
this->tireSkidParms.halfWidth = 16.0;
|
||||
this->tireSkidParms.material.metal = nullptr;
|
||||
this->tireSkidParms.material.stone = nullptr;
|
||||
this->tireSkidParms.material.wood = nullptr;
|
||||
this->tireSkidParms.material.cardboard = nullptr;
|
||||
this->tireSkidParms.material.liquid = nullptr;
|
||||
this->tireSkidParms.material.glass = nullptr;
|
||||
this->tireSkidParms.material.plastic = nullptr;
|
||||
this->tireSkidParms.material.dirt = nullptr;
|
||||
this->tireSkidParms.material.asphalt = nullptr;
|
||||
this->tireSkidParms.material.concrete = nullptr;
|
||||
this->tireSkidParms.material.linoleum = nullptr;
|
||||
this->tireSkidParms.material.fabric = nullptr;
|
||||
this->tireSkidParms.material.rubber = nullptr;
|
||||
this->tireSkidParms.material.rock = nullptr;
|
||||
this->tireSkidParms.material.foliage = nullptr;
|
||||
this->tireTrackParms.halfWidth = 16.0;
|
||||
this->tireTrackParms.fadeTime = 500;
|
||||
this->tireTrackParms.halfLength = 32.0;
|
||||
this->tireTrackParms.lifeTime = 2000;
|
||||
this->tireTrackParms.material.metal = nullptr;
|
||||
this->tireTrackParms.material.stone = nullptr;
|
||||
this->tireTrackParms.material.wood = nullptr;
|
||||
this->tireTrackParms.material.cardboard = nullptr;
|
||||
this->tireTrackParms.material.liquid = nullptr;
|
||||
this->tireTrackParms.material.glass = nullptr;
|
||||
this->tireTrackParms.material.plastic = nullptr;
|
||||
this->tireTrackParms.material.dirt = nullptr;
|
||||
this->tireTrackParms.material.asphalt = nullptr;
|
||||
this->tireTrackParms.material.concrete = nullptr;
|
||||
this->tireTrackParms.material.linoleum = nullptr;
|
||||
this->tireTrackParms.material.fabric = nullptr;
|
||||
this->tireTrackParms.material.rubber = nullptr;
|
||||
this->tireTrackParms.material.rock = nullptr;
|
||||
this->tireTrackParms.material.foliage = nullptr;
|
||||
this->particleImpact = nullptr;
|
||||
this->particleExplode = nullptr;
|
||||
this->particleRpmFlame = nullptr;
|
||||
this->particleShotDamage = nullptr;
|
||||
this->particleShotShield = nullptr;
|
||||
this->breakable = nullptr;
|
||||
this->particleAttachmentLost = nullptr;
|
||||
this->particleViolentRoll = nullptr;
|
||||
this->exhaustEmitterParticle_right = nullptr;
|
||||
this->exhaustEmitterParticle_left = nullptr;
|
||||
this->vehicleFX = nullptr;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idVehicleSoundDef@@QAA@XZ
|
||||
// EA : 0x82622AA8
|
||||
// RVA : 0x00622AA8
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
idVehicleSoundDef *__fastcall idVehicleSoundDef::idVehicleSoundDef(idVehicleSoundDef *this)
|
||||
{
|
||||
this->gears.list = nullptr;
|
||||
this->gears.granularity = 0;
|
||||
this->gears.memTag = 5;
|
||||
this->gears.listStatic = 0;
|
||||
this->gears.size = 0;
|
||||
this->gears.num = 0;
|
||||
idList<idThread *,58>::Clear((idList<idVehicleState *,5> *)this);
|
||||
this->idle.sound = nullptr;
|
||||
this->idle.engineSoundFadeInTimeMilliSec = 0;
|
||||
this->idle.speedMPH = 10.0;
|
||||
this->idle.outTime = 1.0;
|
||||
this->idle.loadedUnloadedMPH = 5.0;
|
||||
this->idle.loadedUnloadedInTime = 0.2;
|
||||
this->idle.loadedUnloadedOutTime = 10.0;
|
||||
this->idle.inTime = 4.0;
|
||||
this->boostParms.boostOverlayDelay = 1.0;
|
||||
this->boostParms.boost = nullptr;
|
||||
this->boostParms.boostOverlay = nullptr;
|
||||
this->boostParms.boostFull = nullptr;
|
||||
this->boostParms.boostEmpty = nullptr;
|
||||
this->boostParms.boostNotReady = nullptr;
|
||||
this->boostParms.boostFadeOutTime = 1.5;
|
||||
this->boostParms.boostPitchModifier = 1.5;
|
||||
this->boostParms.minVolume = -60.0;
|
||||
this->boostParms.maxVolume = -4.0;
|
||||
this->boostParms.boostOverlayFadeInTime = 0.5;
|
||||
this->shifting.engineShiftUp = nullptr;
|
||||
this->shifting.engineShiftDown = nullptr;
|
||||
this->shifting.shiftSilenceTime = 0.050000001;
|
||||
this->shifting.playShiftDownDuringCoast = false;
|
||||
this->shifting.shiftRampOutTime = 0.050000001;
|
||||
this->shifting.playShiftUpOnShiftDown = true;
|
||||
this->shifting.shiftUpPercent = 0.89999998;
|
||||
this->shifting.shiftDownPercent = 0.69999999;
|
||||
this->shifting.shiftRampInTime = 0.0;
|
||||
this->revLimiter.delay = 500;
|
||||
this->revLimiter.enabled = true;
|
||||
this->revLimiter.pitchMultiplier = 1.5;
|
||||
this->revLimiter.frequency = 20;
|
||||
this->revLimiter.squareMinVolumeMultiplier = 0.25;
|
||||
this->revLimiter.throttleMin = 0.5;
|
||||
this->windParms.wind = nullptr;
|
||||
this->windParms.windVolumeTable = nullptr;
|
||||
this->windParms.windPitchTable = nullptr;
|
||||
this->brakingReverse.maxReversePitch = 0.40000001;
|
||||
this->brakingReverse.brakeWhine = nullptr;
|
||||
this->brakingReverse.brakeWhineMPH = 35.0;
|
||||
idVehicleSoundDef::surfaceSoundList_t::surfaceSoundList_t(this: &this->surfaceList);
|
||||
this->crash.human = nullptr;
|
||||
this->crash.vehicle = nullptr;
|
||||
this->crash.generic = nullptr;
|
||||
this->landing.easy = nullptr;
|
||||
this->landing.medium = nullptr;
|
||||
this->landing.hard = nullptr;
|
||||
this->impact.maxEasyForce = 15000.0;
|
||||
this->impact.easy = nullptr;
|
||||
this->impact.medium = nullptr;
|
||||
this->impact.maxMediumForce = 40000.0;
|
||||
this->impact.hard = nullptr;
|
||||
this->bumpSounds.delay = 100;
|
||||
this->bumpSounds.easyCompression = 0.1;
|
||||
this->bumpSounds.easy = nullptr;
|
||||
this->tireWobble.minPitch = 0.0;
|
||||
this->tireWobble.sound = nullptr;
|
||||
this->tireWobble.maxPitch = 0.0;
|
||||
this->tireWobble.minVolume = 0.0;
|
||||
this->tireWobble.maxVolume = 0.0;
|
||||
this->engineDamage.damagedEngine1 = nullptr;
|
||||
this->engineDamage.minPitch = 0.0;
|
||||
this->engineDamage.damagedEngine2 = nullptr;
|
||||
this->engineDamage.maxPitch = 0.0;
|
||||
this->engineDamage.damagedEngine3 = nullptr;
|
||||
this->engineDamage.minVolume = 0.0;
|
||||
this->engineDamage.EngineExplode = nullptr;
|
||||
this->engineDamage.maxVolume = 0.0;
|
||||
this->engineStop = nullptr;
|
||||
this->explode = nullptr;
|
||||
this->backfire = nullptr;
|
||||
this->smokeburp = nullptr;
|
||||
this->attachmentCollision = nullptr;
|
||||
this->impactSpark = nullptr;
|
||||
this->debris = nullptr;
|
||||
this->steering = nullptr;
|
||||
this->zooming = nullptr;
|
||||
this->rcbombTriggered = nullptr;
|
||||
this->lockOnWarningSound = nullptr;
|
||||
this->nonCombatMusic = nullptr;
|
||||
this->combatMusic = nullptr;
|
||||
this->combatMusic2 = nullptr;
|
||||
this->enterVehicle = nullptr;
|
||||
this->exitVehicle = nullptr;
|
||||
this->quickReverse = nullptr;
|
||||
this->hornOnce = nullptr;
|
||||
this->hornLoop = nullptr;
|
||||
this->engineSmoke = nullptr;
|
||||
this->engineFire = nullptr;
|
||||
this->quickUseError = nullptr;
|
||||
this->foliage = nullptr;
|
||||
this->bodyToBody = nullptr;
|
||||
this->tireToTire = nullptr;
|
||||
this->projectileToBody = nullptr;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclVehicleProps@@QAA@XZ
|
||||
// EA : 0x826233E8
|
||||
// RVA : 0x006233E8
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclVehicleProps *__fastcall idDeclVehicleProps::idDeclVehicleProps(idDeclVehicleProps *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->__vftable = (idDeclVehicleProps_vtbl *)&idDeclVehicleProps::`vftable';
|
||||
this->camera.yaw = 0.0;
|
||||
this->camera.pitch = 0.0;
|
||||
this->camera.recovery = nullptr;
|
||||
this->camera.height = 0.0;
|
||||
this->camera.rotationOffset = nullptr;
|
||||
this->camera.lateral = 0.0;
|
||||
this->camera.minRange = 0.0;
|
||||
this->camera.maxRange = 0.0;
|
||||
this->camera2.recovery = nullptr;
|
||||
this->camera2.yaw = 0.0;
|
||||
this->camera2.rotationOffset = nullptr;
|
||||
this->camera2.pitch = 0.0;
|
||||
this->camera2.height = 0.0;
|
||||
this->camera2.lateral = 0.0;
|
||||
this->camera2.minRange = 0.0;
|
||||
this->camera2.maxRange = 0.0;
|
||||
this->steeringWheel.jointName.allocedAndFlag = 20;
|
||||
this->steeringWheel.jointName.data = this->steeringWheel.jointName.baseBuffer;
|
||||
this->steeringWheel.jointName.len = 0;
|
||||
this->steeringWheel.jointName.baseBuffer[0] = 0;
|
||||
this->steeringWheel.speed = 90.0;
|
||||
this->steeringWheel.rotationAxis = 1;
|
||||
this->steeringWheel.rotationDirection = ROTATE_LEFT;
|
||||
this->steeringWheel.maxAngle = nullptr;
|
||||
this->tachometer.jointName.allocedAndFlag = 20;
|
||||
this->tachometer.jointName.len = 0;
|
||||
this->tachometer.jointName.data = this->tachometer.jointName.baseBuffer;
|
||||
this->tachometer.jointName.baseBuffer[0] = 0;
|
||||
this->tachometer.axis = DIAL_AXIS_Y;
|
||||
this->tachometer.direction = DIAL_ROTATE_LEFT;
|
||||
this->tachometer.startValue = 0;
|
||||
this->tachometer.endValue = 100;
|
||||
this->tachometer.startAmount = 0;
|
||||
this->tachometer.endAmount = 90;
|
||||
this->tachometer.table = nullptr;
|
||||
this->speedometer.jointName.allocedAndFlag = 20;
|
||||
this->speedometer.jointName.len = 0;
|
||||
this->speedometer.jointName.data = this->speedometer.jointName.baseBuffer;
|
||||
this->speedometer.jointName.baseBuffer[0] = 0;
|
||||
this->speedometer.axis = DIAL_AXIS_Y;
|
||||
this->speedometer.direction = DIAL_ROTATE_LEFT;
|
||||
this->speedometer.startValue = 0;
|
||||
this->speedometer.endValue = 100;
|
||||
this->speedometer.startAmount = 0;
|
||||
this->speedometer.endAmount = 90;
|
||||
this->speedometer.table = nullptr;
|
||||
this->sheildModel.allocedAndFlag = 20;
|
||||
this->sheildModel.len = 0;
|
||||
this->sheildModel.data = this->sheildModel.baseBuffer;
|
||||
this->sheildModel.baseBuffer[0] = 0;
|
||||
this->hasEngineIdle = true;
|
||||
this->removeOnExit = false;
|
||||
this->jumpImpulse = 3250000.0;
|
||||
this->influence.innerRadius = 32.0;
|
||||
this->influence.outerRadius = 64.0;
|
||||
this->influence.angle = 0.0;
|
||||
this->influence.trailDist = 32.0;
|
||||
this->influence.trailFadeInTime = 0.25;
|
||||
this->influence.trailFadeOutTime = 2.0;
|
||||
this->remoteControl = false;
|
||||
this->raceRemoteControl = false;
|
||||
this->wheels.granularity = 0;
|
||||
this->wheels.memTag = 5;
|
||||
this->wheels.listStatic = 0;
|
||||
this->wheels.list = nullptr;
|
||||
this->wheels.size = 0;
|
||||
this->wheels.num = 0;
|
||||
this->body.model = nullptr;
|
||||
this->body.density = 0.00094;
|
||||
this->body.linearFriction = 0.059999999;
|
||||
this->body.angularFriction = 0.059999999;
|
||||
this->body.contactFriction = 0.5;
|
||||
this->body.bouncyness = 0.30000001;
|
||||
idVehicleSoundDef::idVehicleSoundDef(this: &this->sounds);
|
||||
idVehicleEffectsDef::idVehicleEffectsDef(this: &this->effects);
|
||||
this->camera.yaw = 0.0;
|
||||
this->camera.lateral = 0.0;
|
||||
this->camera2.yaw = 0.0;
|
||||
this->breakableDebris = nullptr;
|
||||
this->steerControlInfluence = 0.55000001;
|
||||
this->camera2.height = 8.0;
|
||||
this->camera2.minRange = 8.0;
|
||||
this->camera2.maxRange = 8.0;
|
||||
this->camera.pitch = 5.0;
|
||||
this->camera.height = 40.0;
|
||||
this->camera.minRange = 300.0;
|
||||
this->camera2.pitch = 10.0;
|
||||
this->camera.maxRange = 500.0;
|
||||
this->camera2.lateral = 7.0;
|
||||
this->cgLocation.z = 0.0;
|
||||
this->cgLocation.y = 0.0;
|
||||
this->cgLocation.x = 0.0;
|
||||
this->maxCgLocation.z = 0.0;
|
||||
this->maxCgLocation.y = 0.0;
|
||||
this->maxCgLocation.x = 0.0;
|
||||
this->motorTorque = nullptr;
|
||||
this->hasBoost = true;
|
||||
this->boostBlurMaterial = nullptr;
|
||||
this->maxSpeed = 100.0;
|
||||
this->baseBoostUpgrade = 1;
|
||||
this->boostMaxSpeedScalar = 1.0;
|
||||
this->fpsStickYawTable = nullptr;
|
||||
this->additionalRaceSpeed = 10.0;
|
||||
this->fpsStickPitchTable = nullptr;
|
||||
this->maxReverseSpeed = 40.0;
|
||||
this->handbrakeMinThreshold = 1.0;
|
||||
this->handbrakeFrictionScale = 0.30000001;
|
||||
this->handBrakeForce = 3000.0;
|
||||
this->brakeForce = 400.0;
|
||||
this->frictionForce = 30.0;
|
||||
this->pitchStabilization = 0.69999999;
|
||||
this->rollStabilization = 0.69999999;
|
||||
this->skidRoll = 0.00060000003;
|
||||
this->skidRollBoostMult = 1.8;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224366
|
||||
// EA : 0x82623744
|
||||
// RVA : 0x00623744
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224366()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 160 + 180));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224367
|
||||
// EA : 0x8262376C
|
||||
// RVA : 0x0062376C
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224367()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 160 + 180) + 136));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224368
|
||||
// EA : 0x82623798
|
||||
// RVA : 0x00623798
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224368()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 160 + 180) + 188));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224369
|
||||
// EA : 0x826237C4
|
||||
// RVA : 0x006237C4
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224369()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 160 + 180) + 248));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224370
|
||||
// EA : 0x826237F0
|
||||
// RVA : 0x006237F0
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224370()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 160 + 180) + 400));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224371
|
||||
// EA : 0x8262381C
|
||||
// RVA : 0x0062381C
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224371()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idWheelDef,5>::~idList<idWheelDef,5>(this: (idList<idWheelDef,5> *)(*(_DWORD *)(v0 - 160 + 180) + 468));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclVehicleProps@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x82623848
|
||||
// RVA : 0x00623848
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclVehicleProps> *__fastcall idDeclVehicleProps::GetDeclInfo(idDeclVehicleProps *this)
|
||||
{
|
||||
return &idDeclVehicleProps::resourceList;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclVehicleProps@@UAA@XZ
|
||||
// EA : 0x82623860
|
||||
// RVA : 0x00623860
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclVehicleProps::~idDeclVehicleProps(idDeclVehicleProps *this)
|
||||
{
|
||||
char *list; // r3
|
||||
|
||||
this->__vftable = (idDeclVehicleProps_vtbl *)&idDeclVehicleProps::`vftable';
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->sounds);
|
||||
if ( this->wheels.listStatic == 0 || this->wheels.listStatic == 2 )
|
||||
{
|
||||
list = (char *)this->wheels.list;
|
||||
if ( list != nullptr )
|
||||
idListArrayDelete<idWheelDef>(ptr: list, num: this->wheels.size);
|
||||
this->wheels.list = nullptr;
|
||||
this->wheels.size = 0;
|
||||
}
|
||||
this->wheels.num = 0;
|
||||
idStr::FreeData(this: &this->sheildModel);
|
||||
idStr::FreeData(this: &this->speedometer.jointName);
|
||||
idStr::FreeData(this: &this->tachometer.jointName);
|
||||
idStr::FreeData(this: &this->steeringWheel.jointName);
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224648
|
||||
// EA : 0x826238F4
|
||||
// RVA : 0x006238F4
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224648()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224649
|
||||
// EA : 0x8262391C
|
||||
// RVA : 0x0062391C
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224649()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 136));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224650
|
||||
// EA : 0x82623948
|
||||
// RVA : 0x00623948
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224650()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 188));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224651
|
||||
// EA : 0x82623974
|
||||
// RVA : 0x00623974
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224651()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 248));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224652_0
|
||||
// EA : 0x826239A0
|
||||
// RVA : 0x006239A0
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224652_0()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 400));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$224653
|
||||
// EA : 0x826239CC
|
||||
// RVA : 0x006239CC
|
||||
// PDB : w:\tech5\engine\decls\declvehicleprops.h
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_224653()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idWheelDef,5>::~idList<idWheelDef,5>(this: (idList<idWheelDef,5> *)(*(_DWORD *)(v0 - 112 + 132) + 468));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclWalkIK@@UAA@XZ
|
||||
// EA : 0x8262C028
|
||||
// RVA : 0x0062C028
|
||||
// PDB : w:\tech5\engine\decls\declwalkik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclWalkIK::~idDeclWalkIK(idDeclWalkIK *this)
|
||||
{
|
||||
this->__vftable = (idDeclWalkIK_vtbl *)&idDeclWalkIK::`vftable';
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->legJoints);
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219333
|
||||
// EA : 0x8262C07C
|
||||
// RVA : 0x0062C07C
|
||||
// PDB : w:\tech5\engine\decls\declwalkik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219333()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FreeData@idDeclWalkIK@@UAAXXZ
|
||||
// EA : 0x8262C118
|
||||
// RVA : 0x0062C118
|
||||
// PDB : w:\tech5\engine\decls\declwalkik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclWalkIK::FreeData(idDeclWalkIK *this)
|
||||
{
|
||||
idList<idIKLeg,83> *p_legJoints; // r30
|
||||
|
||||
p_legJoints = &this->legJoints;
|
||||
if ( this->legJoints.size < 0 )
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->legJoints);
|
||||
p_legJoints->num = __CFADD__(-p_legJoints->size, p_legJoints->size ^ 0x80000000) ? 0 : p_legJoints->size;
|
||||
this->kneeDir.x = 1.0;
|
||||
this->kneeDir.y = 0.0;
|
||||
this->kneeDir.z = 0.0;
|
||||
this->usePivot = false;
|
||||
this->dirsFromBasePose = false;
|
||||
this->restrictToBounds = false;
|
||||
this->checkFeetForSolids = false;
|
||||
this->smoothing = 0.75;
|
||||
this->waistSmoothing = 0.5;
|
||||
this->stairSmoothing = 0.85000002;
|
||||
this->stairWaistSmoothing = 0.75;
|
||||
this->footSmoothing = 0.0;
|
||||
this->footShift = 0.0;
|
||||
this->waistShift = 0.0;
|
||||
this->minWaistFloorDist = 0.0;
|
||||
this->minWaistAnkleDist = 0.0;
|
||||
this->footSize = 4.0;
|
||||
this->footUpTrace = 32.0;
|
||||
this->footDownTrace = 32.0;
|
||||
this->footDownTraceDead = 256.0;
|
||||
this->restrictToBoundsTolerance = 0.0;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclWalkIK@@QAA@XZ
|
||||
// EA : 0x8262C220
|
||||
// RVA : 0x0062C220
|
||||
// PDB : w:\tech5\engine\decls\declwalkik.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclWalkIK *__fastcall idDeclWalkIK::idDeclWalkIK(idDeclWalkIK *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this: &this->idDeclTypeInfo);
|
||||
this->__vftable = (idDeclWalkIK_vtbl *)&idDeclWalkIK::`vftable';
|
||||
this->legJoints.list = nullptr;
|
||||
this->legJoints.granularity = 0;
|
||||
this->legJoints.memTag = 83;
|
||||
this->legJoints.listStatic = 0;
|
||||
this->legJoints.size = 0;
|
||||
this->legJoints.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->legJoints);
|
||||
this->waistJoint.str = &byte_8200D768;
|
||||
idDeclWalkIK::FreeData(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219559
|
||||
// EA : 0x8262C2B0
|
||||
// RVA : 0x0062C2B0
|
||||
// PDB : w:\tech5\engine\decls\declwalkik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219559()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$219560
|
||||
// EA : 0x8262C2D8
|
||||
// RVA : 0x0062C2D8
|
||||
// PDB : w:\tech5\engine\decls\declwalkik.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_219560()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 112 + 132) + 64));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclWalkIK@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8262C0A8
|
||||
// RVA : 0x0062C0A8
|
||||
// PDB : w:\tech5\engine\decls\declwalkik.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclWalkIK> *__fastcall idDeclWalkIK::GetDeclInfo(idDeclWalkIK *this)
|
||||
{
|
||||
return &idDeclWalkIK::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,517 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?DefaultDefinition@idDeclVisemeSet@@UBAPBDXZ
|
||||
// EA : 0x8262C308
|
||||
// RVA : 0x0062C308
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
const char *__fastcall idDeclVisemeSet::DefaultDefinition(idDeclVisemeSet *this)
|
||||
{
|
||||
return "{\n"
|
||||
"\tphonemeSet \"\"\n"
|
||||
"\tvisemeSilence viseme_REST\n"
|
||||
"\tphonemeSilence x\n"
|
||||
"\tvisemes {\n"
|
||||
"\t}\n"
|
||||
"\tphonemes {\n"
|
||||
"\t}\n"
|
||||
"}\n";
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idViseme@@QAA@XZ
|
||||
// EA : 0x8262C318
|
||||
// RVA : 0x0062C318
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
idViseme *__fastcall idViseme::idViseme(idViseme *this)
|
||||
{
|
||||
this->name.str = &byte_8200D768;
|
||||
this->aliasName.str = &byte_8200D768;
|
||||
this->viseme = -1;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idPhoneme@@QAA@XZ
|
||||
// EA : 0x8262C338
|
||||
// RVA : 0x0062C338
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
idPhoneme *__fastcall idPhoneme::idPhoneme(idPhoneme *this)
|
||||
{
|
||||
this->phoneme = -1;
|
||||
this->weightScale = 1.0;
|
||||
this->viseme = -1;
|
||||
this->durationScale = 1.0;
|
||||
this->timeOffsetMS = 0;
|
||||
this->name.str = &byte_8200D768;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?VisemeForName@idDeclVisemeSet@@QBAHPBD@Z
|
||||
// EA : 0x8262C370
|
||||
// RVA : 0x0062C370
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclVisemeSet::VisemeForName(idDeclVisemeSet *this, const char *name)
|
||||
{
|
||||
int v4; // r29
|
||||
int i; // r31
|
||||
|
||||
v4 = 0;
|
||||
if ( this->visemes.num <= 0 )
|
||||
return -1;
|
||||
for ( i = 0; idStr::Icmp(s1: this->visemes.list[i].name.str, s2: name) != 0; ++i )
|
||||
{
|
||||
if ( ++v4 >= this->visemes.num )
|
||||
return -1;
|
||||
}
|
||||
return v4;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?PhonemeForName@idDeclVisemeSet@@QBAHPBD@Z
|
||||
// EA : 0x8262C3E0
|
||||
// RVA : 0x0062C3E0
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclVisemeSet::PhonemeForName(idDeclVisemeSet *this, const char *name)
|
||||
{
|
||||
int v4; // r29
|
||||
int i; // r31
|
||||
|
||||
v4 = 0;
|
||||
if ( this->phonemes.num <= 0 )
|
||||
return -1;
|
||||
for ( i = 0; idStr::Icmp(s1: this->phonemes.list[i].name.str, s2: name) != 0; ++i )
|
||||
{
|
||||
if ( ++v4 >= this->phonemes.num )
|
||||
return -1;
|
||||
}
|
||||
return v4;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?FreeData@idDeclVisemeSet@@UAAXXZ
|
||||
// EA : 0x8262C4F8
|
||||
// RVA : 0x0062C4F8
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclVisemeSet::FreeData(idDeclVisemeSet *this)
|
||||
{
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->visemes);
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->phonemes);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Size@idDeclVisemeSet@@UBAIXZ
|
||||
// EA : 0x8262C530
|
||||
// RVA : 0x0062C530
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclVisemeSet::Size(idDeclVisemeSet *this)
|
||||
{
|
||||
return 12 * (2 * (this->phonemes.size + 4) + this->visemes.size);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclVisemeSet@@QAA@XZ
|
||||
// EA : 0x8262C608
|
||||
// RVA : 0x0062C608
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclVisemeSet *__fastcall idDeclVisemeSet::idDeclVisemeSet(idDeclVisemeSet *this)
|
||||
{
|
||||
idDecl::idDecl(this: &this->idDecl);
|
||||
this->__vftable = (idDeclVisemeSet_vtbl *)&idDeclVisemeSet::`vftable';
|
||||
this->phonemeSet.len = 0;
|
||||
this->phonemeSet.allocedAndFlag = 20;
|
||||
this->phonemeSet.data = this->phonemeSet.baseBuffer;
|
||||
this->phonemeSet.baseBuffer[0] = 0;
|
||||
this->visemes.list = nullptr;
|
||||
this->visemes.granularity = 0;
|
||||
this->visemes.memTag = 69;
|
||||
this->visemes.listStatic = 0;
|
||||
this->visemes.size = 0;
|
||||
this->visemes.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->visemes);
|
||||
this->phonemes.list = nullptr;
|
||||
this->phonemes.granularity = 0;
|
||||
this->phonemes.memTag = 70;
|
||||
this->phonemes.listStatic = 0;
|
||||
this->phonemes.size = 0;
|
||||
this->phonemes.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->phonemes);
|
||||
this->silenceViseme = -1;
|
||||
this->silencePhoneme = -1;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221146
|
||||
// EA : 0x8262C6B0
|
||||
// RVA : 0x0062C6B0
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221146()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDecl::~idDecl(this: *(idDecl **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221147
|
||||
// EA : 0x8262C6D8
|
||||
// RVA : 0x0062C6D8
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221147()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 56));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221148
|
||||
// EA : 0x8262C704
|
||||
// RVA : 0x0062C704
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221148()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 112 + 132) + 88));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclVisemeSet@@UAA@XZ
|
||||
// EA : 0x8262C748
|
||||
// RVA : 0x0062C748
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclVisemeSet::~idDeclVisemeSet(idDeclVisemeSet *this)
|
||||
{
|
||||
this->__vftable = (idDeclVisemeSet_vtbl *)&idDeclVisemeSet::`vftable';
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->phonemes);
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->visemes);
|
||||
idStr::FreeData(this: &this->phonemeSet);
|
||||
idDecl::~idDecl(this: &this->idDecl);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221210
|
||||
// EA : 0x8262C7AC
|
||||
// RVA : 0x0062C7AC
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221210()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDecl::~idDecl(this: *(idDecl **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221211
|
||||
// EA : 0x8262C7D4
|
||||
// RVA : 0x0062C7D4
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221211()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(*(_DWORD *)(v0 - 112 + 132) + 56));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221212
|
||||
// EA : 0x8262C800
|
||||
// RVA : 0x0062C800
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221212()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 112 + 132) + 88));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?Parse@idDeclVisemeSet@@UAAXAAVidParser@@@Z
|
||||
// EA : 0x8262CD60
|
||||
// RVA : 0x0062CD60
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclVisemeSet::Parse(idDeclVisemeSet *this, idParser *src)
|
||||
{
|
||||
int len; // r29
|
||||
int num; // r26
|
||||
char *data; // r25
|
||||
double v7; // fp30
|
||||
double v8; // fp31
|
||||
int v9; // r29
|
||||
int v10; // r28
|
||||
int v11; // r3
|
||||
int v12; // r16
|
||||
idToken v13; // [sp+50h] [-1D0h] BYREF
|
||||
idViseme v14[2]; // [sp+98h] [-188h] BYREF
|
||||
idPhoneme v15; // [sp+B0h] [-170h] BYREF
|
||||
idStr v16; // [sp+D0h] [-150h] BYREF
|
||||
idStr v17; // [sp+F0h] [-130h] BYREF
|
||||
idStr v18; // [sp+110h] [-110h] BYREF
|
||||
idToken v19; // [sp+130h] [-F0h] BYREF
|
||||
|
||||
v13.len = 0;
|
||||
v13.allocedAndFlag = 20;
|
||||
v13.floatvalue = -3.4028235e38;
|
||||
v13.data = v13.baseBuffer;
|
||||
v13.baseBuffer[0] = 0;
|
||||
v13.intvalue = 0;
|
||||
memset(&v13.whiteSpaceStart_p, 0, 12);
|
||||
idParser::ExpectTokenString(this: src, string: "phonemeSet");
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v13);
|
||||
len = v13.len;
|
||||
idStr::EnsureAlloced(this: &this->phonemeSet, amount: v13.len + 1, keepold: false, geometricGrowth: false);
|
||||
memcpy(Dst: this->phonemeSet.data, Src: v13.data, Size: len);
|
||||
this->phonemeSet.data[len] = 0;
|
||||
this->phonemeSet.len = len;
|
||||
idParser::ExpectTokenString(this: src, string: "visemeSilence");
|
||||
idParser::ExpectTokenType(this: src, type: 4, subtype: 0, token: &v13);
|
||||
idStr::idStr(this: &v18, text: &v13);
|
||||
idParser::ExpectTokenString(this: src, string: "phonemeSilence");
|
||||
idParser::ExpectTokenType(this: src, type: 4, subtype: 0, token: &v13);
|
||||
idStr::idStr(this: &v17, text: &v13);
|
||||
idParser::ExpectTokenString(this: src, string: "visemes");
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 46, token: &v13);
|
||||
while ( idParser::ReadToken(this: src, token: &v13) )
|
||||
{
|
||||
if ( v13.type == 5 )
|
||||
{
|
||||
if ( v13.subtype == 47 )
|
||||
break;
|
||||
}
|
||||
else if ( v13.type == 4 )
|
||||
{
|
||||
idToken::idToken(this: &v19, token: &v13);
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 46, token: &v13);
|
||||
idParser::ExpectTokenString(this: src, string: "alias");
|
||||
idParser::ExpectTokenType(this: src, type: 1, subtype: 0, token: &v13);
|
||||
num = this->visemes.num;
|
||||
data = v13.data;
|
||||
idAtomicString::Set(this: &v14[0].name, str_: v19.data);
|
||||
idAtomicString::Set(this: &v14[0].aliasName, str_: data);
|
||||
v14[0].viseme = num;
|
||||
idList<idViseme,69>::Append(this: &this->visemes, obj: v14);
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 47, token: &v13);
|
||||
idStr::FreeData(this: &v19);
|
||||
continue;
|
||||
}
|
||||
idParser::Error(this: src, str: "Expected a viseme name, read '%s'", v13.data);
|
||||
}
|
||||
idParser::ExpectTokenString(this: src, string: "phonemes");
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 46, token: &v13);
|
||||
while ( idParser::ReadToken(this: src, token: &v13) )
|
||||
{
|
||||
if ( v13.type == 5 )
|
||||
{
|
||||
if ( v13.subtype == 47 )
|
||||
break;
|
||||
}
|
||||
else if ( v13.type == 4 )
|
||||
{
|
||||
idStr::idStr(this: &v16, text: &v13);
|
||||
v7 = 1.0;
|
||||
v8 = 1.0;
|
||||
v9 = -1;
|
||||
v10 = 0;
|
||||
if ( idParser::CheckTokenType(this: src, type: 5, subtype: 46, token: &v13) != 0 )
|
||||
{
|
||||
while ( idParser::ReadToken(this: src, token: &v13) )
|
||||
{
|
||||
if ( v13.type == 5 && v13.subtype == 47 )
|
||||
break;
|
||||
if ( idStr::Icmp(s1: v13.data, s2: "weightScale") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v13.data, s2: "durationScale") != 0 )
|
||||
{
|
||||
if ( idStr::Icmp(s1: v13.data, s2: "timeOffsetMS") != 0 )
|
||||
{
|
||||
v11 = idDeclVisemeSet::VisemeForName(this, name: v13.data);
|
||||
if ( v11 == -1 )
|
||||
{
|
||||
idParser::Error(
|
||||
this: src,
|
||||
str: "Unknown token '%s' in phoneme '%s', expected phoneme property.",
|
||||
v13.data,
|
||||
v16.data);
|
||||
}
|
||||
else if ( v9 == -1 )
|
||||
{
|
||||
v9 = v11;
|
||||
}
|
||||
else
|
||||
{
|
||||
idParser::Error(this: src, str: "Multiple visemes specified in phoneme '%s'", v16.data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v10 = idParser::ParseInt(this: src);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v8 = idParser::ParseFloat(this: src, errorFlag: nullptr);
|
||||
if ( v8 < 0.0 )
|
||||
idParser::Error(this: src, str: "Negative duration scale in phoneme '%s'", v16.data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
v7 = idParser::ParseFloat(this: src, errorFlag: nullptr);
|
||||
if ( v7 < 0.0 )
|
||||
idParser::Error(this: src, str: "Negative weight scale in phoneme '%s'", v16.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 32, token: &v13);
|
||||
idParser::ExpectTokenType(this: src, type: 4, subtype: 0, token: &v13);
|
||||
v9 = idDeclVisemeSet::VisemeForName(this, name: v13.data);
|
||||
if ( v9 == -1 )
|
||||
idParser::Error(this: src, str: "Phoneme '%s' maps to viseme '%s', which does not exist.", v16.data, v13.data);
|
||||
}
|
||||
v12 = this->phonemes.num;
|
||||
idAtomicString::Set(this: &v15.name, str_: v16.data);
|
||||
v15.weightScale = v7;
|
||||
v15.durationScale = v8;
|
||||
v15.phoneme = v12;
|
||||
v15.viseme = v9;
|
||||
v15.timeOffsetMS = v10;
|
||||
idList<idPhoneme,70>::Append(this: &this->phonemes, obj: &v15);
|
||||
idStr::FreeData(this: &v16);
|
||||
continue;
|
||||
}
|
||||
idParser::Error(this: src, str: "Expected a phoneme name, but read '%s'", v13.data);
|
||||
}
|
||||
idParser::ExpectTokenType(this: src, type: 5, subtype: 47, token: &v13);
|
||||
this->silenceViseme = idDeclVisemeSet::VisemeForName(this, name: v18.data);
|
||||
this->silencePhoneme = idDeclVisemeSet::PhonemeForName(this, name: v17.data);
|
||||
idStr::FreeData(this: &v17);
|
||||
idStr::FreeData(this: &v18);
|
||||
idStr::FreeData(this: &v13);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// $M221537_0
|
||||
// EA : 0x8262D2D0
|
||||
// RVA : 0x0062D2D0
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _M221537_0()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 544 + 80));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221300
|
||||
// EA : 0x8262D2F8
|
||||
// RVA : 0x0062D2F8
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221300()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 544 + 272));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221301
|
||||
// EA : 0x8262D320
|
||||
// RVA : 0x0062D320
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221301()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 544 + 240));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221302
|
||||
// EA : 0x8262D348
|
||||
// RVA : 0x0062D348
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221302()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 544 + 304));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221303
|
||||
// EA : 0x8262D370
|
||||
// RVA : 0x0062D370
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221303()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 544 + 208));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclVisemeSet@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8262C730
|
||||
// RVA : 0x0062C730
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvisemeset.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclVisemeSet> *__fastcall idDeclVisemeSet::GetDeclInfo(idDeclVisemeSet *this)
|
||||
{
|
||||
return &idDeclVisemeSet::resourceList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,955 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?Size@idDeclVoiceOver@@UBAIXZ
|
||||
// EA : 0x8262D418
|
||||
// RVA : 0x0062D418
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
unsigned int __fastcall idDeclVoiceOver::Size(idDeclVoiceOver *this)
|
||||
{
|
||||
int v2; // r31
|
||||
unsigned int v3; // r28
|
||||
int v4; // r29
|
||||
|
||||
v2 = 0;
|
||||
v3 = 4 * (this->tracks.size + 21);
|
||||
if ( this->tracks.num > 0 )
|
||||
{
|
||||
v4 = 0;
|
||||
do
|
||||
{
|
||||
++v2;
|
||||
v3 = idVoiceTrack::Memory(this: this->tracks.list[v4++]) + v3 - 292;
|
||||
}
|
||||
while ( v2 < this->tracks.num );
|
||||
}
|
||||
return v3;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetMaxLength@idDeclVoiceOver@@QBA?AV?$idTypesafeNumber@HW4millisecondUnique_t@@@@XZ
|
||||
// EA : 0x8262D480
|
||||
// RVA : 0x0062D480
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclVoiceOver *__fastcall idDeclVoiceOver::GetMaxLength(
|
||||
idDeclVoiceOver *this,
|
||||
idTypesafeNumber<int,enum millisecondUnique_t> *result)
|
||||
{
|
||||
int value; // r11
|
||||
int v3; // r10
|
||||
int v4; // r9
|
||||
int i; // ctr
|
||||
int v6; // r11
|
||||
idDeclVoiceOver_vtbl *v7; // r11
|
||||
|
||||
value = result[18].value;
|
||||
v3 = 0;
|
||||
this->__vftable = nullptr;
|
||||
if ( value > 0 )
|
||||
{
|
||||
v4 = result[17].value;
|
||||
for ( i = value; i != 0; --i )
|
||||
{
|
||||
v6 = *(_DWORD *)(v3 + v4);
|
||||
if ( v6 != 0 )
|
||||
{
|
||||
v7 = *(idDeclVoiceOver_vtbl **)(v6 + 288);
|
||||
if ( (int)v7 > (int)this->__vftable )
|
||||
this->__vftable = v7;
|
||||
}
|
||||
v3 += 4;
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?reloadVoiceOvers_f@@YAXABVidCmdArgs@@@Z
|
||||
// EA : 0x8262D4D0
|
||||
// RVA : 0x0062D4D0
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall reloadVoiceOvers_f(const idCmdArgs *args)
|
||||
{
|
||||
bool v1; // r31
|
||||
int v2; // r31
|
||||
int num; // r29
|
||||
idResource *v4; // r3
|
||||
|
||||
if ( args->argc <= 1 )
|
||||
goto LABEL_6;
|
||||
v1 = true;
|
||||
if ( args->argc == 2 )
|
||||
v1 = idStr::Icmp(s1: args->argv[1], s2: "-force") != 0;
|
||||
if ( v1 )
|
||||
{
|
||||
idLib::Printf(fmt: "USAGE: reloadVoiceOvers [-force]\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
LABEL_6:
|
||||
v2 = 0;
|
||||
num = idDeclVoiceOver::resourceList.num;
|
||||
++idResourceList::staleCount;
|
||||
if ( idDeclVoiceOver::resourceList.num > 0 )
|
||||
{
|
||||
do
|
||||
{
|
||||
v4 = idResourceList::Index(this: &idDeclVoiceOver::resourceList, index: v2);
|
||||
v4->ReloadIfStale(this: v4);
|
||||
++v2;
|
||||
}
|
||||
while ( v2 < num );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??0idDeclVoiceOver@@QAA@XZ
|
||||
// EA : 0x8262D860
|
||||
// RVA : 0x0062D860
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
idDeclVoiceOver *__fastcall idDeclVoiceOver::idDeclVoiceOver(idDeclVoiceOver *this)
|
||||
{
|
||||
idDeclTypeInfo::idDeclTypeInfo(this);
|
||||
this->nextSampleToPlay = -1;
|
||||
this->__vftable = (idDeclVoiceOver_vtbl *)&idDeclVoiceOver::`vftable';
|
||||
this->tracks.list = nullptr;
|
||||
this->tracks.granularity = 0;
|
||||
this->tracks.memTag = 65;
|
||||
this->tracks.listStatic = 0;
|
||||
this->tracks.size = 0;
|
||||
this->tracks.num = 0;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->tracks);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$220870
|
||||
// EA : 0x8262D8DC
|
||||
// RVA : 0x0062D8DC
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_220870()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ??1idDeclVoiceOver@@UAA@XZ
|
||||
// EA : 0x8262D920
|
||||
// RVA : 0x0062D920
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall idDeclVoiceOver::~idDeclVoiceOver(idDeclVoiceOver *this)
|
||||
{
|
||||
idList<idVoiceTrack const *,65> *p_tracks; // r29
|
||||
|
||||
this->__vftable = (idDeclVoiceOver_vtbl *)&idDeclVoiceOver::`vftable';
|
||||
p_tracks = &this->tracks;
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)&this->tracks);
|
||||
idList<idThread *,58>::Clear(this: (idList<idVehicleState *,5> *)p_tracks);
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$220895
|
||||
// EA : 0x8262D968
|
||||
// RVA : 0x0062D968
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_220895()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idDeclTypeInfo::~idDeclTypeInfo(this: *(idDeclTypeInfo **)(v0 - 112 + 132));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$220896
|
||||
// EA : 0x8262D990
|
||||
// RVA : 0x0062D990
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_220896()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idDeclSecretType const *,5>::~idList<idDeclSecretType const *,5>(this: (idStaticList<idVehicleState *,4> *)(*(_DWORD *)(v0 - 112 + 132) + 68));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?listStaleVoiceTracks_f@@YAXABVidCmdArgs@@@Z
|
||||
// EA : 0x8262D9C0
|
||||
// RVA : 0x0062D9C0
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall listStaleVoiceTracks_f(const idCmdArgs *args)
|
||||
{
|
||||
int v1; // r24
|
||||
int v2; // r27
|
||||
int v3; // r26
|
||||
int num; // r19
|
||||
int v5; // r22
|
||||
const char *str; // r4
|
||||
const idDecl *v7; // r28
|
||||
int resourceListPtr; // r11
|
||||
int v9; // r30
|
||||
int v10; // r29
|
||||
idVoiceTrack *v11; // r31
|
||||
BOOL IsCustomized; // r9
|
||||
const char *v13; // r5
|
||||
|
||||
common->SetRefreshOnPrint(this: common, a2: true);
|
||||
v1 = 0;
|
||||
v2 = 0;
|
||||
v3 = 0;
|
||||
if ( idDeclVoiceOver::resourceList.declSources.num > 0 )
|
||||
{
|
||||
num = idDeclVoiceOver::resourceList.declSources.num;
|
||||
v5 = 0;
|
||||
do
|
||||
{
|
||||
str = idDeclVoiceOver::resourceList.declSources.list[v5]->name.str;
|
||||
if ( str != nullptr )
|
||||
v7 = idDeclInfo::FindWithInheritance(this: &idDeclVoiceOver::resourceList, name: str, makeDefault: false);
|
||||
else
|
||||
v7 = nullptr;
|
||||
resourceListPtr = (int)v7[1].resourceListPtr;
|
||||
v9 = 0;
|
||||
v1 += resourceListPtr;
|
||||
if ( resourceListPtr > 0 )
|
||||
{
|
||||
v10 = 0;
|
||||
do
|
||||
{
|
||||
if ( v9 < 0 || v9 >= resourceListPtr )
|
||||
v11 = nullptr;
|
||||
else
|
||||
v11 = *(idVoiceTrack **)((char *)&v7[1].nextOnHashChain->idResource::__vftable + v10);
|
||||
if ( idVoiceTrack::IsStale(this: v11) )
|
||||
{
|
||||
v3 += idVoiceTrack::IsCustomized(this: v11);
|
||||
IsCustomized = idVoiceTrack::IsCustomized(this: v11);
|
||||
v13 = "^3 - customized";
|
||||
if ( !IsCustomized )
|
||||
v13 = &byte_8200D768;
|
||||
idLib::Printf(fmt: "^7 %s%s\n", v11->name.str, v13);
|
||||
++v2;
|
||||
}
|
||||
resourceListPtr = (int)v7[1].resourceListPtr;
|
||||
++v9;
|
||||
v10 += 4;
|
||||
}
|
||||
while ( v9 < resourceListPtr );
|
||||
}
|
||||
--num;
|
||||
++v5;
|
||||
}
|
||||
while ( num != 0 );
|
||||
}
|
||||
idLib::Printf(fmt: "%d total referenced voice tracks.\n", v1);
|
||||
idLib::Printf(fmt: "%d stale voice tracks found.\n", v2);
|
||||
idLib::Printf(fmt: "%d stale voice tracks were customized.\n", v3);
|
||||
common->SetRefreshOnPrint(this: common, a2: false);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?listCustomizedVoiceTracks_f@@YAXABVidCmdArgs@@@Z
|
||||
// EA : 0x8262DC10
|
||||
// RVA : 0x0062DC10
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall listCustomizedVoiceTracks_f(const idCmdArgs *args)
|
||||
{
|
||||
__int64 v1; // r10
|
||||
const char **v2; // r8
|
||||
int v3; // r7
|
||||
int v4; // r6
|
||||
signed int v5; // r27
|
||||
idStr *list; // r20
|
||||
int size; // r18
|
||||
int v8; // r17
|
||||
idStr *v9; // r23
|
||||
int v10; // r19
|
||||
signed int v11; // r26
|
||||
idStr *v12; // r24
|
||||
int v13; // r22
|
||||
signed int v14; // r25
|
||||
int num; // r25
|
||||
const idDecl *v16; // r24
|
||||
int resourceListPtr; // r11
|
||||
int v18; // r29
|
||||
int v19; // r28
|
||||
int v20; // r30
|
||||
int v21; // r3
|
||||
char v22; // r11
|
||||
idStr *v23; // r3
|
||||
const char **p_data; // r29
|
||||
signed int i; // r30
|
||||
const char **v26; // r29
|
||||
signed int j; // r30
|
||||
const char **v28; // r29
|
||||
signed int k; // r30
|
||||
idStr *v30; // r29
|
||||
int m; // r30
|
||||
idStr *v32; // r29
|
||||
int n; // r30
|
||||
idStr *v34; // r29
|
||||
int ii; // r30
|
||||
idSort_Quick<idStr,idSort_vtr> v36; // [sp+54h] [-12Ch] BYREF
|
||||
idSort_Quick<idStr,idSort_vtr> v37; // [sp+58h] [-128h] BYREF
|
||||
idSort_Quick<idStr,idSort_vtr> v38; // [sp+5Ch] [-124h] BYREF
|
||||
idList<idStr,5> v39; // [sp+60h] [-120h] BYREF
|
||||
idList<idStr,5> v40; // [sp+70h] [-110h] BYREF
|
||||
idList<idStr,5> v41; // [sp+80h] [-100h] BYREF
|
||||
idStr v42; // [sp+90h] [-F0h] BYREF
|
||||
idStr v43; // [sp+B0h] [-D0h] BYREF
|
||||
idStr v44[5]; // [sp+D0h] [-B0h] BYREF
|
||||
|
||||
common->SetRefreshOnPrint(this: common, a2: true);
|
||||
v5 = 0;
|
||||
list = nullptr;
|
||||
*(_WORD *)&v41.memTag = 1280;
|
||||
size = 0;
|
||||
memset(&v41, 0, 14);
|
||||
v8 = 0;
|
||||
v9 = nullptr;
|
||||
v10 = 0;
|
||||
*(_WORD *)&v40.memTag = 1280;
|
||||
v11 = 0;
|
||||
memset(&v40, 0, 14);
|
||||
v12 = nullptr;
|
||||
*(_WORD *)&v39.memTag = 1280;
|
||||
v13 = 0;
|
||||
v14 = 0;
|
||||
memset(&v39, 0, 14);
|
||||
if ( idDeclVoiceOver::resourceList.declSources.num > 0 )
|
||||
{
|
||||
num = idDeclVoiceOver::resourceList.declSources.num;
|
||||
while ( 1 )
|
||||
{
|
||||
LODWORD(v1) = idDeclVoiceOver::resourceList.declSources.list;
|
||||
HIDWORD(v1) = (char *)idDeclVoiceOver::resourceList.declSources.list + v11;
|
||||
v2 = *(const char ***)((char *)idDeclVoiceOver::resourceList.declSources.list + v11);
|
||||
v16 = *v2 != nullptr
|
||||
? idDeclInfo::FindWithInheritance(this: &idDeclVoiceOver::resourceList, name: *v2, makeDefault: false)
|
||||
: nullptr;
|
||||
resourceListPtr = (int)v16[1].resourceListPtr;
|
||||
v18 = 0;
|
||||
v8 += resourceListPtr;
|
||||
if ( resourceListPtr > 0 )
|
||||
break;
|
||||
LABEL_23:
|
||||
--num;
|
||||
v11 += 4;
|
||||
if ( num == 0 )
|
||||
{
|
||||
size = v41.size;
|
||||
v5 = v41.num;
|
||||
list = v41.list;
|
||||
v10 = v40.size;
|
||||
v11 = v40.num;
|
||||
v9 = v40.list;
|
||||
v13 = v39.size;
|
||||
v14 = v39.num;
|
||||
v12 = v39.list;
|
||||
goto LABEL_25;
|
||||
}
|
||||
}
|
||||
v19 = 0;
|
||||
while ( 1 )
|
||||
{
|
||||
if ( v18 < 0 || v18 >= resourceListPtr )
|
||||
v20 = 0;
|
||||
else
|
||||
v20 = *(int *)((char *)&v16[1].nextOnHashChain->idResource::__vftable + v19);
|
||||
if ( (*(_BYTE *)(v20 + 268) & 4) != 0
|
||||
|| (v21 = idVoiceEventManager::NumEventType(this: (idVoiceEventManager *)(v20 + 52), type: VOICEEVENT_ANIM),
|
||||
v22 = 0,
|
||||
v21 > 0) )
|
||||
{
|
||||
v22 = 1;
|
||||
}
|
||||
if ( v22 != 0 )
|
||||
break;
|
||||
if ( **(_BYTE **)(v20 + 208) != 0 )
|
||||
{
|
||||
idStr::idStr(this: &v43, text: *(const char **)(v20 + 8));
|
||||
idList<idStr,5>::Append(this: &v39, obj: &v43);
|
||||
v23 = &v43;
|
||||
goto _M221720_0;
|
||||
}
|
||||
if ( idVoiceTrack::IsCustomized(this: (idVoiceTrack *)v20) )
|
||||
{
|
||||
idStr::idStr(this: v44, text: *(const char **)(v20 + 8));
|
||||
idList<idStr,5>::Append(this: &v41, obj: v44);
|
||||
v23 = v44;
|
||||
goto _M221720_0;
|
||||
}
|
||||
LABEL_22:
|
||||
++v18;
|
||||
v19 += 4;
|
||||
resourceListPtr = (int)v16[1].resourceListPtr;
|
||||
if ( v18 >= resourceListPtr )
|
||||
goto LABEL_23;
|
||||
}
|
||||
idStr::idStr(this: &v42, text: *(const char **)(v20 + 8));
|
||||
idList<idStr,5>::Append(this: &v40, obj: &v42);
|
||||
v23 = &v42;
|
||||
_M221720_0:
|
||||
idStr::FreeData(this: v23);
|
||||
goto LABEL_22;
|
||||
}
|
||||
LABEL_25:
|
||||
v38.__vftable = (idSort_Quick<idStr,idSort_vtr>_vtbl *)&idSort_vtr::`vftable';
|
||||
if ( list != nullptr )
|
||||
idSort_Quick<idStr,idSort_vtr>::Sort(this: &v38, base: list, num: v5, a4: v4, a5: v3, a6: (int)v2, a7: v1);
|
||||
v36.__vftable = (idSort_Quick<idStr,idSort_vtr>_vtbl *)&idSort_vtr::`vftable';
|
||||
v38.__vftable = (idSort_Quick<idStr,idSort_vtr>_vtbl *)&idSort<idStr>::`vftable';
|
||||
if ( v9 != nullptr )
|
||||
idSort_Quick<idStr,idSort_vtr>::Sort(this: &v36, base: v9, num: v11, a4: v4, a5: v3, a6: (int)v2, a7: v1);
|
||||
v36.__vftable = (idSort_Quick<idStr,idSort_vtr>_vtbl *)&idSort<idStr>::`vftable';
|
||||
v37.__vftable = (idSort_Quick<idStr,idSort_vtr>_vtbl *)&idSort_vtr::`vftable';
|
||||
if ( v12 != nullptr )
|
||||
idSort_Quick<idStr,idSort_vtr>::Sort(this: &v37, base: v12, num: v14, a4: v4, a5: v3, a6: (int)v2, a7: v1);
|
||||
v37.__vftable = (idSort_Quick<idStr,idSort_vtr>_vtbl *)&idSort<idStr>::`vftable';
|
||||
if ( v5 > 0 )
|
||||
{
|
||||
p_data = (const char **)&list[-1].data;
|
||||
for ( i = v5; i != 0; --i )
|
||||
{
|
||||
p_data += 8;
|
||||
idLib::Printf(fmt: "%s - ^2customized\n", *p_data);
|
||||
}
|
||||
}
|
||||
if ( v11 > 0 )
|
||||
{
|
||||
v26 = (const char **)&v9[-1].data;
|
||||
for ( j = v11; j != 0; --j )
|
||||
{
|
||||
v26 += 8;
|
||||
idLib::Printf(fmt: "%s - ^5edited\n", *v26);
|
||||
}
|
||||
}
|
||||
if ( v14 > 0 )
|
||||
{
|
||||
v28 = (const char **)&v12[-1].data;
|
||||
for ( k = v14; k != 0; --k )
|
||||
{
|
||||
v28 += 8;
|
||||
idLib::Printf(fmt: "%s - ^4hand keyed\n", *v28);
|
||||
}
|
||||
}
|
||||
idLib::Printf(fmt: "^7%d total referenced voice tracks.\n", v8);
|
||||
idLib::Printf(fmt: "^3%d customized voice tracks found.\n", v5);
|
||||
idLib::Printf(fmt: "^5%d edited voice tracks found.\n", v11);
|
||||
idLib::Printf(fmt: "^4%d hand-keyed voice tracks found.\n", v14);
|
||||
common->SetRefreshOnPrint(this: common, a2: false);
|
||||
if ( (v39.listStatic == 0 || v39.listStatic == 2) && v12 != nullptr )
|
||||
{
|
||||
if ( v13 > 0 )
|
||||
{
|
||||
v30 = v12;
|
||||
for ( m = v13; m != 0; --m )
|
||||
idStr::FreeData(this: v30++);
|
||||
}
|
||||
idMem::Free(this: &mem, ptr: v12, align: ALIGN_16);
|
||||
}
|
||||
if ( (v40.listStatic == 0 || v40.listStatic == 2) && v9 != nullptr )
|
||||
{
|
||||
if ( v10 > 0 )
|
||||
{
|
||||
v32 = v9;
|
||||
for ( n = v10; n != 0; --n )
|
||||
idStr::FreeData(this: v32++);
|
||||
}
|
||||
idMem::Free(this: &mem, ptr: v9, align: ALIGN_16);
|
||||
}
|
||||
if ( (v41.listStatic == 0 || v41.listStatic == 2) && list != nullptr )
|
||||
{
|
||||
if ( size > 0 )
|
||||
{
|
||||
v34 = list;
|
||||
for ( ii = size; ii != 0; --ii )
|
||||
idStr::FreeData(this: v34++);
|
||||
}
|
||||
idMem::Free(this: &mem, ptr: list, align: ALIGN_16);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221100
|
||||
// EA : 0x8262E0AC
|
||||
// RVA : 0x0062E0AC
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221100()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(v0 - 384 + 128));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221101
|
||||
// EA : 0x8262E0D4
|
||||
// RVA : 0x0062E0D4
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221101()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(v0 - 384 + 112));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221102
|
||||
// EA : 0x8262E0FC
|
||||
// RVA : 0x0062E0FC
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221102()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(v0 - 384 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221103
|
||||
// EA : 0x8262E124
|
||||
// RVA : 0x0062E124
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221103()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 384 + 144));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221104
|
||||
// EA : 0x8262E14C
|
||||
// RVA : 0x0062E14C
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221104()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 384 + 176));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221105
|
||||
// EA : 0x8262E174
|
||||
// RVA : 0x0062E174
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221105()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 384 + 208));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221106
|
||||
// EA : 0x8262E19C
|
||||
// RVA : 0x0062E19C
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221106()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idSort_QuickDefault<idStr>::~idSort_QuickDefault<idStr>(this: (idSort_QuickDefault<idStr> *)(v0 - 384 + 92));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221107
|
||||
// EA : 0x8262E1C4
|
||||
// RVA : 0x0062E1C4
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221107()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idSort_QuickDefault<idStr>::~idSort_QuickDefault<idStr>(this: (idSort_QuickDefault<idStr> *)(v0 - 384 + 84));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221108_0
|
||||
// EA : 0x8262E1EC
|
||||
// RVA : 0x0062E1EC
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221108_0()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idSort_QuickDefault<idStr>::~idSort_QuickDefault<idStr>(this: (idSort_QuickDefault<idStr> *)(v0 - 384 + 88));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?removeUnreferencedVoiceTracks_f@@YAXABVidCmdArgs@@@Z
|
||||
// EA : 0x8262E220
|
||||
// RVA : 0x0062E220
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void __fastcall removeUnreferencedVoiceTracks_f(const idCmdArgs *args)
|
||||
{
|
||||
idStr *list; // r21
|
||||
int size; // r20
|
||||
int v3; // r27
|
||||
int num; // r25
|
||||
const char *v5; // r4
|
||||
const idDecl *v6; // r28
|
||||
int resourceListPtr; // r11
|
||||
int v8; // r30
|
||||
int v9; // r29
|
||||
int v10; // r11
|
||||
idFileList *v11; // r25
|
||||
int v12; // r23
|
||||
int v13; // r24
|
||||
int v14; // r26
|
||||
int v15; // r30
|
||||
const char *data; // r28
|
||||
const char **p_data; // r29
|
||||
idStr *v18; // r29
|
||||
int i; // r30
|
||||
idList<idStr,5> v20; // [sp+60h] [-B0h] BYREF
|
||||
idStr v21[5]; // [sp+70h] [-A0h] BYREF
|
||||
|
||||
*(_WORD *)&v20.memTag = 1280;
|
||||
list = nullptr;
|
||||
size = 0;
|
||||
v3 = 0;
|
||||
memset(&v20, 0, 14);
|
||||
common->SetRefreshOnPrint(this: common, a2: true);
|
||||
if ( idDeclVoiceOver::resourceList.declSources.num > 0 )
|
||||
{
|
||||
num = idDeclVoiceOver::resourceList.declSources.num;
|
||||
do
|
||||
{
|
||||
v5 = **(const char ***)((char *)idDeclVoiceOver::resourceList.declSources.list + v3);
|
||||
if ( v5 != nullptr )
|
||||
v6 = idDeclInfo::FindWithInheritance(this: &idDeclVoiceOver::resourceList, name: v5, makeDefault: false);
|
||||
else
|
||||
v6 = nullptr;
|
||||
v8 = 0;
|
||||
resourceListPtr = (int)v6[1].resourceListPtr;
|
||||
if ( resourceListPtr > 0 )
|
||||
{
|
||||
v9 = 0;
|
||||
do
|
||||
{
|
||||
if ( v8 < 0 || v8 >= resourceListPtr )
|
||||
v10 = 0;
|
||||
else
|
||||
v10 = *(int *)((char *)&v6[1].nextOnHashChain->idResource::__vftable + v9);
|
||||
idStr::idStr(this: v21, text: *(const char **)(v10 + 8));
|
||||
if ( idList<idStr,5>::FindIndex(this: &v20, obj: v21, startIndex: 0) < 0 )
|
||||
idList<idStr,5>::Append(this: &v20, obj: v21);
|
||||
idStr::FreeData(this: v21);
|
||||
++v8;
|
||||
v9 += 4;
|
||||
resourceListPtr = (int)v6[1].resourceListPtr;
|
||||
}
|
||||
while ( v8 < resourceListPtr );
|
||||
}
|
||||
--num;
|
||||
v3 += 4;
|
||||
}
|
||||
while ( num != 0 );
|
||||
v3 = v20.num;
|
||||
size = v20.size;
|
||||
list = v20.list;
|
||||
}
|
||||
v11 = fileSystem->ListFilesTree(this: fileSystem, a2: "voicetrack", a3: ".vtr", a4: 0);
|
||||
v12 = 0;
|
||||
v13 = 0;
|
||||
if ( v11->list.num > 0 )
|
||||
{
|
||||
v14 = 0;
|
||||
do
|
||||
{
|
||||
v15 = 0;
|
||||
data = v11->list.list[v14].data;
|
||||
if ( v3 <= 0 )
|
||||
goto LABEL_25;
|
||||
p_data = (const char **)&list->data;
|
||||
while ( idStr::Icmp(s1: data, s2: *p_data) != 0 )
|
||||
{
|
||||
++v15;
|
||||
p_data += 8;
|
||||
if ( v15 >= v3 )
|
||||
goto LABEL_25;
|
||||
}
|
||||
if ( v15 >= v3 )
|
||||
{
|
||||
LABEL_25:
|
||||
idLib::Printf(fmt: "File '%s' is unreferenced. Deleting...\n", data);
|
||||
++v12;
|
||||
}
|
||||
++v13;
|
||||
++v14;
|
||||
}
|
||||
while ( v13 < v11->list.num );
|
||||
}
|
||||
idLib::Printf(fmt: "Removed %d unreferenced voice tracks.\n", v12);
|
||||
common->SetRefreshOnPrint(this: common, a2: false);
|
||||
if ( (v20.listStatic == 0 || v20.listStatic == 2) && list != nullptr )
|
||||
{
|
||||
if ( size > 0 )
|
||||
{
|
||||
v18 = list;
|
||||
for ( i = size; i != 0; --i )
|
||||
idStr::FreeData(this: v18++);
|
||||
}
|
||||
idMem::Free(this: &mem, ptr: list, align: ALIGN_16);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221775
|
||||
// EA : 0x8262E4B0
|
||||
// RVA : 0x0062E4B0
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221775()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idList<idStr,99>::~idList<idStr,99>(this: (idList<idStr,5> *)(v0 - 272 + 96));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// __unwind$221776
|
||||
// EA : 0x8262E4D8
|
||||
// RVA : 0x0062E4D8
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
void _unwind_221776()
|
||||
{
|
||||
int v0; // r12
|
||||
|
||||
idStrStatic<260>::~idStrStatic<260>(this: (idStr *)(v0 - 272 + 112));
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?AddTrack@idDeclVoiceOver@@QAA_NPAVidVoiceTrack@@@Z
|
||||
// EA : 0x8262E500
|
||||
// RVA : 0x0062E500
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
int __fastcall idDeclVoiceOver::AddTrack(idDeclVoiceOver *this, idSpawnArea::GeneratedPosition *vtrack)
|
||||
{
|
||||
int v4; // r29
|
||||
int v5; // r30
|
||||
idList<idSpawnArea::GeneratedPosition *,5> *p_tracks; // r31
|
||||
int granularity; // r4
|
||||
int size; // r11
|
||||
bool v9; // cr58
|
||||
signed int v11; // r10
|
||||
int v12; // r4
|
||||
int v13; // r11
|
||||
int num; // r11
|
||||
|
||||
v4 = 0;
|
||||
if ( this->tracks.num <= 0 )
|
||||
{
|
||||
LABEL_5:
|
||||
p_tracks = (idList<idSpawnArea::GeneratedPosition *,5> *)&this->tracks;
|
||||
if ( p_tracks->list != nullptr )
|
||||
goto LABEL_9;
|
||||
granularity = p_tracks->granularity;
|
||||
if ( granularity <= 0 )
|
||||
granularity = 1;
|
||||
if ( idList<idNavSpline *,5>::Resize(this: p_tracks, newsize: granularity) )
|
||||
{
|
||||
LABEL_9:
|
||||
size = p_tracks->size;
|
||||
if ( p_tracks->num != size )
|
||||
goto LABEL_21;
|
||||
if ( forceIdListsToReallocateEveryAppend )
|
||||
{
|
||||
v9 = !idList<idNavSpline *,5>::Resize(this: p_tracks, newsize: size + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
v11 = p_tracks->granularity;
|
||||
if ( p_tracks->granularity != 0 )
|
||||
{
|
||||
v13 = size + v11;
|
||||
__twllei(v11, 0);
|
||||
__twlgei(v11 & ~(__ROL4__(v13, 1) - 1), 0xFFFFFFFF);
|
||||
v9 = !idList<idNavSpline *,5>::Resize(this: p_tracks, newsize: v13 - v13 % v11);
|
||||
}
|
||||
else
|
||||
{
|
||||
v12 = 2 * size;
|
||||
if ( 2 * size >= size )
|
||||
{
|
||||
if ( v12 == 0 )
|
||||
v12 = 1;
|
||||
v9 = !idList<idNavSpline *,5>::Resize(this: p_tracks, newsize: v12);
|
||||
}
|
||||
else
|
||||
{
|
||||
v9 = !idList<idNavSpline *,5>::Resize(this: p_tracks, newsize: 0x7FFFFFFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( !v9 )
|
||||
{
|
||||
LABEL_21:
|
||||
num = p_tracks->num;
|
||||
if ( num < p_tracks->size )
|
||||
{
|
||||
p_tracks->list[num] = vtrack;
|
||||
++p_tracks->num;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
v5 = 0;
|
||||
while ( idStr::Icmp(s1: this->tracks.list[v5]->name.str, s2: (const char *)LODWORD(vtrack->position.z)) != 0 )
|
||||
{
|
||||
++v4;
|
||||
++v5;
|
||||
if ( v4 >= this->tracks.num )
|
||||
goto LABEL_5;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'reloadVoiceOvers_v''
|
||||
// EA : 0x833372E0
|
||||
// RVA : 0x013372E0
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCommandLink *_dynamic_initializer_for__reloadVoiceOvers_v__()
|
||||
{
|
||||
return idCommandLink::idCommandLink(
|
||||
this: &reloadVoiceOvers_v,
|
||||
cmdName: "reloadVoiceOvers",
|
||||
function: reloadVoiceOvers_f,
|
||||
description: "reload changed voice overs, add 'force' as a parameter to force regeneration of all voice overs",
|
||||
argCompletion: nullptr);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'listCustomizedVoiceTracks_v''
|
||||
// EA : 0x83337308
|
||||
// RVA : 0x01337308
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCommandLink *_dynamic_initializer_for__listCustomizedVoiceTracks_v__()
|
||||
{
|
||||
return idCommandLink::idCommandLink(
|
||||
this: &listCustomizedVoiceTracks_v,
|
||||
cmdName: "listCustomizedVoiceTracks",
|
||||
function: listCustomizedVoiceTracks_f,
|
||||
description: "lists referenced voice tracks that have been modified since phoneme to viseme generation.",
|
||||
argCompletion: nullptr);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'listStaleVoiceTracks_v''
|
||||
// EA : 0x83337330
|
||||
// RVA : 0x01337330
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCommandLink *_dynamic_initializer_for__listStaleVoiceTracks_v__()
|
||||
{
|
||||
return idCommandLink::idCommandLink(
|
||||
this: &listStaleVoiceTracks_v,
|
||||
cmdName: "listStaleVoiceTracks",
|
||||
function: listStaleVoiceTracks_f,
|
||||
description: "lists voice tracks that have not been regenerated since their source text or sound shader were changed",
|
||||
argCompletion: nullptr);
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// `dynamic initializer for 'removeUnreferencedVoiceTracks_v''
|
||||
// EA : 0x83337358
|
||||
// RVA : 0x01337358
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.cpp
|
||||
// ========================================================================
|
||||
|
||||
idCommandLink *_dynamic_initializer_for__removeUnreferencedVoiceTracks_v__()
|
||||
{
|
||||
return idCommandLink::idCommandLink(
|
||||
this: &removeUnreferencedVoiceTracks_v,
|
||||
cmdName: "removeUnreferencedVoiceTracks",
|
||||
function: removeUnreferencedVoiceTracks_f,
|
||||
description: "Deletes voice tracks (.vtr) files that are not referenced by any voice over decls",
|
||||
argCompletion: nullptr);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
// ========================================================================
|
||||
// ?GetTrack@idDeclVoiceOver@@QBAPBVidVoiceTrack@@H@Z
|
||||
// EA : 0x8262D3E8
|
||||
// RVA : 0x0062D3E8
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.h
|
||||
// ========================================================================
|
||||
|
||||
const idVoiceTrack *__fastcall idDeclVoiceOver::GetTrack(idDeclVoiceOver *this, int index)
|
||||
{
|
||||
if ( index < 0 || index >= this->tracks.num )
|
||||
return nullptr;
|
||||
else
|
||||
return this->tracks.list[index];
|
||||
}
|
||||
|
||||
|
||||
// ========================================================================
|
||||
// ?GetDeclInfo@idDeclVoiceOver@@UBAPAVidDeclInfo@@XZ
|
||||
// EA : 0x8262D908
|
||||
// RVA : 0x0062D908
|
||||
// PDB : w:\tech5\engine\decls\voiceovers\declvoiceover.h
|
||||
// ========================================================================
|
||||
|
||||
idDeclInfoTemplate<idDeclVoiceOver> *__fastcall idDeclVoiceOver::GetDeclInfo(idDeclVoiceOver *this)
|
||||
{
|
||||
return &idDeclVoiceOver::resourceList;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user