*Fix a crash.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-03-02 18:01:27 -06:00
parent cdd178b9c2
commit 3716a5292b
3 changed files with 6 additions and 2 deletions
+3 -2
View File
@@ -257,7 +257,7 @@ template<>
void Map::AddToGrid(Creature* obj, NGridType *grid, Cell const& cell) void Map::AddToGrid(Creature* obj, NGridType *grid, Cell const& cell)
{ {
// add to world object registry in grid // add to world object registry in grid
if(obj->isPet() || obj->HasSharedVision()) if(obj->isPet() || obj->IsTempWorldObject)
{ {
(*grid)(cell.CellX(), cell.CellY()).AddWorldObject<Creature>(obj, obj->GetGUID()); (*grid)(cell.CellX(), cell.CellY()).AddWorldObject<Creature>(obj, obj->GetGUID());
} }
@@ -309,7 +309,7 @@ template<>
void Map::RemoveFromGrid(Creature* obj, NGridType *grid, Cell const& cell) void Map::RemoveFromGrid(Creature* obj, NGridType *grid, Cell const& cell)
{ {
// remove from world object registry in grid // remove from world object registry in grid
if(obj->isPet() || obj->HasSharedVision()) if(obj->isPet() || obj->IsTempWorldObject)
{ {
(*grid)(cell.CellX(), cell.CellY()).RemoveWorldObject<Creature>(obj, obj->GetGUID()); (*grid)(cell.CellX(), cell.CellY()).RemoveWorldObject<Creature>(obj, obj->GetGUID());
} }
@@ -353,6 +353,7 @@ void Map::SwitchGridContainers(T* obj, bool on)
assert(false); assert(false);
} }
} }
obj->IsTempWorldObject = on;
} }
template void Map::SwitchGridContainers(Creature *, bool); template void Map::SwitchGridContainers(Creature *, bool);
+1
View File
@@ -1068,6 +1068,7 @@ WorldObject::WorldObject()
mSemaphoreTeleport = false; mSemaphoreTeleport = false;
m_isActive = false; m_isActive = false;
IsTempWorldObject = false;
} }
void WorldObject::SetWorldObject(bool on) void WorldObject::SetWorldObject(bool on)
+2
View File
@@ -490,6 +490,8 @@ class TRINITY_DLL_SPEC WorldObject : public Object
template<class NOTIFIER> void VisitNearbyObject(const float &radius, NOTIFIER &notifier) const { GetMap()->VisitAll(GetPositionX(), GetPositionY(), radius, notifier); } template<class NOTIFIER> void VisitNearbyObject(const float &radius, NOTIFIER &notifier) const { GetMap()->VisitAll(GetPositionX(), GetPositionY(), radius, notifier); }
template<class NOTIFIER> void VisitNearbyGridObject(const float &radius, NOTIFIER &notifier) const { GetMap()->VisitGrid(GetPositionX(), GetPositionY(), radius, notifier); } template<class NOTIFIER> void VisitNearbyGridObject(const float &radius, NOTIFIER &notifier) const { GetMap()->VisitGrid(GetPositionX(), GetPositionY(), radius, notifier); }
template<class NOTIFIER> void VisitNearbyWorldObject(const float &radius, NOTIFIER &notifier) const { GetMap()->VisitWorld(GetPositionX(), GetPositionY(), radius, notifier); } template<class NOTIFIER> void VisitNearbyWorldObject(const float &radius, NOTIFIER &notifier) const { GetMap()->VisitWorld(GetPositionX(), GetPositionY(), radius, notifier); }
bool IsTempWorldObject;
protected: protected:
explicit WorldObject(); explicit WorldObject();
std::string m_name; std::string m_name;