Core/Visibility: Send object destroy packets to dead players. Fixes persistent visuals of no longer existing entities while dead.
Closes #2458
This commit is contained in:
@@ -2724,7 +2724,7 @@ void WorldObject::DestroyForNearbyPlayers()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
std::list<Player*> targets;
|
std::list<Player*> targets;
|
||||||
Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange());
|
Trinity::AnyPlayerInObjectRangeCheck check(this, GetVisibilityRange(), false);
|
||||||
Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, targets, check);
|
Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(this, targets, check);
|
||||||
VisitNearbyWorldObject(GetVisibilityRange(), searcher);
|
VisitNearbyWorldObject(GetVisibilityRange(), searcher);
|
||||||
for (std::list<Player*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter)
|
for (std::list<Player*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter)
|
||||||
|
|||||||
@@ -1145,18 +1145,23 @@ namespace Trinity
|
|||||||
|
|
||||||
class AnyPlayerInObjectRangeCheck
|
class AnyPlayerInObjectRangeCheck
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AnyPlayerInObjectRangeCheck(WorldObject const* obj, float range) : i_obj(obj), i_range(range) {}
|
AnyPlayerInObjectRangeCheck(WorldObject const* obj, float range, bool reqAlive = true) : _obj(obj), _range(range), _reqAlive(reqAlive) {}
|
||||||
bool operator()(Player* u)
|
bool operator()(Player* u)
|
||||||
{
|
{
|
||||||
if (u->isAlive() && i_obj->IsWithinDistInMap(u, i_range))
|
if (_reqAlive && !u->isAlive())
|
||||||
return true;
|
return false;
|
||||||
|
|
||||||
return false;
|
if (!_obj->IsWithinDistInMap(u, _range))
|
||||||
}
|
return false;
|
||||||
private:
|
|
||||||
WorldObject const* i_obj;
|
return true;
|
||||||
float i_range;
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
WorldObject const* _obj;
|
||||||
|
float _range;
|
||||||
|
bool _reqAlive;
|
||||||
};
|
};
|
||||||
|
|
||||||
class NearestPlayerInObjectRangeCheck
|
class NearestPlayerInObjectRangeCheck
|
||||||
|
|||||||
Reference in New Issue
Block a user