Some cleanup of CanSeeOrDetect code.
This commit is contained in:
@@ -1383,15 +1383,15 @@ void Creature::DeleteFromDB()
|
||||
WorldDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
bool Creature::isVisibleForInState(WorldObject const* seer) const
|
||||
bool Creature::IsInvisibleDueToDespawn() const
|
||||
{
|
||||
if (!Unit::isVisibleForInState(seer))
|
||||
return false;
|
||||
|
||||
if (isAlive() || m_corpseRemoveTime > time(NULL))
|
||||
if (Unit::IsInvisibleDueToDespawn())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
if (isAlive() || m_corpseRemoveTime > time(NULL))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Creature::canSeeAlways(WorldObject const* obj) const
|
||||
|
||||
@@ -419,7 +419,7 @@ class MapCreature
|
||||
friend class Map; //map for moving creatures
|
||||
friend class ObjectGridLoader; //grid loader for loading creatures
|
||||
|
||||
public:
|
||||
protected:
|
||||
MapCreature() : _moveState(CREATURE_CELL_MOVE_NONE) {}
|
||||
|
||||
private:
|
||||
@@ -752,7 +752,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapCreature
|
||||
uint16 m_LootMode; // bitmask, default LOOT_MODE_DEFAULT, determines what loot will be lootable
|
||||
uint32 guid_transport;
|
||||
|
||||
bool isVisibleForInState(WorldObject const* seer) const;
|
||||
bool IsInvisibleDueToDespawn() const;
|
||||
bool canSeeAlways(WorldObject const* obj) const;
|
||||
private:
|
||||
//WaypointMovementGenerator vars
|
||||
|
||||
@@ -854,16 +854,16 @@ bool GameObject::isAlwaysVisibleFor(WorldObject const* seer) const
|
||||
return false;
|
||||
}
|
||||
|
||||
bool GameObject::isVisibleForInState(WorldObject const* seer) const
|
||||
bool GameObject::IsInvisibleDueToDespawn() const
|
||||
{
|
||||
if (!WorldObject::isVisibleForInState(seer))
|
||||
return false;
|
||||
if (WorldObject::IsInvisibleDueToDespawn())
|
||||
return true;
|
||||
|
||||
// Despawned
|
||||
if (!isSpawned())
|
||||
return false;
|
||||
return true;
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void GameObject::Respawn()
|
||||
|
||||
@@ -753,7 +753,7 @@ class GameObject : public WorldObject, public GridObject<GameObject>
|
||||
void TriggeringLinkedGameObject(uint32 trapEntry, Unit* target);
|
||||
|
||||
bool isAlwaysVisibleFor(WorldObject const* seer) const;
|
||||
bool isVisibleForInState(WorldObject const* seer) const;
|
||||
bool IsInvisibleDueToDespawn() const;
|
||||
|
||||
uint8 getLevelForTarget(WorldObject const* target) const
|
||||
{
|
||||
|
||||
@@ -1587,14 +1587,6 @@ bool Position::IsPositionValid() const
|
||||
return Trinity::IsValidMapCoord(m_positionX, m_positionY, m_positionZ, m_orientation);
|
||||
}
|
||||
|
||||
bool WorldObject::isValid() const
|
||||
{
|
||||
if (!IsInWorld())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
float WorldObject::GetGridActivationRange() const
|
||||
{
|
||||
if (ToPlayer())
|
||||
@@ -1638,7 +1630,7 @@ bool WorldObject::canSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo
|
||||
if (this == obj)
|
||||
return true;
|
||||
|
||||
if (!obj->isValid())
|
||||
if (obj->IsNeverVisible())
|
||||
return false;
|
||||
|
||||
if (GetMap() != obj->GetMap())
|
||||
@@ -1704,7 +1696,7 @@ bool WorldObject::canSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!obj->isVisibleForInState(this))
|
||||
if (obj->IsInvisibleDueToDespawn())
|
||||
return false;
|
||||
|
||||
if (!canDetect(obj, ignoreStealth))
|
||||
|
||||
@@ -730,14 +730,12 @@ class WorldObject : public Object, public WorldLocation
|
||||
virtual void SaveRespawnTime() {}
|
||||
void AddObjectToRemoveList();
|
||||
|
||||
virtual bool isValid() const;
|
||||
|
||||
virtual bool IsNeverVisible() const { return !IsInWorld(); }
|
||||
virtual bool isAlwaysVisibleFor(WorldObject const* /*seer*/) const { return false; }
|
||||
virtual bool IsInvisibleDueToDespawn() const { return false; }
|
||||
virtual bool canSeeAlways(WorldObject const* /*obj*/) const { return false; }
|
||||
bool canDetect(WorldObject const* obj, bool ignoreStealth) const;
|
||||
|
||||
virtual bool isVisibleForInState(WorldObject const* /*seer*/) const { return true; }
|
||||
|
||||
bool canDetectInvisibilityOf(WorldObject const* obj) const;
|
||||
bool canDetectStealthOf(WorldObject const* obj) const;
|
||||
|
||||
|
||||
@@ -21077,15 +21077,15 @@ WorldLocation Player::GetStartPosition() const
|
||||
return WorldLocation(mapId, info->positionX, info->positionY, info->positionZ, 0);
|
||||
}
|
||||
|
||||
bool Player::isValid() const
|
||||
bool Player::IsNeverVisible() const
|
||||
{
|
||||
if (!Unit::isValid())
|
||||
return false;
|
||||
if (Unit::IsNeverVisible())
|
||||
return true;
|
||||
|
||||
if (GetSession()->PlayerLogout() || GetSession()->PlayerLoading())
|
||||
return false;
|
||||
return true;
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Player::canSeeAlways(WorldObject const* obj) const
|
||||
|
||||
@@ -2326,7 +2326,7 @@ class Player : public Unit, public GridObject<Player>
|
||||
|
||||
bool HaveAtClient(WorldObject const* u) const { return u == this || m_clientGUIDs.find(u->GetGUID()) != m_clientGUIDs.end(); }
|
||||
|
||||
bool isValid() const;
|
||||
bool IsNeverVisible() const;
|
||||
|
||||
bool IsVisibleGloballyFor(Player* pl) const;
|
||||
|
||||
|
||||
@@ -1946,9 +1946,6 @@ class Unit : public WorldObject
|
||||
void SetVisible(bool x);
|
||||
|
||||
// common function for visibility checks for player/creatures with detection code
|
||||
|
||||
bool isValid() const { return WorldObject::isValid(); }
|
||||
|
||||
void SetPhaseMask(uint32 newPhaseMask, bool update);// overwrite WorldObject::SetPhaseMask
|
||||
void UpdateObjectVisibility(bool forced = true);
|
||||
|
||||
@@ -2287,10 +2284,6 @@ class Unit : public WorldObject
|
||||
uint32 m_unitTypeMask;
|
||||
|
||||
bool isAlwaysVisibleFor(WorldObject const* seer) const;
|
||||
bool canSeeAlways(WorldObject const* obj) const { return WorldObject::canSeeAlways(obj); }
|
||||
|
||||
bool isVisibleForInState(WorldObject const* seer) const { return WorldObject::isVisibleForInState(seer); };
|
||||
|
||||
bool isAlwaysDetectableFor(WorldObject const* seer) const;
|
||||
private:
|
||||
bool IsTriggeredAtSpellProcEvent(Unit* pVictim, Aura* aura, SpellInfo const* procSpell, uint32 procFlag, uint32 procExtra, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const* & spellProcEvent);
|
||||
|
||||
Reference in New Issue
Block a user