diff options
author | killerwife <killerwife@gmail.com> | 2021-04-24 14:58:16 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-01-04 20:44:25 +0100 |
commit | dbb7f65723fd4c46ae7f12801fa12ca2196fcb03 (patch) | |
tree | 4d5c38d937e44a2adc5a74d9008747e162ce9749 /src | |
parent | 2467f799bb85c30daae0df83810336486f9ed1a5 (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)
Diffstat (limited to 'src')
-rw-r--r-- | src/common/Collision/Maps/MMapDefines.h | 2 | ||||
-rw-r--r-- | src/common/Collision/VMapDefinitions.h | 4 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/vmapexport.cpp | 1 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/wmo.cpp | 14 |
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; |