Some cleanup of CanSeeOrDetect code.

This commit is contained in:
megamage
2011-10-13 13:26:27 -04:00
parent dc2bdb8e13
commit 5912e2444d
10 changed files with 25 additions and 42 deletions
@@ -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
+2 -2
View File
@@ -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
{
+2 -10
View File
@@ -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))
+2 -4
View File
@@ -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;
+5 -5
View File
@@ -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
+1 -1
View File
@@ -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;
-7
View File
@@ -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);