Skip to main content

lotus_script/
input.rs

1//! Maus-Eingabe und Tastatur-Aktionstypen.
2//!
3//! Mouse input and keyboard action types.
4
5use lotus_script_sys::FfiObject;
6use lotus_shared::math::Vec2;
7
8pub use lotus_shared::input::*;
9
10/// Gibt die Mausbewegung seit dem letzten Frame zurück.
11///
12/// Returns the mouse movement since the last frame.
13pub fn mouse_delta() -> Vec2 {
14    let delta = unsafe { lotus_script_sys::input::mouse_delta() };
15    FfiObject::from_packed(delta).deserialize()
16}
17
18/// Gibt die aktuelle Mausposition zurück.
19///
20/// Returns the current mouse position.
21pub fn mouse_position() -> Vec2 {
22    let delta = unsafe { lotus_script_sys::input::mouse_position() };
23    FfiObject::from_packed(delta).deserialize()
24}
25
26/// Modus der Mauslenkung für Straßenfahrzeuge.
27///
28/// Mouse steering mode for road vehicles.
29#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
30pub enum MouseSteeringMode {
31    /// Mauslenkung inaktiv.
32    ///
33    /// Mouse steering inactive.
34    #[default]
35    Inactive,
36    /// Mauslenkung aktiv.
37    ///
38    /// Mouse steering active.
39    Active,
40    /// Mauslenkung aktiv mit verstärkter Empfindlichkeit.
41    ///
42    /// Mouse steering active with boosted sensitivity.
43    ActiveBoost,
44}
45
46impl From<u32> for MouseSteeringMode {
47    fn from(value: u32) -> Self {
48        match value {
49            1 => Self::Active,
50            2 => Self::ActiveBoost,
51            _ => Self::Inactive,
52        }
53    }
54}
55
56/// Gibt den aktuellen Mauslenkungsmodus zurück.
57///
58/// Returns the current mouse steering mode.
59pub fn mouse_steering_mode() -> MouseSteeringMode {
60    let active = unsafe { lotus_script_sys::input::mouse_steering_mode() };
61    active.into()
62}