/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-GPL2 * Copyright (C) 2008-2016 TrinityCore * Copyright (C) 2005-2009 MaNGOS */ #ifndef ACORE_OBJECTGRIDLOADER_H #define ACORE_OBJECTGRIDLOADER_H #include "TypeList.h" #include "Define.h" #include "GridLoader.h" #include "GridDefines.h" #include "Cell.h" class ObjectWorldLoader; class ObjectGridLoader { friend class ObjectWorldLoader; public: ObjectGridLoader(NGridType &grid, Map* map, const Cell &cell) : i_cell(cell), i_grid(grid), i_map(map), i_gameObjects(0), i_creatures(0), i_corpses (0) {} void Visit(GameObjectMapType &m); void Visit(CreatureMapType &m); void Visit(CorpseMapType &) const {} void Visit(DynamicObjectMapType&) const {} void LoadN(void); template static void SetObjectCell(T* obj, CellCoord const& cellCoord); private: Cell i_cell; NGridType &i_grid; Map* i_map; uint32 i_gameObjects; uint32 i_creatures; uint32 i_corpses; }; //Clean up and remove from world class ObjectGridCleaner { public: template void Visit(GridRefManager &); }; //Delete objects before deleting NGrid class ObjectGridUnloader { public: template void Visit(GridRefManager &m); }; #endif