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}