diff options
author | megamage <none@none> | 2009-02-26 10:42:37 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-02-26 10:42:37 -0600 |
commit | 4b19153a79f70f1c816d084dda8eca1f666ac5dd (patch) | |
tree | ea8f1575d527c8e9104b19cd957f25fddbf9922b | |
parent | 1af157d0129add19d88e554188f58cc60653dc89 (diff) |
*Fix a crash caused by far sight spells.
--HG--
branch : trunk
-rw-r--r-- | src/framework/GameSystem/Grid.h | 14 | ||||
-rw-r--r-- | src/game/Map.cpp | 3 | ||||
-rw-r--r-- | src/game/Object.cpp | 8 |
3 files changed, 12 insertions, 13 deletions
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<ACTIVE_OBJECT>(); } + unsigned int ActiveObjectsInGrid(void) const { return /*m_activeGridObjects.size()+*/i_objects.template Count<ACTIVE_OBJECT>(); } /** Accessors: Returns a specific type of object in the GRID_OBJECT_TYPES */ @@ -116,8 +116,8 @@ class TRINITY_DLL_DECL Grid */ template<class SPECIFIC_OBJECT> 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<SPECIFIC_OBJECT>(hdl, obj); } @@ -125,8 +125,8 @@ class TRINITY_DLL_DECL Grid */ template<class SPECIFIC_OBJECT> 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<SPECIFIC_OBJECT>(obj, hdl); } @@ -146,8 +146,8 @@ class TRINITY_DLL_DECL Grid TypeMapContainer<GRID_OBJECT_TYPES> i_container; TypeMapContainer<WORLD_OBJECT_TYPES> i_objects; - typedef std::set<void*> ActiveGridObjects; - ActiveGridObjects m_activeGridObjects; + //typedef std::set<void*> 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); } } |