aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/Map.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-02-26 17:40:40 +0100
committerfunjoker <funjoker109@gmail.com>2021-08-08 21:21:34 +0200
commite47e95b6dc89a7332ae4d5d833639e4f30f3d8c5 (patch)
tree5417d251846fe8052c584ba27b5498669d143f62 /src/server/game/Maps/Map.cpp
parent74cdf260e1e37d54ac1ce2045f05a2e50f7eceaa (diff)
Core/VMap: Add outdoor state to Map::GetFullTerrainStatusForPosition. Add WorldObject::IsOutdoors, basic member access.
Ref #21479. (cherry picked from commit e79c595b695ea5f35b8324efbb7741ccb102bce9)
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r--src/server/game/Maps/Map.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 8c1d6aae417..1d946f278b9 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -2549,10 +2549,8 @@ float Map::GetMinHeight(PhaseShift const& phaseShift, float x, float y)
return -500.0f;
}
-inline bool IsOutdoorWMO(uint32 mogpFlags, int32 /*adtId*/, int32 /*rootId*/, int32 /*groupId*/, WMOAreaTableEntry const* wmoEntry, AreaTableEntry const* atEntry)
+inline bool IsOutdoorWMO(uint32 mogpFlags, WMOAreaTableEntry const* wmoEntry, AreaTableEntry const* atEntry)
{
- bool outdoor = true;
-
if (wmoEntry && atEntry)
{
if (atEntry->Flags[0] & AREA_FLAG_OUTSIDE)
@@ -2561,16 +2559,14 @@ inline bool IsOutdoorWMO(uint32 mogpFlags, int32 /*adtId*/, int32 /*rootId*/, in
return false;
}
- outdoor = (mogpFlags & 0x8) != 0;
-
if (wmoEntry)
{
if (wmoEntry->Flags & 4)
return true;
if (wmoEntry->Flags & 2)
- outdoor = false;
+ return false;
}
- return outdoor;
+ return (mogpFlags & 0x8);
}
bool Map::IsOutdoors(PhaseShift const& phaseShift, float x, float y, float z)
@@ -2583,13 +2579,13 @@ bool Map::IsOutdoors(PhaseShift const& phaseShift, float x, float y, float z)
return true;
AreaTableEntry const* atEntry = nullptr;
- WMOAreaTableEntry const* wmoEntry= sDB2Manager.GetWMOAreaTable(rootId, adtId, groupId);
+ WMOAreaTableEntry const* wmoEntry = sDB2Manager.GetWMOAreaTable(rootId, adtId, groupId);
if (wmoEntry)
{
TC_LOG_DEBUG("maps", "Got WMOAreaTableEntry! flag %u, areaid %u", wmoEntry->Flags, wmoEntry->AreaTableID);
atEntry = sAreaTableStore.LookupEntry(wmoEntry->AreaTableID);
}
- return IsOutdoorWMO(mogpFlags, adtId, rootId, groupId, wmoEntry, atEntry);
+ return IsOutdoorWMO(mogpFlags, wmoEntry, atEntry);
}
bool Map::GetAreaInfo(PhaseShift const& phaseShift, float x, float y, float z, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId)
@@ -2672,7 +2668,7 @@ uint32 Map::GetAreaId(PhaseShift const& phaseShift, float x, float y, float z, b
if (isOutdoors)
{
if (haveAreaInfo)
- *isOutdoors = IsOutdoorWMO(mogpFlags, adtId, rootId, groupId, wmoEntry, atEntry);
+ *isOutdoors = IsOutdoorWMO(mogpFlags, wmoEntry, atEntry);
else
*isOutdoors = true;
}
@@ -2807,18 +2803,19 @@ void Map::GetFullTerrainStatusForPosition(PhaseShift const& phaseShift, float x,
// area lookup
AreaTableEntry const* areaEntry = nullptr;
+ WMOAreaTableEntry const* wmoEntry = nullptr;
if (vmapData.areaInfo && (z <= mapHeight || mapHeight <= vmapData.floorZ))
- if (WMOAreaTableEntry const* wmoEntry = sDB2Manager.GetWMOAreaTable(vmapData.areaInfo->rootId, vmapData.areaInfo->adtId, vmapData.areaInfo->groupId))
+ if ((wmoEntry = sDB2Manager.GetWMOAreaTable(vmapData.areaInfo->rootId, vmapData.areaInfo->adtId, vmapData.areaInfo->groupId)))
areaEntry = sAreaTableStore.LookupEntry(wmoEntry->AreaTableID);
if (areaEntry)
{
- data.floorZ = vmapData.floorZ;
data.areaId = areaEntry->ID;
+ data.floorZ = vmapData.floorZ;
+ data.outdoors = IsOutdoorWMO(vmapData.areaInfo->mogpFlags, wmoEntry, areaEntry);
}
else
{
- data.floorZ = mapHeight;
if (gmap)
data.areaId = gmap->getArea(x, y);
else
@@ -2829,6 +2826,9 @@ void Map::GetFullTerrainStatusForPosition(PhaseShift const& phaseShift, float x,
if (data.areaId)
areaEntry = sAreaTableStore.LookupEntry(data.areaId);
+
+ data.floorZ = mapHeight;
+ data.outdoors = true; // @todo default true taken from old GetAreaId check, maybe review
}
// liquid processing