|
@@ -12,7 +12,6 @@ type callback_t = {
|
|
data?: any;
|
|
data?: any;
|
|
};
|
|
};
|
|
|
|
|
|
-let _sys_render_listeners: sys_callback_t[] = [];
|
|
|
|
let _sys_foreground_listeners: sys_callback_t[] = [];
|
|
let _sys_foreground_listeners: sys_callback_t[] = [];
|
|
let _sys_resume_listeners: sys_callback_t[] = [];
|
|
let _sys_resume_listeners: sys_callback_t[] = [];
|
|
let _sys_pause_listeners: sys_callback_t[] = [];
|
|
let _sys_pause_listeners: sys_callback_t[] = [];
|
|
@@ -56,7 +55,7 @@ function sys_start(ops: iron_window_options_t) {
|
|
iron_load_blob(data_path() + "draw_text.vert" + sys_shader_ext()),
|
|
iron_load_blob(data_path() + "draw_text.vert" + sys_shader_ext()),
|
|
iron_load_blob(data_path() + "draw_text.frag" + sys_shader_ext())
|
|
iron_load_blob(data_path() + "draw_text.frag" + sys_shader_ext())
|
|
);
|
|
);
|
|
- _iron_set_update_callback(sys_render_callback);
|
|
|
|
|
|
+ _iron_set_update_callback(sys_render);
|
|
_iron_set_drop_files_callback(sys_drop_files_callback);
|
|
_iron_set_drop_files_callback(sys_drop_files_callback);
|
|
iron_set_application_state_callback(sys_foreground_callback, sys_resume_callback, sys_pause_callback, sys_background_callback, sys_shutdown_callback);
|
|
iron_set_application_state_callback(sys_foreground_callback, sys_resume_callback, sys_pause_callback, sys_background_callback, sys_shutdown_callback);
|
|
iron_set_keyboard_down_callback(sys_keyboard_down_callback);
|
|
iron_set_keyboard_down_callback(sys_keyboard_down_callback);
|
|
@@ -85,10 +84,6 @@ function _sys_callback_create(f: ()=>void): sys_callback_t {
|
|
return cb;
|
|
return cb;
|
|
}
|
|
}
|
|
|
|
|
|
-function sys_notify_on_frames(listener: ()=>void) {
|
|
|
|
- array_push(_sys_render_listeners, _sys_callback_create(listener));
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
function sys_notify_on_app_state(on_foreground: ()=>void, on_resume: ()=>void, on_pause: ()=>void, on_background: ()=>void, on_shutdown: ()=>void) {
|
|
function sys_notify_on_app_state(on_foreground: ()=>void, on_resume: ()=>void, on_pause: ()=>void, on_background: ()=>void, on_shutdown: ()=>void) {
|
|
if (on_foreground != null) {
|
|
if (on_foreground != null) {
|
|
array_push(_sys_foreground_listeners, _sys_callback_create(on_foreground));
|
|
array_push(_sys_foreground_listeners, _sys_callback_create(on_foreground));
|
|
@@ -153,12 +148,6 @@ function sys_time(): f32 {
|
|
return iron_time() - _sys_start_time;
|
|
return iron_time() - _sys_start_time;
|
|
}
|
|
}
|
|
|
|
|
|
-function sys_render_callback() {
|
|
|
|
- for (let i: i32 = 0; i < _sys_render_listeners.length; ++i) {
|
|
|
|
- _sys_render_listeners[i].f();
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
function sys_drop_files_callback(file_path: string) {
|
|
function sys_drop_files_callback(file_path: string) {
|
|
sys_drop_files(file_path);
|
|
sys_drop_files(file_path);
|
|
}
|
|
}
|
|
@@ -358,7 +347,6 @@ let _sys_on_inits: callback_t[] = [];
|
|
let _sys_on_updates: callback_t[] = [];
|
|
let _sys_on_updates: callback_t[] = [];
|
|
let _sys_on_renders: callback_t[] = [];
|
|
let _sys_on_renders: callback_t[] = [];
|
|
let _sys_on_renders_2d: callback_t[] = [];
|
|
let _sys_on_renders_2d: callback_t[] = [];
|
|
-let _sys_pause_updates: bool = false;
|
|
|
|
let _sys_lastw: i32 = -1;
|
|
let _sys_lastw: i32 = -1;
|
|
let _sys_lasth: i32 = -1;
|
|
let _sys_lasth: i32 = -1;
|
|
let sys_on_resize: ()=>void = null;
|
|
let sys_on_resize: ()=>void = null;
|
|
@@ -395,10 +383,6 @@ function sys_y(): i32 {
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-function sys_init() {
|
|
|
|
- sys_notify_on_frames(sys_render);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
function sys_reset() {
|
|
function sys_reset() {
|
|
_sys_on_next_frames = [];
|
|
_sys_on_next_frames = [];
|
|
_sys_on_end_frames = [];
|
|
_sys_on_end_frames = [];
|
|
@@ -420,10 +404,26 @@ function _sys_run_callbacks(cbs: callback_t[]) {
|
|
}
|
|
}
|
|
|
|
|
|
function sys_update() {
|
|
function sys_update() {
|
|
- if (!_scene_ready) {
|
|
|
|
- return;
|
|
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+let _sys_time_last: f32 = 0.0;
|
|
|
|
+let _sys_time_real_delta: f32 = 0.0;
|
|
|
|
+let _sys_time_frequency: i32 = -1;
|
|
|
|
+
|
|
|
|
+function sys_delta(): f32 {
|
|
|
|
+ if (_sys_time_frequency < 0) {
|
|
|
|
+ _sys_time_frequency = sys_display_frequency();
|
|
}
|
|
}
|
|
- if (_sys_pause_updates) {
|
|
|
|
|
|
+ return (1 / _sys_time_frequency);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function sys_real_delta(): f32 {
|
|
|
|
+ return _sys_time_real_delta;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function sys_render() {
|
|
|
|
+ if (!_scene_ready) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -434,26 +434,12 @@ function sys_update() {
|
|
|
|
|
|
scene_update_frame();
|
|
scene_update_frame();
|
|
|
|
|
|
- let i: i32 = 0;
|
|
|
|
- let l: i32 = _sys_on_updates.length;
|
|
|
|
- while (i < l) {
|
|
|
|
- if (_sys_on_inits.length > 0) {
|
|
|
|
- _sys_run_callbacks(_sys_on_inits);
|
|
|
|
- array_splice(_sys_on_inits, 0, _sys_on_inits.length);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- let cb: callback_t = _sys_on_updates[i];
|
|
|
|
- cb.f(cb.data);
|
|
|
|
-
|
|
|
|
- // Account for removed traits
|
|
|
|
- if (l <= _sys_on_updates.length) {
|
|
|
|
- i++;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- l = _sys_on_updates.length;
|
|
|
|
- }
|
|
|
|
|
|
+ if (_sys_on_inits.length > 0) {
|
|
|
|
+ _sys_run_callbacks(_sys_on_inits);
|
|
|
|
+ array_splice(_sys_on_inits, 0, _sys_on_inits.length);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ _sys_run_callbacks(_sys_on_updates);
|
|
_sys_run_callbacks(_sys_on_end_frames);
|
|
_sys_run_callbacks(_sys_on_end_frames);
|
|
|
|
|
|
// Rebuild projection on window resize
|
|
// Rebuild projection on window resize
|
|
@@ -471,48 +457,13 @@ function sys_update() {
|
|
}
|
|
}
|
|
_sys_lastw = sys_w();
|
|
_sys_lastw = sys_w();
|
|
_sys_lasth = sys_h();
|
|
_sys_lasth = sys_h();
|
|
-}
|
|
|
|
-
|
|
|
|
-let _sys_time_last: f32 = 0.0;
|
|
|
|
-let _sys_time_real_delta: f32 = 0.0;
|
|
|
|
-let _sys_time_frequency: i32 = -1;
|
|
|
|
-
|
|
|
|
-function sys_delta(): f32 {
|
|
|
|
- if (_sys_time_frequency < 0) {
|
|
|
|
- _sys_time_frequency = sys_display_frequency();
|
|
|
|
- }
|
|
|
|
- return (1 / _sys_time_frequency);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-function sys_real_delta(): f32 {
|
|
|
|
- return _sys_time_real_delta;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-function sys_render() {
|
|
|
|
- sys_update();
|
|
|
|
|
|
|
|
_sys_time_real_delta = sys_time() - _sys_time_last;
|
|
_sys_time_real_delta = sys_time() - _sys_time_last;
|
|
_sys_time_last = sys_time();
|
|
_sys_time_last = sys_time();
|
|
|
|
|
|
- if (!_scene_ready) {
|
|
|
|
- sys_render_2d();
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (_sys_on_inits.length > 0) {
|
|
|
|
- _sys_run_callbacks(_sys_on_inits);
|
|
|
|
- array_splice(_sys_on_inits, 0, _sys_on_inits.length);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
scene_render_frame();
|
|
scene_render_frame();
|
|
_sys_run_callbacks(_sys_on_renders);
|
|
_sys_run_callbacks(_sys_on_renders);
|
|
- sys_render_2d();
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-function sys_render_2d() {
|
|
|
|
- if (_sys_on_renders_2d.length > 0) {
|
|
|
|
- _sys_run_callbacks(_sys_on_renders_2d);
|
|
|
|
- }
|
|
|
|
|
|
+ _sys_run_callbacks(_sys_on_renders_2d);
|
|
}
|
|
}
|
|
|
|
|
|
function _callback_create(f: (data?: any)=>void, data: any): callback_t {
|
|
function _callback_create(f: (data?: any)=>void, data: any): callback_t {
|