From 5311158ad84563e240a45d0e1b600238ebbee944 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 31 Jul 2021 16:39:47 +0900 Subject: [PATCH] actually enforcing limit on how many wire pieces can be rendered --- .../torvald/terrarum/modulebasegame/TerrarumIngame.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index 94d81436c..ce4f92be8 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -6,6 +6,7 @@ import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.EMDASH import net.torvald.terrarum.* +import net.torvald.terrarum.AppLoader.measureDebugTime import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED @@ -638,7 +639,9 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { if (uiFixture?.isClosed == true) { uiFixture = null } // fill up visibleActorsRenderFront for wires - fillUpWiresBuffer() + measureDebugTime("Ingame.WiresRenderAndDraw") { + fillUpWiresBuffer() + } IngameRenderer.invoke( paused, @@ -653,6 +656,8 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { ) } + private val maxRenderableWires = ReferencingRanges.ACTORS_WIRES.endInclusive - ReferencingRanges.ACTORS_WIRES.first + 1 + private fun fillUpWiresBuffer() { fun getOrMakeWireActor(num: Int): WireActor { return try { @@ -674,6 +679,8 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { var wiringCounter = 0 for (y in for_y_start..for_y_end) { for (x in for_x_start..for_x_end) { + if (wiringCounter >= maxRenderableWires) break + val wires = world.getAllWiresFrom(x, y) wires?.forEach {