diff --git a/tools/grid.py b/tools/grid.py index 22e8a3a..46a4d1e 100644 --- a/tools/grid.py +++ b/tools/grid.py @@ -292,15 +292,24 @@ class Grid: else: raise NotImplementedError(mode) - def shift(self, shift_x: int = None, shift_y: int = None): - self.minX, self.minY = self.minX + shift_x, self.minY + shift_y - self.maxX, self.maxY = self.maxX + shift_x, self.maxY + shift_y + def shift(self, shift_x: int = 0, shift_y: int = 0, shift_z: int = 0): + self.minX, self.minY, self.minZ = self.minX + shift_x, self.minY + shift_y, self.minZ + shift_z + self.maxX, self.maxY, self.minZ = self.maxX + shift_x, self.maxY + shift_y, self.minZ + shift_z coords = self.__grid self.__grid = {} for c, v in coords.items(): - nc = Coordinate(c.x + shift_x, c.y + shift_y) + if self.mode3D: + nc = Coordinate(c.x + shift_x, c.y + shift_y, c.z + shift_z) + else: + nc = Coordinate(c.x + shift_x, c.y + shift_y) self.set(nc, v) + def shift_zero(self, recalc: bool = True): + # self.shift() to (0, 0, 0) being top, left, front + if recalc: + self.recalcBoundaries() + self.shift(0 - self.minX, 0 - self.minY, 0 - self.minZ) + def getPath_BFS(self, pos_from: Coordinate, pos_to: Coordinate, includeDiagonal: bool, walls: List[Any] = None, stop_at_first: Any = None) -> Union[None, List[Coordinate]]: queue = deque()