[Fix] Now only visible region of the map is drawn.
This commit is contained in:
parent
ac0b5785a3
commit
8393d50851
@ -22,16 +22,16 @@ void Layer::Update(float dt) {
|
||||
}
|
||||
|
||||
void Layer::Draw(int xOffset, int yOffset) {
|
||||
int xOffsetTiles = xOffset / _width;
|
||||
int yOffsetTiles = yOffset / _height;
|
||||
int xOffsetTiles = xOffset / _tileWidth;
|
||||
int yOffsetTiles = yOffset / _tileHeight;
|
||||
|
||||
int minX = std::max(0, xOffsetTiles - 1);
|
||||
int maxX = std::min(_width, xOffsetTiles + (WINDOW_WIDTH / (int)_tileWidth) + 1);
|
||||
int minY = std::max(0, yOffsetTiles - 1);
|
||||
int maxY = std::min(_height, yOffsetTiles + (WINDOW_HEIGHT / (int)_tileHeight) + 1);
|
||||
int minX = std::max(xOffsetTiles, 0);
|
||||
int maxX = std::min(_width, xOffsetTiles + WINDOW_WIDTH / (int)_tileWidth + 2);
|
||||
int minY = std::max(yOffsetTiles, 0);
|
||||
int maxY = std::min(_height, yOffsetTiles + WINDOW_HEIGHT / (int)_tileHeight + 2);
|
||||
|
||||
for(int x = 0; x < _width; x++) {
|
||||
for(int y = 0; y < _height; y++) {
|
||||
for(int x = minX; x < maxX; x++) {
|
||||
for(int y = minY; y < maxY; y++) {
|
||||
MapTile& tile = GetTile(x, y);
|
||||
if(tile.tileset != NULL) {
|
||||
tile.tileset->DrawTile(tile.id, Vec2((float)x * _tileWidth, (float)y * _tileHeight));
|
||||
|
@ -81,7 +81,6 @@ void Game::Render(void) {
|
||||
void Game::Shutdown(void) {
|
||||
Debug::logger->message("\n ----- Cleaning Engine -----");
|
||||
delete _player;
|
||||
delete _NPC;
|
||||
delete _level;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user