diff options
Diffstat (limited to 'engine/src/windowing.rs')
| -rw-r--r-- | engine/src/windowing.rs | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/engine/src/windowing.rs b/engine/src/windowing.rs index 5866c47..c79812a 100644 --- a/engine/src/windowing.rs +++ b/engine/src/windowing.rs @@ -11,7 +11,6 @@ use ecs::error::Error as EcsError; use raw_window_handle::{DisplayHandle, HandleError, HasDisplayHandle, WindowHandle}; use rfd::{MessageButtons, MessageDialog, MessageLevel}; use winit::application::ApplicationHandler; -use winit::dpi::PhysicalPosition; use winit::error::EventLoopError; use winit::event::{DeviceEvent, DeviceId, StartCause, WindowEvent}; use winit::event_loop::{ @@ -23,7 +22,6 @@ use winit::event_loop::{ use winit::keyboard::PhysicalKey; use winit::window::{Window as WinitWindow, WindowId as WinitWindowId}; -use crate::data_types::dimens::Dimens; use crate::ecs::actions::Actions; use crate::ecs::component::Component; use crate::ecs::entity::obtainer::Obtainer as EntityObtainer; @@ -35,6 +33,7 @@ use crate::ecs::system::observer::Observe; use crate::ecs::uid::Uid; use crate::ecs::{declare_entity, Query, Sole}; use crate::util::{AtomicTwoF64, MapVec}; +use crate::windowing::dpi::{PhysicalPosition, PhysicalSize, Position}; use crate::windowing::keyboard::{Key, KeyState, Keyboard, UnknownKeyCodeError}; use crate::windowing::mouse::{ Button as MouseButton, @@ -51,6 +50,7 @@ use crate::windowing::window::{ Window, }; +pub mod dpi; pub mod keyboard; pub mod mouse; pub mod window; @@ -178,11 +178,15 @@ fn update_stuff( .swap((0.0, 0.0), Ordering::Relaxed) .into(); - mouse.position = context + let absolute_mouse_pos = context .shared_state .absolute_mouse_pos - .load(Ordering::Relaxed) - .into(); + .load(Ordering::Relaxed); + + mouse.position = PhysicalPosition { + x: absolute_mouse_pos.0, + y: absolute_mouse_pos.1 + }; keyboard.set_text_keys(iter_array_queue(&context.shared_state.text_keys)); @@ -248,7 +252,7 @@ fn update_stuff( continue; }; - window.set_inner_size(new_window_size); + window.inner_size = new_window_size; window.set_changed(); } @@ -338,7 +342,7 @@ fn handle_window_changed( let window_apply_results = window.apply(winit_window); if let Err(actual_window_inner_size) = window_apply_results.inner_size_request { - window.set_inner_size(actual_window_inner_size); + window.inner_size = actual_window_inner_size; } context.try_send_message_to_app(MessageToApp::SetWindowCursorGrabMode( @@ -547,7 +551,7 @@ enum MessageFromApp { Init(OwnedDisplayHandle), WindowCreated(Uid, Arc<WinitWindow>, WindowCreationAttributes), - WindowResized(WindowId, Dimens<u32>), + WindowResized(WindowId, PhysicalSize<u32>), WindowCloseRequested(WindowId), WindowScaleFactorChanged(WindowId, f64), KeyboardKeyStateChanged(Key, KeyState), @@ -786,10 +790,10 @@ impl ApplicationHandler for App let window_size = window.inner_size(); - if let Err(err) = window.set_cursor_position(PhysicalPosition { - x: window_size.width / 2, - y: window_size.height / 2, - }) { + if let Err(err) = window.set_cursor_position(Position::Physical(PhysicalPosition { + x: window_size.width as i32 / 2, + y: window_size.height as i32 / 2, + })) { cold_path(); tracing::error!( window_id=?window_id, |
