From 38242c6b7adaa6563768651de75279cf228ee14c Mon Sep 17 00:00:00 2001 From: Collin Smith Date: Sun, 3 Mar 2019 17:30:45 -0800 Subject: [PATCH] Performance optimizations with MapRenderer Performance optimizations with MapRenderer to roofs, shadows and wall layers Extended min zoom level to GameScreen --- core/src/gdx/diablo/map/MapRenderer.java | 9 ++++++++- core/src/gdx/diablo/screen/GameScreen.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/src/gdx/diablo/map/MapRenderer.java b/core/src/gdx/diablo/map/MapRenderer.java index 821fa180..b1c89110 100644 --- a/core/src/gdx/diablo/map/MapRenderer.java +++ b/core/src/gdx/diablo/map/MapRenderer.java @@ -584,9 +584,12 @@ public class MapRenderer { for (int i = Map.SHADOW_OFFSET; i < Map.SHADOW_OFFSET + Map.MAX_SHADOWS; i++) { Map.Tile tile = zone.get(i, tx, ty); if (tile == null) continue; + if (px > renderMaxX || px + Tile.WIDTH < renderMinX) continue; TextureRegion texture = tile.tile.texture; + if (py > renderMaxY || py + texture.getRegionHeight() < renderMinY) continue; batch.draw(texture, px, py, texture.getRegionWidth(), texture.getRegionHeight()); } + /* for (int i = Map.WALL_OFFSET; i < Map.WALL_OFFSET + Map.MAX_WALLS; i++) { Map.Tile tile = zone.get(i, tx, ty); if (tile == null || tile.tile == null) continue; @@ -594,6 +597,7 @@ public class MapRenderer { TextureRegion texture = tile.tile.texture; batch.draw(texture, px, py, texture.getRegionWidth(), texture.getRegionHeight()); } + */ for (Array c : cache) { for (Entity entity : c) entity.drawShadow(batch); } @@ -624,6 +628,7 @@ public class MapRenderer { * that position as the tile position and render it as if its an entity */ case Orientation.TREE: // TODO: should be in-line rendered with entities + if (py + tile.tile.texture.getRegionHeight() < renderMinY) break; batch.draw(tile.tile.texture, px, py); if (tile.tile.orientation == Orientation.RIGHT_NORTH_CORNER_WALL) { batch.draw(tile.sibling.texture, px, py); @@ -635,12 +640,14 @@ public class MapRenderer { } void drawRoofs(PaletteIndexedBatch batch, Map.Zone zone, int tx, int ty, int px, int py) { - if (px > renderMaxX || py > renderMaxY || px + Tile.WIDTH < renderMinX) return; + if (px > renderMaxX || px + Tile.WIDTH < renderMinX) return; for (int i = Map.WALL_OFFSET; i < Map.WALL_OFFSET + Map.MAX_WALLS; i++) { Map.Tile tile = zone.get(i, tx, ty); if (tile == null || tile.tile == null) continue; if (popped.get(tile.tile.mainIndex)) continue; if (!Orientation.isRoof(tile.tile.orientation)) continue; + if (py + tile.tile.roofHeight > renderMaxY) continue; + if (py + tile.tile.roofHeight + tile.tile.texture.getRegionHeight() < renderMinY) continue; batch.draw(tile.tile.texture, px, py + tile.tile.roofHeight); } } diff --git a/core/src/gdx/diablo/screen/GameScreen.java b/core/src/gdx/diablo/screen/GameScreen.java index 3ea4dc9a..10d3fd3f 100644 --- a/core/src/gdx/diablo/screen/GameScreen.java +++ b/core/src/gdx/diablo/screen/GameScreen.java @@ -296,7 +296,7 @@ public class GameScreen extends ScreenAdapter implements LoadingScreen.Loadable break; case 1: if (UIUtils.ctrl()) { - mapRenderer.zoom(Math.min(2.50f, mapRenderer.zoom() + ZOOM_AMOUNT)); + mapRenderer.zoom(Math.min(10.00f, mapRenderer.zoom() + ZOOM_AMOUNT)); } break;