public static void ConstructScene() { GamePixel[][] scene = new GamePixel[viewport.size.y][]; for (int y = 0; y < viewport.size.y; y++) { scene[y] = new GamePixel[viewport.size.x]; for (int x = 0; x < viewport.size.x; x++) { Coord gridPos = new Coord(x + viewport.position.x, y + viewport.position.y); scene[y][x] = grid[gridPos.y][gridPos.x]; foreach (Entity entity in entities) { if (entity.rect.top <= gridPos.y & entity.rect.bottom >= gridPos.y & entity.rect.left <= gridPos.x & entity.rect.right >= gridPos.x) { if (entity.spriteSheet[entity.activeSpriteSet][entity.activeSprite].grid[gridPos.y - entity.rect.top][gridPos.x - entity.rect.left].foreground >= 0 & entity.spriteSheet[entity.activeSpriteSet][entity.activeSprite].grid[gridPos.y - entity.rect.top][gridPos.x - entity.rect.left].background >= 0) { scene[y][x] = entity.spriteSheet[entity.activeSpriteSet][entity.activeSprite].grid[gridPos.y - entity.rect.top][gridPos.x - entity.rect.left]; } } } } } gameRegion.SetContent(scene); }