wires are simulated on every other update

This commit is contained in:
minjaesong
2021-10-25 10:58:18 +09:00
parent a79e673408
commit 64475455a8
2 changed files with 17 additions and 7 deletions

View File

@@ -8,6 +8,7 @@ import net.torvald.terrarum.blockproperties.Fluid
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameactors.Controllable
import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.TerrarumIngame.Companion.inUpdateRange
import net.torvald.terrarum.modulebasegame.gameactors.*
import org.dyn4j.geometry.Vector2
@@ -54,8 +55,8 @@ object WorldSimulator {
/** Bottom-right point */
var updateYTo = 0
private val ingame: IngameInstance
get() = Terrarum.ingame!!
private val ingame: TerrarumIngame
get() = Terrarum.ingame!! as TerrarumIngame
private val world: GameWorld
get() = ingame.world
@@ -85,8 +86,13 @@ object WorldSimulator {
App.measureDebugTime("WorldSimulator.fallables") {
displaceFallables(delta)
}
App.measureDebugTime("WorldSimulator.wires") {
simulateWires(delta)
if (ingame.WORLD_UPDATE_TIMER % 2 == 1) {
App.measureDebugTime("WorldSimulator.wires") {
simulateWires(delta)
}
}
else {
// TODO update logic
}
App.measureDebugTime("WorldSimulator.collisionDroppedItem") {
collideDroppedItems()

View File

@@ -32,12 +32,12 @@ import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
import net.torvald.terrarum.modulebasegame.worldgenerator.Worldgen
import net.torvald.terrarum.modulebasegame.worldgenerator.WorldgenParams
import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.savegame.DiskSkimmer
import net.torvald.terrarum.savegame.VDUtil
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.serialise.LoadSavegame
import net.torvald.terrarum.serialise.ReadActor
import net.torvald.terrarum.serialise.WriteSavegame
import net.torvald.terrarum.savegame.DiskSkimmer
import net.torvald.terrarum.savegame.VDUtil
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UIAutosaveNotifier
import net.torvald.terrarum.ui.UICanvas
@@ -59,6 +59,8 @@ import java.util.concurrent.locks.ReentrantLock
open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
var WORLD_UPDATE_TIMER = Random().nextInt(1020) + 1; private set
var historicalFigureIDBucket: ArrayList<Int> = ArrayList<Int>()
@@ -671,7 +673,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
// define custom update rate
val updateRate = if (KeyToggler.isOn(Input.Keys.APOSTROPHE)) 1f / 8f else App.UPDATE_RATE
val updateRate = App.UPDATE_RATE // if (KeyToggler.isOn(Input.Keys.APOSTROPHE)) 1f / 8f else App.UPDATE_RATE
// ASYNCHRONOUS UPDATE AND RENDER //
@@ -776,6 +778,8 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
}
oldCamX = WorldCamera.x
WORLD_UPDATE_TIMER += 1
}
if (!paused || newWorldLoadedLatch) {