blob: f512ca7ed10176bbedda218c44e275f23f555a05 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package coffee.liz.ecs
import kotlin.time.Duration
abstract class TickedSystem<Outside>(
protected val tickRate: Duration,
private var lastTick: Duration = Duration.ZERO
): System<Outside> {
abstract fun update(world: World<Outside>, state: Outside, ticks: Int)
override fun update(world: World<Outside>, state: Outside, deltaTime: Duration) {
val ticks = ((deltaTime - lastTick) / tickRate).toInt()
lastTick = if (ticks == 0) (lastTick + deltaTime).also {
update(world, state, ticks)
} else Duration.ZERO
}
}
|