From 4b19153a79f70f1c816d084dda8eca1f666ac5dd Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 26 Feb 2009 10:42:37 -0600 Subject: *Fix a crash caused by far sight spells. --HG-- branch : trunk --- src/framework/GameSystem/Grid.h | 14 +++++++------- src/game/Map.cpp | 3 +-- src/game/Object.cpp | 8 ++++---- 3 files changed, 12 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/framework/GameSystem/Grid.h b/src/framework/GameSystem/Grid.h index 24d7634154d..a617e61904b 100644 --- a/src/framework/GameSystem/Grid.h +++ b/src/framework/GameSystem/Grid.h @@ -105,7 +105,7 @@ class TRINITY_DLL_DECL Grid /** Returns the number of object within the grid. */ - unsigned int ActiveObjectsInGrid(void) const { return m_activeGridObjects.size()+i_objects.template Count(); } + unsigned int ActiveObjectsInGrid(void) const { return /*m_activeGridObjects.size()+*/i_objects.template Count(); } /** Accessors: Returns a specific type of object in the GRID_OBJECT_TYPES */ @@ -116,8 +116,8 @@ class TRINITY_DLL_DECL Grid */ template bool AddGridObject(SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) { - if(obj->isActiveObject()) - m_activeGridObjects.insert(obj); + //if(obj->isActiveObject()) + // m_activeGridObjects.insert(obj); return i_container.template insert(hdl, obj); } @@ -125,8 +125,8 @@ class TRINITY_DLL_DECL Grid */ template bool RemoveGridObject(SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) { - if(obj->isActiveObject()) - m_activeGridObjects.erase(obj); + //if(obj->isActiveObject()) + // m_activeGridObjects.erase(obj); return i_container.template remove(obj, hdl); } @@ -146,8 +146,8 @@ class TRINITY_DLL_DECL Grid TypeMapContainer i_container; TypeMapContainer i_objects; - typedef std::set ActiveGridObjects; - ActiveGridObjects m_activeGridObjects; + //typedef std::set ActiveGridObjects; + //ActiveGridObjects m_activeGridObjects; }; #endif diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 6934bcf3df1..2e81d651d8b 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -844,10 +844,9 @@ Map::Remove(T *obj, bool remove) NGridType *grid = getNGrid(cell.GridX(), cell.GridY()); assert( grid != NULL ); + obj->RemoveFromWorld(); if(obj->isActiveObject()) RemoveFromActive(obj); - - obj->RemoveFromWorld(); RemoveFromGrid(obj,grid,cell); UpdateObjectVisibility(obj,cell,p); diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 5551f844376..f35b392991e 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -1082,9 +1082,9 @@ void WorldObject::setActive( bool on ) { map = GetMap(); if(GetTypeId() == TYPEID_UNIT) - map->Remove((Creature*)this,false); + map->RemoveFromActive((Creature*)this); else if(GetTypeId() == TYPEID_DYNAMICOBJECT) - map->Remove((DynamicObject*)this,false); + map->RemoveFromActive((DynamicObject*)this); } m_isActive = on; @@ -1092,9 +1092,9 @@ void WorldObject::setActive( bool on ) if(world) { if(GetTypeId() == TYPEID_UNIT) - map->Add((Creature*)this); + map->AddToActive((Creature*)this); else if(GetTypeId() == TYPEID_DYNAMICOBJECT) - map->Add((DynamicObject*)this); + map->AddToActive((DynamicObject*)this); } } -- cgit v1.2.3