diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/framework/GameSystem/Grid.h | 26 | ||||
| -rw-r--r-- | src/framework/GameSystem/NGrid.h | 26 | ||||
| -rw-r--r-- | src/framework/GameSystem/TypeContainer.h | 13 | ||||
| -rw-r--r-- | src/framework/GameSystem/TypeContainerFunctions.h | 83 | ||||
| -rw-r--r-- | src/game/GridNotifiers.h | 27 | ||||
| -rw-r--r-- | src/game/Map.cpp | 20 | ||||
| -rw-r--r-- | src/game/ObjectAccessor.cpp | 4 |
7 files changed, 44 insertions, 155 deletions
diff --git a/src/framework/GameSystem/Grid.h b/src/framework/GameSystem/Grid.h index b52ca9f878d..a928bbba9a6 100644 --- a/src/framework/GameSystem/Grid.h +++ b/src/framework/GameSystem/Grid.h @@ -60,25 +60,20 @@ class TRINITY_DLL_DECL Grid /** an object of interested enters the grid */ - template<class SPECIFIC_OBJECT> void AddWorldObject(SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_OBJECT> void AddWorldObject(SPECIFIC_OBJECT *obj) { - if(!i_objects.template insert<SPECIFIC_OBJECT>(hdl, obj)) + if(!i_objects.template insert<SPECIFIC_OBJECT>(obj)) assert(false); } /** an object of interested exits the grid */ - template<class SPECIFIC_OBJECT> void RemoveWorldObject(SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_OBJECT> void RemoveWorldObject(SPECIFIC_OBJECT *obj) { - if(!i_objects.template remove<SPECIFIC_OBJECT>(obj, hdl)) + if(!i_objects.template remove<SPECIFIC_OBJECT>(obj)) assert(false); } - /** Accessors: Returns a specific type of object in the WORDL_OBJECT_TYPES - */ - template<class SPECIFIC_OBJECT> const SPECIFIC_OBJECT* GetWorldObject(OBJECT_HANDLE hdl, SPECIFIC_OBJECT* fake) const { return i_objects.template find<SPECIFIC_OBJECT>(hdl); } - template<class SPECIFIC_OBJECT> SPECIFIC_OBJECT* GetWorldObject(OBJECT_HANDLE hdl, SPECIFIC_OBJECT *fake) { return i_objects.template find<SPECIFIC_OBJECT>(hdl, fake); } - /** Refreshes/update the grid. This required for remote grids. */ void RefreshGrid(void) { /* TBI */} @@ -109,24 +104,19 @@ class TRINITY_DLL_DECL Grid */ 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 - */ - template<class SPECIFIC_OBJECT> const SPECIFIC_OBJECT* GetGridObject(OBJECT_HANDLE hdl, SPECIFIC_OBJECT *fake) const { return i_container.template find<SPECIFIC_OBJECT>(hdl, fake); } - template<class SPECIFIC_OBJECT> SPECIFIC_OBJECT* GetGridObject(OBJECT_HANDLE hdl, SPECIFIC_OBJECT *fake) { return i_container.template find<SPECIFIC_OBJECT>(hdl, fake); } - /** Inserts a container type object into the grid. */ - template<class SPECIFIC_OBJECT> void AddGridObject(SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_OBJECT> void AddGridObject(SPECIFIC_OBJECT *obj) { - if(!i_container.template insert<SPECIFIC_OBJECT>(hdl, obj)) + if(!i_container.template insert<SPECIFIC_OBJECT>(obj)) assert(false); } /** Removes a containter type object from the grid */ - template<class SPECIFIC_OBJECT> void RemoveGridObject(SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_OBJECT> void RemoveGridObject(SPECIFIC_OBJECT *obj) { - if(!i_container.template remove<SPECIFIC_OBJECT>(obj, hdl)) + if(!i_container.template remove<SPECIFIC_OBJECT>(obj)) assert(false); } diff --git a/src/framework/GameSystem/NGrid.h b/src/framework/GameSystem/NGrid.h index 7f7c6f1a9fb..6cbe7d6a84c 100644 --- a/src/framework/GameSystem/NGrid.h +++ b/src/framework/GameSystem/NGrid.h @@ -119,14 +119,14 @@ class TRINITY_DLL_DECL NGrid void ResetTimeTracker(time_t interval) { i_GridInfo.ResetTimeTracker(interval); } void UpdateTimeTracker(time_t diff) { i_GridInfo.UpdateTimeTracker(diff); } - template<class SPECIFIC_OBJECT> void AddWorldObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_OBJECT> void AddWorldObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj) { - getGridType(x, y).AddWorldObject(obj, hdl); + getGridType(x, y).AddWorldObject(obj); } - template<class SPECIFIC_OBJECT> void RemoveWorldObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_OBJECT> void RemoveWorldObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj) { - getGridType(x, y).RemoveWorldObject(obj, hdl); + getGridType(x, y).RemoveWorldObject(obj); } template<class T, class TT> void Visit(TypeContainerVisitor<T, TypeMapContainer<TT> > &visitor) @@ -150,24 +150,14 @@ class TRINITY_DLL_DECL NGrid return count; } - template<class SPECIFIC_OBJECT> const SPECIFIC_OBJECT* GetGridObject(const uint32 x, const uint32 y, OBJECT_HANDLE hdl) const + template<class SPECIFIC_OBJECT> bool AddGridObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj) { - return getGridType(x, y).template GetGridObject<SPECIFIC_OBJECT>(hdl); + return getGridType(x, y).AddGridObject(obj); } - template<class SPECIFIC_OBJECT> SPECIFIC_OBJECT* GetGridObject(const uint32 x, const uint32 y, OBJECT_HANDLE hdl) + template<class SPECIFIC_OBJECT> bool RemoveGridObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj) { - return getGridType(x, y).template GetGridObject<SPECIFIC_OBJECT>(hdl); - } - - template<class SPECIFIC_OBJECT> bool AddGridObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) - { - return getGridType(x, y).AddGridObject(hdl, obj); - } - - template<class SPECIFIC_OBJECT> bool RemoveGridObject(const uint32 x, const uint32 y, SPECIFIC_OBJECT *obj, OBJECT_HANDLE hdl) - { - return getGridType(x, y).RemoveGridObject(obj, hdl); + return getGridType(x, y).RemoveGridObject(obj); } private: diff --git a/src/framework/GameSystem/TypeContainer.h b/src/framework/GameSystem/TypeContainer.h index 7978201ad62..4297aaf32e7 100644 --- a/src/framework/GameSystem/TypeContainer.h +++ b/src/framework/GameSystem/TypeContainer.h @@ -102,22 +102,17 @@ class TRINITY_DLL_DECL TypeMapContainer public: template<class SPECIFIC_TYPE> size_t Count() const { return Trinity::Count(i_elements, (SPECIFIC_TYPE*)NULL); } - template<class SPECIFIC_TYPE> SPECIFIC_TYPE* find(OBJECT_HANDLE hdl, SPECIFIC_TYPE *fake) { return Trinity::Find(i_elements, hdl,fake); } - - /// find a specific type of object in the container - template<class SPECIFIC_TYPE> const SPECIFIC_TYPE* find(OBJECT_HANDLE hdl, SPECIFIC_TYPE *fake) const { return Trinity::Find(i_elements, hdl,fake); } - /// inserts a specific object into the container - template<class SPECIFIC_TYPE> bool insert(OBJECT_HANDLE hdl, SPECIFIC_TYPE *obj) + template<class SPECIFIC_TYPE> bool insert(SPECIFIC_TYPE *obj) { - SPECIFIC_TYPE* t = Trinity::Insert(i_elements, obj, hdl); + SPECIFIC_TYPE* t = Trinity::Insert(i_elements, obj); return (t != NULL); } /// Removes the object from the container, and returns the removed object - template<class SPECIFIC_TYPE> bool remove(SPECIFIC_TYPE* obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_TYPE> bool remove(SPECIFIC_TYPE* obj) { - SPECIFIC_TYPE* t = Trinity::Remove(i_elements, obj, hdl); + SPECIFIC_TYPE* t = Trinity::Remove(i_elements, obj); return (t != NULL); } diff --git a/src/framework/GameSystem/TypeContainerFunctions.h b/src/framework/GameSystem/TypeContainerFunctions.h index c94dc4f1e3e..edfbb40e659 100644 --- a/src/framework/GameSystem/TypeContainerFunctions.h +++ b/src/framework/GameSystem/TypeContainerFunctions.h @@ -60,114 +60,55 @@ namespace Trinity return Count(elements._TailElements, fake); } - // non-const find functions - template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Find(ContainerMapList<SPECIFIC_TYPE> &/*elements*/, OBJECT_HANDLE /*hdl*/, SPECIFIC_TYPE* /*fake*/) - { - //typename std::map<OBJECT_HANDLE, SPECIFIC_TYPE *>::iterator iter = elements._element.find(hdl); - //return (iter == elements._element.end() ? NULL : iter->second); - return NULL; - }; - - template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Find(ContainerMapList<TypeNull> &/*elements*/, OBJECT_HANDLE /*hdl*/, SPECIFIC_TYPE* /*fake*/) - { - return NULL; // terminate recursion - } - - template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Find(ContainerMapList<T> &/*elements*/, OBJECT_HANDLE /*hdl*/, SPECIFIC_TYPE* /*fake*/) - { - return NULL; // this is a missed - } - - template<class SPECIFIC_TYPE, class H, class T> SPECIFIC_TYPE* Find(ContainerMapList<TypeList<H, T> >&/*elements*/, OBJECT_HANDLE /*hdl*/, SPECIFIC_TYPE* /*fake*/) - { - //SPECIFIC_TYPE* t = Find(elements._elements, hdl,fake); - //return (t != NULL ? t :Find(elements._TailElements, hdl,fake)); - return NULL; - } - - // const find functions - template<class SPECIFIC_TYPE> const SPECIFIC_TYPE* Find(const ContainerMapList<SPECIFIC_TYPE> &/*elements*/, OBJECT_HANDLE /*hdl*/, SPECIFIC_TYPE* /*fake*/) - { - //typename SPECIFIC_TYPE::iterator iter = elements._element.find(hdl); - //return (iter == elements._element.end() ? NULL : iter->second); - return NULL; - }; - - template<class SPECIFIC_TYPE> const SPECIFIC_TYPE* Find(const ContainerMapList<TypeNull> &/*elements*/, OBJECT_HANDLE /*hdl*/, SPECIFIC_TYPE* /*fake*/) - { - return NULL; - } - - template<class SPECIFIC_TYPE, class T> const SPECIFIC_TYPE* Find(const ContainerMapList<T> &/*elements*/, OBJECT_HANDLE /*hdl*/, SPECIFIC_TYPE* /*fake*/) - { - return NULL; - } - - template<class SPECIFIC_TYPE, class H, class T> SPECIFIC_TYPE* Find(const ContainerMapList<TypeList<H, T> >&elements, OBJECT_HANDLE hdl, SPECIFIC_TYPE* fake) - { - SPECIFIC_TYPE* t = Find(elements._elements, hdl,fake); - if( t) - return t; - - return Find(elements._TailElement, hdl,fake); - } - // non-const insert functions - template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Insert(ContainerMapList<SPECIFIC_TYPE> &elements, SPECIFIC_TYPE *obj, OBJECT_HANDLE /*hdl*/) + template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Insert(ContainerMapList<SPECIFIC_TYPE> &elements, SPECIFIC_TYPE *obj) { //elements._element[hdl] = obj; obj->GetGridRef().link(&elements._element, obj); return obj; }; - template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Insert(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/, OBJECT_HANDLE /*hdl*/) + template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Insert(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/) { return NULL; } // this is a missed - template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Insert(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/, OBJECT_HANDLE /*hdl*/) + template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Insert(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/) { return NULL; // a missed } // Recursion - template<class SPECIFIC_TYPE, class H, class T> SPECIFIC_TYPE* Insert(ContainerMapList<TypeList<H, T> >&elements, SPECIFIC_TYPE *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_TYPE, class H, class T> SPECIFIC_TYPE* Insert(ContainerMapList<TypeList<H, T> >&elements, SPECIFIC_TYPE *obj) { - SPECIFIC_TYPE* t= Insert(elements._elements, obj, hdl); - return (t != NULL ? t : Insert(elements._TailElements, obj, hdl)); + SPECIFIC_TYPE* t= Insert(elements._elements, obj); + return (t != NULL ? t : Insert(elements._TailElements, obj)); } // non-const remove method - template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<SPECIFIC_TYPE> & /*elements*/, SPECIFIC_TYPE *obj, OBJECT_HANDLE /*hdl*/) + template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<SPECIFIC_TYPE> & /*elements*/, SPECIFIC_TYPE *obj) { - /*typename std::map<OBJECT_HANDLE, SPECIFIC_TYPE *>::iterator iter = elements._element.find(hdl); - if( iter != elements._element.end() ) - { - SPECIFIC_TYPE* t = iter->second; - elements._element.erase(iter); - return t; - }*/ obj->GetGridRef().unlink(); return obj; } - template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/, OBJECT_HANDLE /*hdl*/) + template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/) { return NULL; } // this is a missed - template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Remove(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/, OBJECT_HANDLE /*hdl*/) + template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Remove(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/) { return NULL; // a missed } - template<class SPECIFIC_TYPE, class T, class H> SPECIFIC_TYPE* Remove(ContainerMapList<TypeList<H, T> > &elements, SPECIFIC_TYPE *obj, OBJECT_HANDLE hdl) + template<class SPECIFIC_TYPE, class T, class H> SPECIFIC_TYPE* Remove(ContainerMapList<TypeList<H, T> > &elements, SPECIFIC_TYPE *obj) { // The head element is bad - SPECIFIC_TYPE* t = Remove(elements._elements, obj, hdl); - return ( t != NULL ? t : Remove(elements._TailElements, obj, hdl) ); + SPECIFIC_TYPE* t = Remove(elements._elements, obj); + return ( t != NULL ? t : Remove(elements._TailElements, obj) ); } } diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index 6654bb0545a..4e4e05186e3 100644 --- a/src/game/GridNotifiers.h +++ b/src/game/GridNotifiers.h @@ -180,33 +180,6 @@ namespace Trinity void Visit(CreatureMapType &); }; - template<class T> - struct TRINITY_DLL_DECL ObjectAccessorNotifier - { - T *& i_object; - - uint64 i_id; - ObjectAccessorNotifier(T * &obj, uint64 id) : i_object(obj), i_id(id) - { - i_object = NULL; - } - - void Visit(GridRefManager<T> &m ) - { - if( i_object == NULL ) - { - GridRefManager<T> *iter = m.find(i_id); - if( iter != m.end() ) - { - assert( iter->second != NULL ); - i_object = iter->second; - } - } - } - - template<class NOT_INTERESTED> void Visit(GridRefManager<NOT_INTERESTED> &) {} - }; - // SEARCHERS & LIST SEARCHERS & WORKERS // WorldObject searchers & workers diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 7a22645d639..d73833e30e2 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -249,18 +249,18 @@ template<class T> void Map::AddToGrid(T* obj, NGridType *grid, Cell const& cell) { if(obj->m_isWorldObject) - (*grid)(cell.CellX(), cell.CellY()).template AddWorldObject<T>(obj, obj->GetGUID()); + (*grid)(cell.CellX(), cell.CellY()).template AddWorldObject<T>(obj); else - (*grid)(cell.CellX(), cell.CellY()).template AddGridObject<T>(obj, obj->GetGUID()); + (*grid)(cell.CellX(), cell.CellY()).template AddGridObject<T>(obj); } template<> void Map::AddToGrid(Creature* obj, NGridType *grid, Cell const& cell) { if(obj->m_isWorldObject) - (*grid)(cell.CellX(), cell.CellY()).AddWorldObject(obj, obj->GetGUID()); + (*grid)(cell.CellX(), cell.CellY()).AddWorldObject(obj); else - (*grid)(cell.CellX(), cell.CellY()).AddGridObject(obj, obj->GetGUID()); + (*grid)(cell.CellX(), cell.CellY()).AddGridObject(obj); obj->SetCurrentCell(cell); } @@ -269,9 +269,9 @@ template<class T> void Map::RemoveFromGrid(T* obj, NGridType *grid, Cell const& cell) { if(obj->m_isWorldObject) - (*grid)(cell.CellX(), cell.CellY()).template RemoveWorldObject<T>(obj, obj->GetGUID()); + (*grid)(cell.CellX(), cell.CellY()).template RemoveWorldObject<T>(obj); else - (*grid)(cell.CellX(), cell.CellY()).template RemoveGridObject<T>(obj, obj->GetGUID()); + (*grid)(cell.CellX(), cell.CellY()).template RemoveGridObject<T>(obj); } template<class T> @@ -296,8 +296,8 @@ void Map::SwitchGridContainers(T* obj, bool on) if(on) { - grid.RemoveGridObject<T>(obj, obj->GetGUID()); - grid.AddWorldObject<T>(obj, obj->GetGUID()); + grid.RemoveGridObject<T>(obj); + grid.AddWorldObject<T>(obj); /*if(!grid.RemoveGridObject<T>(obj, obj->GetGUID()) || !grid.AddWorldObject<T>(obj, obj->GetGUID())) { @@ -306,8 +306,8 @@ void Map::SwitchGridContainers(T* obj, bool on) } else { - grid.RemoveWorldObject<T>(obj, obj->GetGUID()); - grid.AddGridObject<T>(obj, obj->GetGUID()); + grid.RemoveWorldObject<T>(obj); + grid.AddGridObject<T>(obj); /*if(!grid.RemoveWorldObject<T>(obj, obj->GetGUID()) || !grid.AddGridObject<T>(obj, obj->GetGUID())) { diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp index 92cdb81ea24..f2be4153af6 100644 --- a/src/game/ObjectAccessor.cpp +++ b/src/game/ObjectAccessor.cpp @@ -314,12 +314,12 @@ ObjectAccessor::AddCorpsesToGrid(GridPair const& gridpair,GridType& grid,Map* ma { if (iter->second->GetInstanceId() == map->GetInstanceId()) { - grid.AddWorldObject(iter->second, iter->second->GetGUID()); + grid.AddWorldObject(iter->second); } } else { - grid.AddWorldObject(iter->second, iter->second->GetGUID()); + grid.AddWorldObject(iter->second); } } } |
