Files
cell/scripts/modules/loop.js

57 lines
1.1 KiB
JavaScript

// loop.js
var render = use('render') // The refactored file above
var layout = use('clay')
var input = use('input')
var emitter = use('emitter')
var os = use('os')
var event = use('event')
var imgui = use('imgui')
var tracy = use('tracy')
var waittime = 1/240
var last_frame_time = 0
var frame_t = 0
var fpses = []
var timescale = 1
var dmon = use('dmon')
function dmon_cb(e) { prosperon.dispatch('dmon', e) }
function step() {
if (dmon)
dmon.poll(dmon_cb)
var now = os.now()
var dt = now - last_frame_time
if (dt < waittime) os.sleep(waittime - dt)
last_frame_time = os.now()
dt = last_frame_time - frame_t
frame_t = last_frame_time
event.engine_input(e => prosperon.dispatch(e.type, e))
layout.newframe()
prosperon.appupdate(dt)
input.procdown()
emitter.update(dt * timescale)
os.update_timers(dt * timescale)
prosperon.update(dt * timescale)
render.setup_draw()
render.setup_hud()
if (imgui) imgui.prosperon_menu();
// Now do the GPU present (calls gpupresent in render.js)
render._main.present()
tracy.end_frame()
}
// Return or export them so you can call from a main script
return {
step
}