wasm events to list, wm_char
This commit is contained in:
@@ -42,15 +42,12 @@ glb_wasm_export i32 wasm_temp_buff1_len = 127;
|
||||
glb_wasm_export char wasm_temp_buff2[128] = {[127] = 0x13};
|
||||
glb_wasm_export i32 wasm_temp_buff2_len = 127;
|
||||
|
||||
// @todo: event list
|
||||
global f64 wasm_dpr;
|
||||
global STACK(app_event_t, 256) wasm_events;
|
||||
global b32 wasm_event_failed_to_queue;
|
||||
|
||||
global f64 wasm_dpr;
|
||||
global f64 wasm_delta_time;
|
||||
global f64 wasm_time;
|
||||
global f64 wasm_last_time_milliseconds;
|
||||
global f64 wasm_app_init_time_milliseconds;
|
||||
global app_event_list_t wasm_event_list;
|
||||
|
||||
typedef struct wasm_cached_t wasm_cached_t;
|
||||
struct wasm_cached_t {
|
||||
@@ -58,16 +55,13 @@ struct wasm_cached_t {
|
||||
b8 ctrl, alt, meta, shift;
|
||||
} wasm_cached;
|
||||
|
||||
fn void app_update(void);
|
||||
fn void app_update(app_event_list_t eventswasm_event_list);
|
||||
fn void app_init(void);
|
||||
|
||||
fn void wasm_add_event(app_event_t event) {
|
||||
if (wasm_events.len < lengthof(wasm_events.data)) {
|
||||
STACK_PUSH(wasm_events, event);
|
||||
} else if (wasm_event_failed_to_queue == false) {
|
||||
wasm_event_failed_to_queue = true;
|
||||
debugf("failed to queue event");
|
||||
}
|
||||
app_event_t *ev = ma_push_type(tcx.temp, app_event_t);
|
||||
SLLQ_APPEND(wasm_event_list.first, wasm_event_list.last, ev);
|
||||
wasm_event_list.len += 1;
|
||||
}
|
||||
|
||||
fn_wasm_export void wasm_mouse_move(f64 x, f64 y, b32 ctrl, b32 shift, b32 alt, b32 meta) {
|
||||
@@ -191,7 +185,7 @@ fn_wasm_export void wasm_update(f64 width, f64 height, f64 dpr) {
|
||||
v2f64_t window_size = (v2f64_t){width / dpr, height / dpr};
|
||||
wasm_dpr = dpr;
|
||||
|
||||
if (wasm_events.len == 0) {
|
||||
if (wasm_event_list.first == NULL) {
|
||||
wasm_add_event((app_event_t){
|
||||
.kind = app_event_kind_update,
|
||||
.mouse_pos = wasm_cached.mouse_pos,
|
||||
@@ -202,14 +196,15 @@ fn_wasm_export void wasm_update(f64 width, f64 height, f64 dpr) {
|
||||
});
|
||||
}
|
||||
|
||||
for (i32 i = 0; i < wasm_events.len; i += 1) {
|
||||
wasm_events.data[i].dpr = dpr;
|
||||
wasm_events.data[i].window_size = window_size;
|
||||
for (app_event_t *ev = wasm_event_list.first; ev; ev = ev->next) {
|
||||
ev->dpr = dpr;
|
||||
ev->window_size = window_size;
|
||||
}
|
||||
|
||||
app_update();
|
||||
app_update(wasm_event_list);
|
||||
|
||||
wasm_events.len = 0;
|
||||
ma_set0(tcx.temp);
|
||||
zero_struct(&wasm_event_list);
|
||||
wasm_last_time_milliseconds = wasm_time;
|
||||
}
|
||||
|
||||
@@ -219,22 +214,6 @@ fn_wasm_export void wasm_init(void) {
|
||||
wasm_app_init_time_milliseconds = os_milliseconds_now();
|
||||
}
|
||||
|
||||
fn app_event_t *app_iterate_events(void) {
|
||||
return wasm_events.data;
|
||||
}
|
||||
|
||||
fn b32 app_is_event_valid(app_event_t *event) {
|
||||
return event < (wasm_events.data + wasm_events.len);
|
||||
}
|
||||
|
||||
fn void app_next_event(app_event_t **event) {
|
||||
event[0] += 1;
|
||||
}
|
||||
|
||||
fn app_event_t *app_get_last_event(void) {
|
||||
return wasm_events.data + wasm_events.len - 1;
|
||||
}
|
||||
|
||||
fn f64 app_get_anim_time(void) {
|
||||
return wasm_time;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user