aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none.none>2011-10-13 13:26:27 -0400
committermegamage <none@none.none>2011-10-13 13:26:27 -0400
commit5912e2444de0b73b511ec073aa0cbd38b901295c (patch)
treebc2caaf28328ba90868fade847f5dc3359072f2d
parentdc2bdb8e13f5640840d5d87db7a83c16ee1ab79a (diff)
Some cleanup of CanSeeOrDetect code.
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp10
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.h4
-rwxr-xr-xsrc/server/game/Entities/GameObject/GameObject.cpp10
-rwxr-xr-xsrc/server/game/Entities/GameObject/GameObject.h2
-rwxr-xr-xsrc/server/game/Entities/Object/Object.cpp12
-rwxr-xr-xsrc/server/game/Entities/Object/Object.h6
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp10
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h2
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h7
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp2
10 files changed, 24 insertions, 41 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 3842cc1924e..89f52c066a9 100755
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -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 (Unit::IsInvisibleDueToDespawn())
+ return true;
if (isAlive() || m_corpseRemoveTime > time(NULL))
- return true;
+ return false;
- return false;
+ return true;
}
bool Creature::canSeeAlways(WorldObject const* obj) const
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index 1d25dd46992..a56b91da13a 100755
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -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
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 6e991bdc005..a0f35bf2ab4 100755
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -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()
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index 3402eaa64bc..459c526ee4d 100755
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -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
{
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 82c0eb3a169..47be25854ba 100755
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -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))
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index d27ea23ba7e..faee921a1bb 100755
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -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;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 01203dd1d54..a5adf1d9371 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -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
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 05ef060add9..0910e6ba36d 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -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;
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 7629050ea8a..41fe6337737 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -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);
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
index 4c74488b6a6..d8fddad41dc 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
@@ -270,7 +270,7 @@ class spell_garfrost_permafrost : public SpellScriptLoader
{
for (std::list<GameObject*>::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr)
{
- if ((*itr)->isVisibleForInState(target))
+ if (!(*itr)->IsInvisibleDueToDespawn())
{
if ((*itr)->IsInBetween(caster, target, 4.0f))
{