// 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 }