diff options
| author | megamage <none@none.none> | 2011-11-10 17:31:45 -0500 |
|---|---|---|
| committer | megamage <none@none.none> | 2011-11-10 17:31:45 -0500 |
| commit | 31a88d4fe5d5dea87f4dad24e4d7c3c1d47fc48c (patch) | |
| tree | 959c67bc2442019a69d37877fc7e7bcb33225ab6 /src/server/game/Entities/Object | |
| parent | 23b3f16f3a4a27b7b24081b725666c5897fdbbee (diff) | |
Fix the crash when removing object from an unloaded grid. Object should always be unlinked from grid no matter if the grid is loaded.
Diffstat (limited to 'src/server/game/Entities/Object')
| -rwxr-xr-x | src/server/game/Entities/Object/Object.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index dfcf6a3cfa4..c579659623b 100755 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -527,9 +527,11 @@ template<class T> class GridObject { public: - GridReference<T> &GetGridRef() { return m_gridRef; } - protected: - GridReference<T> m_gridRef; + bool IsInGrid() const { return _gridRef.isValid(); } + void AddToGrid(GridRefManager<T>& m) { ASSERT(!IsInGrid()); _gridRef.link(&m, (T*)this); } + void RemoveFromGrid() { ASSERT(IsInGrid()); _gridRef.unlink(); } + private: + GridReference<T> _gridRef; }; template <class T_VALUES, class T_FLAGS, class FLAG_TYPE, uint8 ARRAY_SIZE> |
