aboutsummaryrefslogtreecommitdiff
path: root/src/game/Map.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-02-26 16:29:55 -0600
committermegamage <none@none>2009-02-26 16:29:55 -0600
commitee6418d92a4cccbf63941016e7339ce557144287 (patch)
tree6e4cce4c8cfa8ae7c23506d313acd8703c786f3b /src/game/Map.cpp
parentc16848a23c25124e87034fd57ded304593fe67f5 (diff)
*Update active object code.
--HG-- branch : trunk
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r--src/game/Map.cpp32
1 files changed, 25 insertions, 7 deletions
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<DynamicObject>(obj, obj->GetGUID());
+ else
+ (*grid)(cell.CellX(), cell.CellY()).AddGridObject<DynamicObject>(obj, obj->GetGUID());
+}
+
template<class T>
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<DynamicObject>(obj, obj->GetGUID());
+ else
+ (*grid)(cell.CellX(), cell.CellY()).RemoveGridObject<DynamicObject>(obj, obj->GetGUID());
+}
+
template<class T>
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<T>(obj, obj->GetGUID())
+ || !grid.AddWorldObject<T>(obj, obj->GetGUID()))
{
- grid.RemoveGridObject<T>(obj, obj->GetGUID());
- grid.AddWorldObject<T>(obj, obj->GetGUID());
+ assert(false);
}
}
else
{
- assert(!grid.GetGridObject(obj->GetGUID(), obj));
+ if(!grid.RemoveWorldObject<T>(obj, obj->GetGUID())
+ || !grid.AddGridObject<T>(obj, obj->GetGUID()))
{
- grid.RemoveWorldObject<T>(obj, obj->GetGUID());
- grid.AddGridObject<T>(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)