aboutsummaryrefslogtreecommitdiff
path: root/src/common/Collision/Maps
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/Collision/Maps')
-rw-r--r--src/common/Collision/Maps/MapDefines.h23
-rw-r--r--src/common/Collision/Maps/MapTree.cpp32
-rw-r--r--src/common/Collision/Maps/MapTree.h1
3 files changed, 13 insertions, 43 deletions
diff --git a/src/common/Collision/Maps/MapDefines.h b/src/common/Collision/Maps/MapDefines.h
index 0aa187617df..468d9cee9a6 100644
--- a/src/common/Collision/Maps/MapDefines.h
+++ b/src/common/Collision/Maps/MapDefines.h
@@ -142,23 +142,26 @@ struct LiquidData
float depth_level;
};
-struct PositionFullTerrainStatus
+struct WmoLocation
{
- struct AreaInfo
- {
- AreaInfo(int32 _adtId, int32 _rootId, int32 _groupId, uint32 _flags) : adtId(_adtId), rootId(_rootId), groupId(_groupId), mogpFlags(_flags) { }
- int32 const adtId;
- int32 const rootId;
- int32 const groupId;
- uint32 const mogpFlags;
- };
+ WmoLocation() = default;
+ WmoLocation(int32 groupId, int32 nameSetId, int32 rootId, uint32 uniqueId)
+ : GroupId(groupId), NameSetId(nameSetId), RootId(rootId), UniqueId(uniqueId) { }
+
+ int32 GroupId = 0;
+ int32 NameSetId = 0;
+ int32 RootId = 0;
+ uint32 UniqueId = 0;
+};
+struct PositionFullTerrainStatus
+{
PositionFullTerrainStatus() : areaId(0), floorZ(0.0f), outdoors(true), liquidStatus(LIQUID_MAP_NO_WATER) { }
uint32 areaId;
float floorZ;
bool outdoors;
ZLiquidStatus liquidStatus;
- Optional<AreaInfo> areaInfo;
+ Optional<WmoLocation> wmoLocation;
Optional<LiquidData> liquidInfo;
};
diff --git a/src/common/Collision/Maps/MapTree.cpp b/src/common/Collision/Maps/MapTree.cpp
index 88eb9d2c6df..61eb7e3fab0 100644
--- a/src/common/Collision/Maps/MapTree.cpp
+++ b/src/common/Collision/Maps/MapTree.cpp
@@ -50,22 +50,6 @@ namespace VMAP
ModelIgnoreFlags flags;
};
- class AreaInfoCallback
- {
- public:
- AreaInfoCallback(ModelInstance* val) : prims(val) { }
- void operator()(Vector3 const& point, uint32 entry)
- {
-#ifdef VMAP_DEBUG
- TC_LOG_DEBUG("maps", "AreaInfoCallback: trying to intersect '{}'", prims[entry].name);
-#endif
- prims[entry].intersectPoint(point, aInfo);
- }
-
- ModelInstance* prims;
- AreaInfo aInfo;
- };
-
class LocationInfoCallback
{
public:
@@ -96,22 +80,6 @@ namespace VMAP
return tilefilename.str();
}
- bool StaticMapTree::getAreaInfo(Vector3& pos, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const
- {
- AreaInfoCallback intersectionCallBack(iTreeValues);
- iTree.intersectPoint(pos, intersectionCallBack);
- if (intersectionCallBack.aInfo.result)
- {
- flags = intersectionCallBack.aInfo.flags;
- adtId = intersectionCallBack.aInfo.adtId;
- rootId = intersectionCallBack.aInfo.rootId;
- groupId = intersectionCallBack.aInfo.groupId;
- pos.z = intersectionCallBack.aInfo.ground_Z;
- return true;
- }
- return false;
- }
-
bool StaticMapTree::GetLocationInfo(Vector3 const& pos, LocationInfo& info) const
{
LocationInfoCallback intersectionCallBack(iTreeValues, info);
diff --git a/src/common/Collision/Maps/MapTree.h b/src/common/Collision/Maps/MapTree.h
index c111cbc4422..4a5e60d6fe2 100644
--- a/src/common/Collision/Maps/MapTree.h
+++ b/src/common/Collision/Maps/MapTree.h
@@ -88,7 +88,6 @@ namespace VMAP
bool isInLineOfSight(const G3D::Vector3& pos1, const G3D::Vector3& pos2, ModelIgnoreFlags ignoreFlags) const;
bool getObjectHitPos(const G3D::Vector3& pos1, const G3D::Vector3& pos2, G3D::Vector3& pResultHitPos, float pModifyDist) const;
float getHeight(const G3D::Vector3& pPos, float maxSearchDist) const;
- bool getAreaInfo(G3D::Vector3 &pos, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const;
bool GetLocationInfo(const G3D::Vector3 &pos, LocationInfo &info) const;
LoadResult InitMap(std::string const& fname);