diff options
-rw-r--r-- | src/server/game/Grids/GridDefines.h | 41 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 2 |
2 files changed, 25 insertions, 18 deletions
diff --git a/src/server/game/Grids/GridDefines.h b/src/server/game/Grids/GridDefines.h index 96dc3cd2b54..98077742773 100644 --- a/src/server/game/Grids/GridDefines.h +++ b/src/server/game/Grids/GridDefines.h @@ -31,29 +31,29 @@ class GameObject; class Pet; class Player; -#define MAX_NUMBER_OF_CELLS 8 +constexpr uint32 MAX_NUMBER_OF_CELLS = 8; -#define MAX_NUMBER_OF_GRIDS 64 +constexpr uint32 MAX_NUMBER_OF_GRIDS = 64; -#define SIZE_OF_GRIDS 533.3333f -#define CENTER_GRID_ID (MAX_NUMBER_OF_GRIDS/2) +constexpr float SIZE_OF_GRIDS = 533.3333f; +constexpr uint32 CENTER_GRID_ID = (MAX_NUMBER_OF_GRIDS / 2); -#define CENTER_GRID_OFFSET (SIZE_OF_GRIDS/2) +constexpr float CENTER_GRID_OFFSET = (SIZE_OF_GRIDS / 2); -#define MIN_GRID_DELAY (MINUTE*IN_MILLISECONDS) -#define MIN_MAP_UPDATE_DELAY 50 +#define MIN_GRID_DELAY (MINUTE*IN_MILLISECONDS) +#define MIN_MAP_UPDATE_DELAY 50 -#define SIZE_OF_GRID_CELL (SIZE_OF_GRIDS/MAX_NUMBER_OF_CELLS) +constexpr float SIZE_OF_GRID_CELL = (SIZE_OF_GRIDS / MAX_NUMBER_OF_CELLS); + +constexpr uint32 CENTER_GRID_CELL_ID = (MAX_NUMBER_OF_CELLS * MAX_NUMBER_OF_GRIDS / 2); +constexpr float CENTER_GRID_CELL_OFFSET = (SIZE_OF_GRID_CELL / 2); -#define CENTER_GRID_CELL_ID (MAX_NUMBER_OF_CELLS*MAX_NUMBER_OF_GRIDS/2) -#define CENTER_GRID_CELL_OFFSET (SIZE_OF_GRID_CELL/2) +constexpr uint32 TOTAL_NUMBER_OF_CELLS_PER_MAP = (MAX_NUMBER_OF_GRIDS * MAX_NUMBER_OF_CELLS); -#define TOTAL_NUMBER_OF_CELLS_PER_MAP (MAX_NUMBER_OF_GRIDS*MAX_NUMBER_OF_CELLS) +constexpr uint32 MAP_RESOLUTION = 128; -#define MAP_RESOLUTION 128 - -#define MAP_SIZE (SIZE_OF_GRIDS*MAX_NUMBER_OF_GRIDS) -#define MAP_HALFSIZE (MAP_SIZE/2) +constexpr float MAP_SIZE = (SIZE_OF_GRIDS * MAX_NUMBER_OF_GRIDS); +constexpr float MAP_HALFSIZE = (MAP_SIZE / 2); // Creature used instead pet to simplify *::Visit templates (not required duplicate code for Creature->Pet case) typedef TYPELIST_4(Player, Creature/*pets*/, Corpse/*resurrectable*/, DynamicObject/*farsight target*/) AllWorldObjectTypes; @@ -178,8 +178,8 @@ namespace Trinity double x_offset = (double(x) - center_offset)/size; double y_offset = (double(y) - center_offset)/size; - int x_val = int(x_offset + CENTER_VAL + 0.5f); - int y_val = int(y_offset + CENTER_VAL + 0.5f); + int x_val = int(x_offset + CENTER_VAL + 0.5); + int y_val = int(y_offset + CENTER_VAL + 0.5); return RET_TYPE(x_val, y_val); } @@ -188,6 +188,13 @@ namespace Trinity return Compute<GridCoord, CENTER_GRID_ID>(x, y, CENTER_GRID_OFFSET, SIZE_OF_GRIDS); } + inline GridCoord ComputeGridCoordSimple(float x, float y) + { + int gx = (int)(CENTER_GRID_ID - x / SIZE_OF_GRIDS); + int gy = (int)(CENTER_GRID_ID - y / SIZE_OF_GRIDS); + return GridCoord((MAX_NUMBER_OF_GRIDS - 1) - gx, (MAX_NUMBER_OF_GRIDS - 1) - gy); + } + inline CellCoord ComputeCellCoord(float x, float y) { return Compute<CellCoord, CENTER_GRID_CELL_ID>(x, y, CENTER_GRID_CELL_OFFSET, SIZE_OF_GRID_CELL); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 1e0af8d8d6f..1908f2efe2a 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2305,7 +2305,7 @@ float GridMap::getMinHeight(float x, float y) const if (!_minHeightPlanes) return -500.0f; - GridCoord gridCoord = Trinity::ComputeGridCoord(x, y); + GridCoord gridCoord = Trinity::ComputeGridCoordSimple(x, y); int32 doubleGridX = int32(std::floor(-(x - MAP_HALFSIZE) / CENTER_GRID_OFFSET)); int32 doubleGridY = int32(std::floor(-(y - MAP_HALFSIZE) / CENTER_GRID_OFFSET)); |