aboutsummaryrefslogtreecommitdiff
path: root/src/common/Collision/Management/VMapManager2.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-02-24 21:07:08 +0100
committerShauren <shauren.trinity@gmail.com>2018-03-25 19:28:36 +0300
commit4798d9ce7abd86be381af086763d8dbc9ed67ef3 (patch)
tree01ff6ae3c36ca7c443d8cdfd105825262e29e92a /src/common/Collision/Management/VMapManager2.h
parent91be2332e249147ce3169c46a7da77f0f8c2211d (diff)
Core/VMaps: Implement loading phased tiles
Closes #15163
Diffstat (limited to 'src/common/Collision/Management/VMapManager2.h')
-rw-r--r--src/common/Collision/Management/VMapManager2.h18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/common/Collision/Management/VMapManager2.h b/src/common/Collision/Management/VMapManager2.h
index ba48c8cae34..fb23f6e239f 100644
--- a/src/common/Collision/Management/VMapManager2.h
+++ b/src/common/Collision/Management/VMapManager2.h
@@ -81,13 +81,12 @@ namespace VMAP
// Tree to check collision
ModelFileMap iLoadedModelFiles;
InstanceTreeMap iInstanceMapTrees;
+ std::unordered_map<uint32, std::vector<uint32>> iChildMapData;
+ std::unordered_map<uint32, uint32> iParentMapData;
bool thread_safe_environment;
// Mutex for iLoadedModelFiles
std::mutex LoadedModelFilesLock;
- bool _loadMap(uint32 mapId, const std::string& basePath, uint32 tileX, uint32 tileY);
- /* void _unloadMap(uint32 pMapId, uint32 x, uint32 y); */
-
static uint32 GetLiquidFlagsDummy(uint32) { return 0; }
static bool IsVMAPDisabledForDummy(uint32 /*entry*/, uint8 /*flags*/) { return false; }
@@ -99,13 +98,18 @@ namespace VMAP
static std::string getMapFileName(unsigned int mapId);
VMapManager2();
- ~VMapManager2(void);
+ ~VMapManager2();
+
+ void InitializeThreadUnsafe(std::unordered_map<uint32, std::vector<uint32>> const& mapData);
- void InitializeThreadUnsafe(const std::vector<uint32>& mapIds);
int loadMap(const char* pBasePath, unsigned int mapId, int x, int y) override;
+ bool loadSingleMap(uint32 mapId, const std::string& basePath, uint32 tileX, uint32 tileY);
void unloadMap(unsigned int mapId, int x, int y) override;
+ void unloadSingleMap(uint32 mapId, int x, int y);
+
void unloadMap(unsigned int mapId) override;
+ void unloadSingleMap(uint32 mapId);
bool isInLineOfSight(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2) override ;
/**
@@ -119,6 +123,8 @@ namespace VMAP
bool getAreaInfo(unsigned int pMapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const override;
bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type) const override;
+ int32 GetDistanceToClosestPrimaryTile(uint32 mapId, int32 x, int32 y) const override;
+
WorldModel* acquireModelInstance(const std::string& basepath, const std::string& filename);
void releaseModelInstance(const std::string& filename);
@@ -131,6 +137,8 @@ namespace VMAP
void getInstanceMapTree(InstanceTreeMap &instanceMapTree);
+ int32 getParentMapId(uint32 mapId) const;
+
typedef uint32(*GetLiquidFlagsFn)(uint32 liquidType);
GetLiquidFlagsFn GetLiquidFlagsPtr;