package coffee.liz.ecs import kotlin.reflect.KClass import kotlin.time.Duration /** * System is a component that updates the world state. * @param Outside is the state of the stuff outside the world (input, etc.). */ interface System { /** * Systems that must run before this system in the update loop. */ val dependencies: Set>> get() = emptySet() /** * Integrate this system over [deltaTime]. * @param world [World] * @param deltaTime [Duration] since last update */ fun update(world: World, state: Outside, deltaTime: Duration) }