ui expander working!
This commit is contained in:
@@ -255,18 +255,19 @@ type_t type__app_event_kind_t = { type_kind_enum, s8_const_lit("app_event_kind_t
|
||||
};
|
||||
type_t type__app_event_t = { type_kind_struct, s8_const_lit("app_event_t"), sizeof(app_event_t),
|
||||
.members = (type_member_t[]){
|
||||
{.name = s8_const_lit("id"), .type = &type__u64, .offset = offsetof(app_event_t, id), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("next"), .type = &(type_t){type_kind_pointer, s8_const_lit("app_event_t*"), sizeof(void *), .base = &type__app_event_t}, .offset = offsetof(app_event_t, next), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("kind"), .type = &type__app_event_kind_t, .offset = offsetof(app_event_t, kind), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("mouse_button"), .type = &type__app_mouse_button_t, .offset = offsetof(app_event_t, mouse_button), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("key"), .type = &type__app_key_t, .offset = offsetof(app_event_t, key), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("text"), .type = &type__s8_t, .offset = offsetof(app_event_t, text), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("mouse_wheel_delta"), .type = &type__v3f32_t, .offset = offsetof(app_event_t, mouse_wheel_delta), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("mouse_pos"), .type = &type__v2f32_t, .offset = offsetof(app_event_t, mouse_pos), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("ctrl"), .type = &type__b8, .offset = offsetof(app_event_t, ctrl), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("shift"), .type = &type__b8, .offset = offsetof(app_event_t, shift), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("alt"), .type = &type__b8, .offset = offsetof(app_event_t, alt), .dont_serialize = 0},
|
||||
{.name = s8_const_lit("mouse_pos"), .type = &type__v2f32_t, .offset = offsetof(app_event_t, mouse_pos), .dont_serialize = 0},
|
||||
},
|
||||
.count = 10,
|
||||
.count = 11,
|
||||
};
|
||||
type_t type__app_frame_t = { type_kind_struct, s8_const_lit("app_frame_t"), sizeof(app_frame_t),
|
||||
.members = (type_member_t[]){
|
||||
|
||||
@@ -93,16 +93,17 @@ typedef enum {
|
||||
|
||||
typedef struct app_event_t app_event_t;
|
||||
struct app_event_t {
|
||||
u64 id;
|
||||
app_event_t* next;
|
||||
app_event_kind_t kind;
|
||||
app_mouse_button_t mouse_button;
|
||||
app_key_t key;
|
||||
s8_t text;
|
||||
v3f32_t mouse_wheel_delta;
|
||||
v2f32_t mouse_pos;
|
||||
b8 ctrl;
|
||||
b8 shift;
|
||||
b8 alt;
|
||||
v2f32_t mouse_pos;
|
||||
};
|
||||
|
||||
typedef struct app_frame_t app_frame_t;
|
||||
|
||||
@@ -158,7 +158,9 @@ void meta_app(ma_arena_t *arena) {
|
||||
app_event_kind_count,
|
||||
} app_event_kind_t;
|
||||
|
||||
typedef struct app_event_t app_event_t;
|
||||
struct app_event_t {
|
||||
u64 id;
|
||||
app_event_t *next;
|
||||
app_event_kind_t kind;
|
||||
|
||||
@@ -167,14 +169,15 @@ void meta_app(ma_arena_t *arena) {
|
||||
app_key_t key; // @key_down @key_up
|
||||
s8_t text; // @text
|
||||
v3f32_t mouse_wheel_delta; // @mouse_wheel
|
||||
v2f32_t mouse_pos; // @mouse_move
|
||||
|
||||
// always present data
|
||||
b8 ctrl;
|
||||
b8 shift;
|
||||
b8 alt;
|
||||
v2f32_t mouse_pos;
|
||||
};
|
||||
|
||||
typedef struct app_frame_t app_frame_t;
|
||||
struct app_frame_t {
|
||||
app_frame_t *next;
|
||||
f64 delta;
|
||||
|
||||
@@ -59,10 +59,13 @@ fn f64 w32_seconds_now(void) {
|
||||
|
||||
gb app_frame_t *w32_frame;
|
||||
gb ma_arena_t *w32_event_arena;
|
||||
gb u64 w32_event_id;
|
||||
|
||||
fn void w32_push_event(app_frame_t *frame, app_event_t event) {
|
||||
app_event_t *ev = ma_push_type(w32_event_arena, app_event_t);
|
||||
*ev = event;
|
||||
ev->id = ++w32_event_id;
|
||||
ev->mouse_pos = w32_get_mouse_pos(w32_window_handle);
|
||||
|
||||
if (GetKeyState(VK_CONTROL) & 0x8000) ev->ctrl = true;
|
||||
if (GetKeyState(VK_SHIFT) & 0x8000) ev->shift = true;
|
||||
@@ -156,6 +159,11 @@ fn LRESULT CALLBACK w32_window_proc(HWND wnd, UINT msg, WPARAM wparam, LPARAM lp
|
||||
});
|
||||
} break;
|
||||
|
||||
// case WM_MOUSEMOVE: {
|
||||
// w32_push_event(w32_frame, (app_event_t){
|
||||
// .kind = app_event_kind_mouse_move,
|
||||
// });
|
||||
// } break;
|
||||
case WM_MOUSEWHEEL: {
|
||||
int zDelta = GET_WHEEL_DELTA_WPARAM(wparam);
|
||||
w32_push_event(w32_frame, (app_event_t){
|
||||
|
||||
Reference in New Issue
Block a user