From 307e67b056b532919082fd3834b7a1950aa646f0 Mon Sep 17 00:00:00 2001 From: TheApadayo Date: Thu, 29 Dec 2016 22:14:50 -0500 Subject: [PATCH] [Structs] Update with correct cbrushside_t structure --- .../Modules/AssetInterfaces/IPhysCollmap.cpp | 12 ++-- .../Modules/AssetInterfaces/IclipMap_t.cpp | 34 +++++---- src/Components/Modules/QuickPatch.cpp | 12 ---- src/Game/Structs.hpp | 72 ++++++++++++------- 4 files changed, 68 insertions(+), 62 deletions(-) diff --git a/src/Components/Modules/AssetInterfaces/IPhysCollmap.cpp b/src/Components/Modules/AssetInterfaces/IPhysCollmap.cpp index 2816050f..3190b50d 100644 --- a/src/Components/Modules/AssetInterfaces/IPhysCollmap.cpp +++ b/src/Components/Modules/AssetInterfaces/IPhysCollmap.cpp @@ -30,19 +30,19 @@ namespace Assets Game::cbrushside_t* destSide = &destBrushSide[i]; Game::cbrushside_t* side = &brush->brush.brushSide[i]; - if (side->side) + if (side->plane) { - if (builder->hasPointer(side->side)) + if (builder->hasPointer(side->plane)) { - destSide->side = builder->getPointer(side->side); + destSide->plane = builder->getPointer(side->plane); } else { buffer->align(Utils::Stream::ALIGN_4); - builder->storePointer(side->side); + builder->storePointer(side->plane); - buffer->save(side->side, sizeof(Game::cplane_t)); - Utils::Stream::ClearPointer(&destSide->side); + buffer->save(side->plane, sizeof(Game::cplane_t)); + Utils::Stream::ClearPointer(&destSide->plane); } } } diff --git a/src/Components/Modules/AssetInterfaces/IclipMap_t.cpp b/src/Components/Modules/AssetInterfaces/IclipMap_t.cpp index d1a4f881..a0233e90 100644 --- a/src/Components/Modules/AssetInterfaces/IclipMap_t.cpp +++ b/src/Components/Modules/AssetInterfaces/IclipMap_t.cpp @@ -105,21 +105,21 @@ namespace Assets for (int i = 0; i < asset->numCBrushSides; ++i) { - if (sides[i].side) + if (sides[i].plane) { AssertSize(Game::cplane_t, 20); - if (builder->hasPointer(sides[i].side)) + if (builder->hasPointer(sides[i].plane)) { - sides[i].side = builder->getPointer(sides[i].side); + sides[i].plane = builder->getPointer(sides[i].plane); } else { buffer->align(Utils::Stream::ALIGN_4); - builder->storePointer(sides[i].side); + builder->storePointer(sides[i].plane); - buffer->save(sides[i].side); - Utils::Stream::ClearPointer(&sides[i].side); + buffer->save(sides[i].plane); + Utils::Stream::ClearPointer(&sides[i].plane); } } } @@ -377,18 +377,18 @@ namespace Assets Game::cbrushside_t* side = buffer->dest(); buffer->save(brush->sides); - if (brush->sides->side) + if (brush->sides->plane) { - if (builder->hasPointer(brush->sides->side)) + if (builder->hasPointer(brush->sides->plane)) { - side->side = builder->getPointer(brush->sides->side); + side->plane = builder->getPointer(brush->sides->plane); } else { buffer->align(Utils::Stream::ALIGN_4); - builder->storePointer(brush->sides->side); - buffer->save(brush->sides->side); - Utils::Stream::ClearPointer(&side->side); + builder->storePointer(brush->sides->plane); + buffer->save(brush->sides->plane); + Utils::Stream::ClearPointer(&side->plane); } } @@ -661,12 +661,10 @@ namespace Assets Components::Logger::Error("invalid plane index"); return; } - clipMap->cBrushSides[i].side = &clipMap->cPlanes[planeIndex]; - reader.read(); // materialNum - reader.read(); // firstAdjacentSide - reader.read(); // edgeCount - // not sure how to fill out texInfo and dispInfo - // just leave zero for now + clipMap->cBrushSides[i].plane = &clipMap->cPlanes[planeIndex]; + clipMap->cBrushSides[i].materialNum = static_cast(reader.read()); // materialNum + clipMap->cBrushSides[i].firstAdjacentSideOffset = static_cast(reader.read()); // firstAdjacentSide + clipMap->cBrushSides[i].edgeCount = reader.read(); // edgeCount } } diff --git a/src/Components/Modules/QuickPatch.cpp b/src/Components/Modules/QuickPatch.cpp index 66b7a7d5..ac0a4394 100644 --- a/src/Components/Modules/QuickPatch.cpp +++ b/src/Components/Modules/QuickPatch.cpp @@ -182,19 +182,7 @@ namespace Components void QuickPatch::testFunc() { - Game::DB_EnumXAssets(Game::XAssetType::ASSET_TYPE_CLIPMAP_PVS, [](Game::XAssetHeader header, void* /*unused*/) - { - Game::clipMap_t* map = header.clipMap; - for (int i = 0; i < map->numCBrushSides; ++i) - { - if (map->cBrushSides[i].texInfo > map->numMaterials) - { - __debugbreak(); - } - } - - }, nullptr, false); } QuickPatch::QuickPatch() diff --git a/src/Game/Structs.hpp b/src/Game/Structs.hpp index e9b7a4d5..0bdec001 100644 --- a/src/Game/Structs.hpp +++ b/src/Game/Structs.hpp @@ -1624,9 +1624,10 @@ namespace Game struct cbrushside_t { - cplane_t* side; - short texInfo; - short dispInfo; + cplane_t *plane; + unsigned __int16 materialNum; + char firstAdjacentSideOffset; + char edgeCount; }; struct cbrushWrapper_t @@ -2986,8 +2987,27 @@ namespace Game //char flags; }; + struct GfxPackedPlacement + { + float origin[3]; + vec3_t/*PackedUnitVec*/ axis[3]; + float scale; + }; + + struct GfxStaticModelDrawInst + { + GfxPackedPlacement placement; + XModel *model; + unsigned __int16 cullDist; + unsigned __int16 lightingHandle; + char reflectionProbeIndex; + char primaryLightIndex; + char flags; + char firstMtlSkinIndex; + GfxColor groundLighting; + unsigned __int16 cacheId[4]; + }; - struct GfxStaticModelDrawInst; struct GfxWorldDpvsStatic { unsigned int smodelCount; @@ -3017,28 +3037,6 @@ namespace Game #pragma pack(push, 4) - struct GfxPackedPlacement - { - float origin[3]; - vec3_t/*PackedUnitVec*/ axis[3]; - float scale; - }; - - struct GfxStaticModelDrawInst - { - GfxPackedPlacement placement; - - //char pad[24]; - - XModel *model; // 52 - float cullDist; - char reflectionProbeIndex; - char primaryLightIndex; - unsigned __int16 lightingHandle; - char flags; - - char pad2[8]; - }; struct GfxPortalWritable { @@ -3732,6 +3730,28 @@ namespace Game typedef char mapname_t[40]; + struct traceWork_t + { + /*TraceExtents*/int extents; + float delta[3]; + float deltaLen; + float deltaLenSq; + float delta2DLen; + float delta2DLenSq; + float size[3]; + Bounds bounds; + int contents; + bool isPoint; + bool axialCullOnly; + float radius; + float offset[3]; + float radiusOffset[3]; + float boundingRadius; + /*TraceThreadInfo*/ int threadInfo; + /*CM_WorldTraceCallbacks*/ void *callbacks; + }; + + #ifdef __cplusplus } #endif