Скопировать подмножество 2d вектора? - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь скопировать подмножество двухмерного вектора, чтобы реализовать выборку экрана для карты тайлов. Для этого мне нужно получить подмножество 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;
}

Проблема в том, что я рендеринг только определенной части выбранного диапазона. Почему это так и как я могу это исправить?

...