From 56b98f3086c9522779a583596d46c1cc4af2ef67 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 5 Sep 2024 19:48:21 +0900 Subject: [PATCH] adaptive tilemap update rate --- src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt | 2 ++ src/net/torvald/terrarum/worlddrawer/BlocksDrawer.kt | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index c71273283..b0ecb8fbd 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -286,6 +286,8 @@ class BasicDebugInfoWindow : UICanvas() { batch.draw(icons.get(0,0), gap + 7f*cxyX, line(cxyY)) App.fontSmallNumbers.draw(batch, "X$ccG${WorldCamera.x.toString().padStart(7)}", gap + 7f*(cxyX + 3), line(cxyY)) App.fontSmallNumbers.draw(batch, "Y$ccG${WorldCamera.y.toString().padStart(7)}", gap + 7f*(cxyX + 3), line(cxyY+1)) +// App.fontSmallNumbers.draw(batch, "X$ccG${WorldCamera.deltaX.toString().padStart(7)}", gap + 7f*(cxyX + 3), line(cxyY)) +// App.fontSmallNumbers.draw(batch, "Y$ccG${WorldCamera.deltaY.toString().padStart(7)}", gap + 7f*(cxyX + 3), line(cxyY+1)) // sun and weather diff --git a/src/net/torvald/terrarum/worlddrawer/BlocksDrawer.kt b/src/net/torvald/terrarum/worlddrawer/BlocksDrawer.kt index 0371fa381..b15ac6337 100644 --- a/src/net/torvald/terrarum/worlddrawer/BlocksDrawer.kt +++ b/src/net/torvald/terrarum/worlddrawer/BlocksDrawer.kt @@ -13,6 +13,7 @@ import net.torvald.terrarum.* import net.torvald.terrarum.App.measureDebugTime import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE +import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameitems.ItemID @@ -1177,8 +1178,8 @@ internal object BlocksDrawer { private val doTilemapUpdate: Boolean get() { - // TODO adaptive rate control via cam delta - val rate = 4 + val rate = ((2f * TILE_SIZEF) / maxOf(WorldCamera.deltaX.abs(), WorldCamera.deltaY.abs()).coerceAtLeast(1)).roundToInt().coerceIn(1, 4) +// App.debugTimers.put("Renderer.tilemapUpdateDivider", rate.toLong()) return (!world.layerTerrain.ptrDestroyed && App.GLOBAL_RENDER_TIMER % rate == 0L) }