From 8d1bb258fc4a777b2bd145efd9cadb22d4ec84a2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 7 Apr 2018 21:56:19 +0200 Subject: Tools: * mapextractor - fixed compressing liquid data * vmapextractor - fixed extracting liquids inside WMOs * vmapextractor - implemented new WMO flags * vmapextractor - store model type for gameobject models * mmap_generator - fixed processing liquids broken in e5d23103f37c40d2e946fa0e2db66d2f527ad9af (cherry picked from commit 2c64bb97e6fddcbd15ef39fde3d0828bbf600ec6) --- src/tools/map_extractor/System.cpp | 41 ++++++++++++++++++++++---------------- src/tools/map_extractor/adt.h | 8 ++++++++ 2 files changed, 32 insertions(+), 17 deletions(-) (limited to 'src/tools/map_extractor') diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp index e3ec5741b8d..eccefe624c7 100644 --- a/src/tools/map_extractor/System.cpp +++ b/src/tools/map_extractor/System.cpp @@ -261,7 +261,7 @@ void ReadLiquidTypeTableDBC() // Map file format data static char const* MAP_MAGIC = "MAPS"; -static char const* MAP_VERSION_MAGIC = "v1.8"; +static char const* MAP_VERSION_MAGIC = "v1.9"; static char const* MAP_AREA_MAGIC = "AREA"; static char const* MAP_HEIGHT_MAGIC = "MHGT"; static char const* MAP_LIQUID_MAGIC = "MLIQ"; @@ -310,8 +310,6 @@ struct map_heightHeader #define MAP_LIQUID_TYPE_SLIME 0x08 #define MAP_LIQUID_TYPE_DARK_WATER 0x10 -#define MAP_LIQUID_TYPE_WMO_WATER 0x20 - #define MAP_LIQUID_NO_TYPE 0x0001 #define MAP_LIQUID_NO_HEIGHT 0x0002 @@ -319,7 +317,8 @@ struct map_heightHeader struct map_liquidHeader { uint32 fourcc; - uint16 flags; + uint8 flags; + uint8 liquidFlags; uint16 liquidType; uint8 offsetX; uint8 offsetY; @@ -351,6 +350,7 @@ uint16 liquid_entry[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]; uint8 liquid_flags[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]; bool liquid_show[ADT_GRID_SIZE][ADT_GRID_SIZE]; float liquid_height[ADT_GRID_SIZE+1][ADT_GRID_SIZE+1]; +uint16 holes[ADT_CELLS_PER_GRID][ADT_CELLS_PER_GRID]; int16 flight_box_max[3][3]; int16 flight_box_min[3][3]; @@ -373,6 +373,8 @@ bool ConvertADT(std::string const& inputPath, std::string const& outputPath, int memset(liquid_flags, 0, sizeof(liquid_flags)); memset(liquid_entry, 0, sizeof(liquid_entry)); + memset(holes, 0, sizeof(holes)); + // Prepare map header map_fileheader map; map.mapMagic = *reinterpret_cast(MAP_MAGIC); @@ -730,13 +732,14 @@ bool ConvertADT(std::string const& inputPath, std::string const& outputPath, int //============================================ // Pack liquid data //============================================ - uint8 type = liquid_flags[0][0]; + uint16 firstLiquidType = liquid_entry[0][0]; + uint8 firstLiquidFlag = liquid_flags[0][0]; bool fullType = false; for (int y=0;yLiquidVertexFormat == LiquidVertexFormatType::Depth) + return 2; + + return h->LiquidType; + } + float GetLiquidHeight(adt_liquid_instance const* h, int32 pos) const { if (!h->OffsetVertexData) -- cgit v1.2.3