Delete FixedStepScheduler.lua
This commit is contained in:
parent
751eb9fa78
commit
fade349f21
1 changed files with 0 additions and 58 deletions
|
@ -1,58 +0,0 @@
|
||||||
--!strict
|
|
||||||
|
|
||||||
-- A simple fixed step system scheduler
|
|
||||||
-- Fixed updates can happen multiple times per frame
|
|
||||||
-- Variable updates will happen after all fixed updates complete
|
|
||||||
|
|
||||||
local FIXED_DELTA = (1 / 60)
|
|
||||||
local MAXIMUM_DELTA = (1 / 5)
|
|
||||||
|
|
||||||
export type System = {
|
|
||||||
--> variable delta_time update, used for rendering
|
|
||||||
--> blend used for interpolation of simulation state
|
|
||||||
update: ((delta_time: number, blend: number) -> ())?,
|
|
||||||
--> fixed delta_time update, used for simulation
|
|
||||||
fixed_update: ((delta_time: number, frame: number) -> ())?,
|
|
||||||
}
|
|
||||||
|
|
||||||
local function create(systems: {System}): (number) -> ()
|
|
||||||
local frame = 0
|
|
||||||
local accumulator = 0
|
|
||||||
|
|
||||||
return function(delta_time: number)
|
|
||||||
delta_time = math.min(delta_time, MAXIMUM_DELTA)
|
|
||||||
accumulator += delta_time
|
|
||||||
|
|
||||||
local steps = 0
|
|
||||||
local previous_frame = frame
|
|
||||||
|
|
||||||
if (accumulator > 0) then
|
|
||||||
--> typically done with a while accumulator >= fixed_rate but this way is 35x faster
|
|
||||||
steps = accumulator // FIXED_DELTA
|
|
||||||
frame += steps
|
|
||||||
accumulator -= (steps * FIXED_DELTA)
|
|
||||||
end
|
|
||||||
|
|
||||||
for step = 1, steps do
|
|
||||||
local step_frame = previous_frame + step
|
|
||||||
for _, system in systems do
|
|
||||||
if system.fixed_update == nil then
|
|
||||||
continue
|
|
||||||
end
|
|
||||||
|
|
||||||
system.fixed_update(FIXED_DELTA, step_frame)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local blend = accumulator / FIXED_DELTA
|
|
||||||
for _, system in systems do
|
|
||||||
if system.update == nil then
|
|
||||||
continue
|
|
||||||
end
|
|
||||||
|
|
||||||
system.update(delta_time, blend)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return create
|
|
Loading…
Reference in a new issue