aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkillerwife <killerwife@gmail.com>2021-04-24 14:58:16 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-04 20:44:25 +0100
commitdbb7f65723fd4c46ae7f12801fa12ca2196fcb03 (patch)
tree4d5c38d937e44a2adc5a74d9008747e162ce9749
parent2467f799bb85c30daae0df83810336486f9ed1a5 (diff)
Vmap: Introduce skipping of antiportals and unreachable mogp (#26331)
* Vmap: Introduce skipping of antiportals and unreachable mogp * Reduce differences with master branch * Update VMAP and MMAP versions * Update MMAPs version Co-authored-by: jackpoz <giacomopoz@gmail.com> (cherry picked from commit d5f1fefe7f6772b11e9fbb052bfd36be9bda98e2)
-rw-r--r--src/common/Collision/Maps/MMapDefines.h2
-rw-r--r--src/common/Collision/VMapDefinitions.h4
-rw-r--r--src/tools/vmap4_extractor/vmapexport.cpp1
-rw-r--r--src/tools/vmap4_extractor/wmo.cpp14
4 files changed, 13 insertions, 8 deletions
diff --git a/src/common/Collision/Maps/MMapDefines.h b/src/common/Collision/Maps/MMapDefines.h
index cf0b347610d..4f73094e907 100644
--- a/src/common/Collision/Maps/MMapDefines.h
+++ b/src/common/Collision/Maps/MMapDefines.h
@@ -22,7 +22,7 @@
#include "DetourNavMesh.h"
const uint32 MMAP_MAGIC = 0x4d4d4150; // 'MMAP'
-#define MMAP_VERSION 14
+#define MMAP_VERSION 15
struct MmapTileHeader
{
diff --git a/src/common/Collision/VMapDefinitions.h b/src/common/Collision/VMapDefinitions.h
index cb883c389c3..469b86408ae 100644
--- a/src/common/Collision/VMapDefinitions.h
+++ b/src/common/Collision/VMapDefinitions.h
@@ -24,8 +24,8 @@
namespace VMAP
{
- const char VMAP_MAGIC[] = "VMAP_4.A";
- const char RAW_VMAP_MAGIC[] = "VMAP04A"; // used in extracted vmap files with raw data
+ const char VMAP_MAGIC[] = "VMAP_4.B";
+ const char RAW_VMAP_MAGIC[] = "VMAP04B"; // used in extracted vmap files with raw data
const char GAMEOBJECT_MODELS[] = "GameObjectModels.dtree";
// defined in VMapManager2.cpp currently...
diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp
index 69abfffedcf..168f4181358 100644
--- a/src/tools/vmap4_extractor/vmapexport.cpp
+++ b/src/tools/vmap4_extractor/vmapexport.cpp
@@ -230,6 +230,7 @@ bool ExtractSingleWmo(std::string& fname)
fseek(output, 8, SEEK_SET); // store the correct no of vertices
fwrite(&Wmo_nVertices, sizeof(int), 1, output);
+ // store the correct no of groups
fwrite(&groupCount, sizeof(uint32), 1, output);
fclose(output);
diff --git a/src/tools/vmap4_extractor/wmo.cpp b/src/tools/vmap4_extractor/wmo.cpp
index bb2b485af6b..f744b4557f7 100644
--- a/src/tools/vmap4_extractor/wmo.cpp
+++ b/src/tools/vmap4_extractor/wmo.cpp
@@ -76,11 +76,6 @@ bool WMORoot::open()
f.read(&flags, 2);
f.read(&numLod, 2);
}
- else if (!strcmp(fourcc, "MOGN"))
- {
- GroupNames.resize(size);
- f.read(GroupNames.data(), size);
- }
else if (!strcmp(fourcc, "MODS"))
{
DoodadData.Sets.resize(size / sizeof(WMO::MODS));
@@ -130,6 +125,11 @@ bool WMORoot::open()
DoodadData.Spawns.resize(size / sizeof(WMO::MODD));
f.read(DoodadData.Spawns.data(), size);
}
+ else if (!strcmp(fourcc, "MOGN"))
+ {
+ GroupNames.resize(size);
+ f.read(GroupNames.data(), size);
+ }
else if (!strcmp(fourcc, "GFID"))
{
// full LOD reading code for reference
@@ -546,6 +546,10 @@ uint32 WMOGroup::GetLiquidTypeId(uint32 liquidTypeId)
bool WMOGroup::ShouldSkip(WMORoot const* root) const
{
+ // skip unreachable
+ if (mogpFlags & 0x80)
+ return true;
+
// skip antiportals
if (mogpFlags & 0x4000000)
return true;