From ee6418d92a4cccbf63941016e7339ce557144287 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 26 Feb 2009 16:29:55 -0600 Subject: *Update active object code. --HG-- branch : trunk --- src/game/Map.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/game/Map.cpp') diff --git a/src/game/Map.cpp b/src/game/Map.cpp index d40c341fd47..6bbefa8b0a0 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -269,6 +269,15 @@ void Map::AddToGrid(Creature* obj, NGridType *grid, Cell const& cell) obj->SetCurrentCell(cell); } +template<> +void Map::AddToGrid(DynamicObject* obj, NGridType *grid, Cell const& cell) +{ + if(obj->isActiveObject()) // only farsight + (*grid)(cell.CellX(), cell.CellY()).AddWorldObject(obj, obj->GetGUID()); + else + (*grid)(cell.CellX(), cell.CellY()).AddGridObject(obj, obj->GetGUID()); +} + template void Map::RemoveFromGrid(T* obj, NGridType *grid, Cell const& cell) { @@ -311,6 +320,15 @@ void Map::RemoveFromGrid(Creature* obj, NGridType *grid, Cell const& cell) } } +template<> +void Map::RemoveFromGrid(DynamicObject* obj, NGridType *grid, Cell const& cell) +{ + if(obj->isActiveObject()) // only farsight + (*grid)(cell.CellX(), cell.CellY()).RemoveWorldObject(obj, obj->GetGUID()); + else + (*grid)(cell.CellX(), cell.CellY()).RemoveGridObject(obj, obj->GetGUID()); +} + template void Map::SwitchGridContainers(T* obj, bool apply) { @@ -321,18 +339,18 @@ void Map::SwitchGridContainers(T* obj, bool apply) if(apply) { - assert(!grid.GetWorldObject(obj->GetGUID(), obj)); + if(!grid.RemoveGridObject(obj, obj->GetGUID()) + || !grid.AddWorldObject(obj, obj->GetGUID())) { - grid.RemoveGridObject(obj, obj->GetGUID()); - grid.AddWorldObject(obj, obj->GetGUID()); + assert(false); } } else { - assert(!grid.GetGridObject(obj->GetGUID(), obj)); + if(!grid.RemoveWorldObject(obj, obj->GetGUID()) + || !grid.AddGridObject(obj, obj->GetGUID())) { - grid.RemoveWorldObject(obj, obj->GetGUID()); - grid.AddGridObject(obj, obj->GetGUID()); + assert(false); } } } @@ -428,7 +446,7 @@ void Map::LoadGrid(float x, float y) { CellPair pair = Trinity::ComputeCellPair(x, y); Cell cell(pair); - EnsureGridLoaded(cell, NULL); + EnsureGridLoaded(cell); } bool Map::Add(Player *player) -- cgit v1.2.3