diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-11-01 14:26:48 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-11-01 14:26:48 +0100 |
| commit | 157a16d7908c6a6d46ce34a0d067ad56f22d6f4f (patch) | |
| tree | 0701bf63ef50bd443c381867b9db02c0c5f90124 /src/common/Collision | |
| parent | 0b4f02c00212add794467a6ef3579ecda8faa8eb (diff) | |
Tools/vmap_extractor: Preserve destructible models to use them in mmaps_generator
Diffstat (limited to 'src/common/Collision')
| -rw-r--r-- | src/common/Collision/Management/VMapManager.cpp | 3 | ||||
| -rw-r--r-- | src/common/Collision/Management/VMapManager.h | 2 | ||||
| -rw-r--r-- | src/common/Collision/Maps/MapTree.cpp | 6 | ||||
| -rw-r--r-- | src/common/Collision/Models/ModelInstance.h | 3 |
4 files changed, 12 insertions, 2 deletions
diff --git a/src/common/Collision/Management/VMapManager.cpp b/src/common/Collision/Management/VMapManager.cpp index ddf8c70be71..b1d1765f54d 100644 --- a/src/common/Collision/Management/VMapManager.cpp +++ b/src/common/Collision/Management/VMapManager.cpp @@ -60,7 +60,8 @@ namespace VMAP iEnableHeightCalc(true), thread_safe_environment(true), GetLiquidFlagsPtr([](uint32 /*liquidTypeId*/) { return 0u; }), - IsVMAPDisabledForPtr([](uint32 /*mapId*/, uint8 /*disableFlags*/) { return false; }) + IsVMAPDisabledForPtr([](uint32 /*mapId*/, uint8 /*disableFlags*/) { return false; }), + LoadPathOnlyModels(false) { } diff --git a/src/common/Collision/Management/VMapManager.h b/src/common/Collision/Management/VMapManager.h index ae91d3db50e..67e897ea986 100644 --- a/src/common/Collision/Management/VMapManager.h +++ b/src/common/Collision/Management/VMapManager.h @@ -182,6 +182,8 @@ namespace VMAP typedef bool(*IsVMAPDisabledForFn)(uint32 entry, uint8 flags); IsVMAPDisabledForFn IsVMAPDisabledForPtr; + + bool LoadPathOnlyModels; }; } diff --git a/src/common/Collision/Maps/MapTree.cpp b/src/common/Collision/Maps/MapTree.cpp index 086ef975f1f..982256f896f 100644 --- a/src/common/Collision/Maps/MapTree.cpp +++ b/src/common/Collision/Maps/MapTree.cpp @@ -318,6 +318,9 @@ namespace VMAP ModelSpawn spawn; if (ModelSpawn::readFromFile(fileResult.TileFile.get(), spawn)) { + if (spawn.flags & MOD_PATH_ONLY && !vm->LoadPathOnlyModels) + continue; + // acquire model instance std::shared_ptr<WorldModel> model = vm->acquireModelInstance(iBasePath, spawn.name); if (!model) @@ -402,6 +405,9 @@ namespace VMAP if (!ModelSpawn::readFromFile(fileResult.TileFile.get(), spawn)) break; + if (spawn.flags & MOD_PATH_ONLY && !vm->LoadPathOnlyModels) + continue; + // update tree uint32 referencedNode = 0; if (fread(&referencedNode, sizeof(uint32), 1, fileResult.SpawnIndicesFile.get()) != 1) diff --git a/src/common/Collision/Models/ModelInstance.h b/src/common/Collision/Models/ModelInstance.h index 1621e1d052e..6b5cb31c768 100644 --- a/src/common/Collision/Models/ModelInstance.h +++ b/src/common/Collision/Models/ModelInstance.h @@ -35,7 +35,8 @@ namespace VMAP enum ModelInstanceFlags { MOD_HAS_BOUND = 1 << 0, - MOD_PARENT_SPAWN = 1 << 1 + MOD_PARENT_SPAWN = 1 << 1, + MOD_PATH_ONLY = 1 << 2 }; struct ModelMinimalData |
