aboutsummaryrefslogtreecommitdiff
path: root/src/common/Collision/Management/VMapManager2.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-07 00:23:52 +0100
committerShauren <shauren.trinity@gmail.com>2024-03-07 00:23:52 +0100
commit45ee989c70682c001d4467d97bf1ecedcf7dbcc3 (patch)
treee36b3b8bf55bab550598ef87d3420aba0332793c /src/common/Collision/Management/VMapManager2.cpp
parent1f73cf9f19679f5b888f9df475b94c9405f2d746 (diff)
Core/vmaps: Removed vmap lookup functions duplicating functionality of each other
Diffstat (limited to 'src/common/Collision/Management/VMapManager2.cpp')
-rw-r--r--src/common/Collision/Management/VMapManager2.cpp76
1 files changed, 14 insertions, 62 deletions
diff --git a/src/common/Collision/Management/VMapManager2.cpp b/src/common/Collision/Management/VMapManager2.cpp
index 78d5be2b79c..3885d3f40df 100644
--- a/src/common/Collision/Management/VMapManager2.cpp
+++ b/src/common/Collision/Management/VMapManager2.cpp
@@ -238,63 +238,8 @@ namespace VMAP
return VMAP_INVALID_HEIGHT_VALUE;
}
- bool VMapManager2::getAreaInfo(uint32 mapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const
+ bool VMapManager2::getAreaAndLiquidData(unsigned int mapId, float x, float y, float z, Optional<uint8> reqLiquidType, AreaAndLiquidData& data) const
{
- if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG))
- {
- auto instanceTree = GetMapTree(mapId);
- if (instanceTree != iInstanceMapTrees.end())
- {
- Vector3 pos = convertPositionToInternalRep(x, y, z);
- bool result = instanceTree->second->getAreaInfo(pos, flags, adtId, rootId, groupId);
- // z is not touched by convertPositionToInternalRep(), so just copy
- z = pos.z;
- return result;
- }
- }
-
- return false;
- }
-
- bool VMapManager2::GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type, uint32& mogpFlags) const
- {
- if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS))
- {
- auto instanceTree = GetMapTree(mapId);
- if (instanceTree != iInstanceMapTrees.end())
- {
- LocationInfo info;
- Vector3 pos = convertPositionToInternalRep(x, y, z);
- if (instanceTree->second->GetLocationInfo(pos, info))
- {
- floor = info.ground_Z;
- ASSERT(floor < std::numeric_limits<float>::max());
- ASSERT(info.hitModel);
- type = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc
- mogpFlags = info.hitModel->GetMogpFlags();
- if (reqLiquidType && !(GetLiquidFlagsPtr(type) & reqLiquidType))
- return false;
- ASSERT(info.hitInstance);
- if (info.hitInstance->GetLiquidLevel(pos, info, level))
- return true;
- }
- }
- }
-
- return false;
- }
-
- void VMapManager2::getAreaAndLiquidData(unsigned int mapId, float x, float y, float z, uint8 reqLiquidType, AreaAndLiquidData& data) const
- {
- if (IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS))
- {
- data.floorZ = z;
- int32 adtId, rootId, groupId;
- uint32 flags;
- if (getAreaInfo(mapId, x, y, data.floorZ, flags, adtId, rootId, groupId))
- data.areaInfo.emplace(adtId, rootId, groupId, flags);
- return;
- }
InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId);
if (instanceTree != iInstanceMapTrees.end())
{
@@ -303,16 +248,23 @@ namespace VMAP
if (instanceTree->second->GetLocationInfo(pos, info))
{
data.floorZ = info.ground_Z;
- uint32 liquidType = info.hitModel->GetLiquidType();
- float liquidLevel;
- if (!reqLiquidType || (GetLiquidFlagsPtr(liquidType) & reqLiquidType))
- if (info.hitInstance->GetLiquidLevel(pos, info, liquidLevel))
- data.liquidInfo.emplace(liquidType, liquidLevel);
+ if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS))
+ {
+ uint32 liquidType = info.hitModel->GetLiquidType(); // entry from LiquidType.dbc
+ float liquidLevel;
+ if (!reqLiquidType || (GetLiquidFlagsPtr(liquidType) & *reqLiquidType))
+ if (info.hitInstance->GetLiquidLevel(pos, info, liquidLevel))
+ data.liquidInfo.emplace(liquidType, liquidLevel);
+ }
if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG))
- data.areaInfo.emplace(info.hitInstance->adtId, info.rootId, info.hitModel->GetWmoID(), info.hitModel->GetMogpFlags());
+ data.areaInfo.emplace(info.hitModel->GetWmoID(), info.hitInstance->adtId, info.rootId, info.hitModel->GetMogpFlags(), info.hitInstance->ID);
+
+ return true;
}
}
+
+ return false;
}
WorldModel* VMapManager2::acquireModelInstance(std::string const& basepath, std::string const& filename)