aboutsummaryrefslogtreecommitdiff
path: root/src/common/Collision
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-11-01 14:26:48 +0100
committerShauren <shauren.trinity@gmail.com>2025-11-01 14:26:48 +0100
commit157a16d7908c6a6d46ce34a0d067ad56f22d6f4f (patch)
tree0701bf63ef50bd443c381867b9db02c0c5f90124 /src/common/Collision
parent0b4f02c00212add794467a6ef3579ecda8faa8eb (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.cpp3
-rw-r--r--src/common/Collision/Management/VMapManager.h2
-rw-r--r--src/common/Collision/Maps/MapTree.cpp6
-rw-r--r--src/common/Collision/Models/ModelInstance.h3
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