Я пытаюсь скопировать подмножество двухмерного вектора, чтобы реализовать выборку экрана для карты тайлов. Для этого мне нужно получить подмножество std :: vector>, используя две точки: начальную точку и конечную точку.
Вот как я делаю это в настоящее время:
typedef struct tile_t {
int x;
int y;
SDL_Texture* texture;
}
std::vector<std::vector<Tile>> Map::GetTilesInRange(SDL_Point starting_point, SDL_Point ending_point) {
int starting_tile_x = floor(starting_point.x / TILE_WIDTH);
int starting_tile_y = floor(starting_point.y / TILE_HEIGHT);
int ending_tile_x = ceil(ending_point.x / TILE_WIDTH);
int ending_tile_y = ceil(ending_point.y / TILE_HEIGHT);
starting_tile_x = clamp(starting_tile_x, 0, this->width);
starting_tile_y = clamp(starting_tile_y, 0, this->height);
ending_tile_x = clamp(ending_tile_x, 0, this->width);
ending_tile_y = clamp(ending_tile_y, 0, this->height);
printf("\n");
printf("(%d, %d)\n", this->width, this->height);
printf("(%d, %d); (%d, %d)\n", starting_tile_x, starting_tile_y,
ending_tile_x, ending_tile_y);
std::vector<std::vector<Tile>> return_val(this->tiles_parsed.begin() + starting_tile_x, this->tiles_parsed.begin() + ending_tile_x);
return return_val;
}
Проблема в том, что я рендеринг только определенной части выбранного диапазона. Почему это так и как я могу это исправить?