mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 10:05:32 +01:00
Core/GameObject: Fix interaction distance with GameObjects in all corner cases by overriding Object:_IsWithinDist. Distance calculation to GO's need to take in account GameObjectDisplayInfoDBC entries, otherwise distance would not be calculated from the edges properly and ie. quest interaction with large gameobjects would fail.
This commit is contained in:
@@ -816,6 +816,13 @@ class GameObject : public WorldObject, public GridObject<GameObject>
|
||||
uint16 m_LootMode; // bitmask, default LOOT_MODE_DEFAULT, determines what loot will be lootable
|
||||
private:
|
||||
void SwitchDoorOrButton(bool activate, bool alternative = false);
|
||||
|
||||
//! Object distance/size - overridden from Object::_IsWithinDist. Needs to take in account proper GO size.
|
||||
bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool /*is3D*/) const
|
||||
{
|
||||
//! Following check does check 3d distance
|
||||
return IsInRange(obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ(), dist2compare);
|
||||
}
|
||||
GameObjectAI* m_AI;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -699,7 +699,7 @@ class WorldObject : public Object, public WorldLocation
|
||||
{ return IsInDist2d(x, y, dist + GetObjectSize()); }
|
||||
bool IsWithinDist2d(const Position *pos, float dist) const
|
||||
{ return IsInDist2d(pos, dist + GetObjectSize()); }
|
||||
bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D) const;
|
||||
virtual bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D) const;
|
||||
// use only if you will sure about placing both object at same map
|
||||
bool IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D = true) const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user