Skip to main content

lotus_script/
input.rs

1use lotus_script_sys::FfiObject;
2use lotus_shared::math::Vec2;
3
4pub use lotus_shared::input::*;
5
6/// Get the delta of the mouse since the last frame.
7/// TODO: Specify the units.
8pub fn mouse_delta() -> Vec2 {
9    let delta = unsafe { lotus_script_sys::input::mouse_delta() };
10    FfiObject::from_packed(delta).deserialize()
11}
12
13pub fn mouse_position() -> Vec2 {
14    let delta = unsafe { lotus_script_sys::input::mouse_position() };
15    FfiObject::from_packed(delta).deserialize()
16}
17
18#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
19pub enum MouseSteeringMode {
20    #[default]
21    Inactive,
22    Active,
23    ActiveBoost,
24}
25
26impl From<u32> for MouseSteeringMode {
27    fn from(value: u32) -> Self {
28        match value {
29            1 => Self::Active,
30            2 => Self::ActiveBoost,
31            _ => Self::Inactive,
32        }
33    }
34}
35
36pub fn mouse_steering_mode() -> MouseSteeringMode {
37    let active = unsafe { lotus_script_sys::input::mouse_steering_mode() };
38    active.into()
39}