diff options
| -rw-r--r-- | engine/src/ui/imgui.rs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/engine/src/ui/imgui.rs b/engine/src/ui/imgui.rs index 7dea7fb..75ce9c0 100644 --- a/engine/src/ui/imgui.rs +++ b/engine/src/ui/imgui.rs @@ -503,12 +503,11 @@ fn update_inputs( mouse_buttons: &MouseButtons, ) { + let io = context.ctx.get_io_mut(); + for (key, key_state) in keyboard.new_key_states() { if let Some(key) = key_to_imgui_key(key) { - context - .ctx - .get_io_mut() - .add_key_event(key, key_state.is_pressed()); + io.add_key_event(key, key_state.is_pressed()); } } @@ -517,22 +516,25 @@ fn update_inputs( continue; } - context.ctx.get_io_mut().add_input_character(character); + io.add_input_character(character); } + io.add_mouse_source_event(dear_imgui_rs::input::MouseSource::Mouse); + let mouse_pos = mouse.position.to_logical::<f64>(window.scale_factor()); - context - .ctx - .get_io_mut() - .add_mouse_pos_event([mouse_pos.x as f32, mouse_pos.y as f32]); + io.add_mouse_pos_event([mouse_pos.x as f32, mouse_pos.y as f32]); + + if !mouse.curr_tick_scroll_delta.is_zero() { + io.add_mouse_wheel_event([ + mouse.curr_tick_scroll_delta.hor_lines, + mouse.curr_tick_scroll_delta.vert_lines, + ]); + } for (mouse_button, mouse_button_state) in mouse_buttons.all_current() { if let Some(mouse_button) = mouse_button_to_imgui_mouse_button(mouse_button) { - context - .ctx - .get_io_mut() - .add_mouse_button_event(mouse_button, mouse_button_state.is_pressed()); + io.add_mouse_button_event(mouse_button, mouse_button_state.is_pressed()); } } } |
