geng-core 0.5.0

Game Engine (Core)
Documentation
use super::*;

#[cfg(target_arch = "wasm32")]
#[path = "web.rs"]
mod impl_web;

#[cfg(not(target_arch = "wasm32"))]
#[path = "native.rs"]
mod _impl;

#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum MouseButton {
    Left,
    Middle,
    Right,
}

#[derive(Debug, Copy, Clone)]
pub struct TouchPoint {
    pub position: Vec2<f64>,
}

#[derive(Debug, Clone)]
pub enum Event {
    MouseDown {
        position: Vec2<f64>,
        button: MouseButton,
    },
    MouseUp {
        position: Vec2<f64>,
        button: MouseButton,
    },
    MouseMove {
        position: Vec2<f64>,
    },
    Wheel {
        delta: f64,
    },
    TouchStart {
        touches: Vec<TouchPoint>,
    },
    TouchMove {
        touches: Vec<TouchPoint>,
    },
    TouchEnd,
    KeyDown {
        key: Key,
    },
    KeyUp {
        key: Key,
    },
}

impl Event {
    pub fn translate(&self, delta: Vec2<f64>) -> Self {
        let mut result = self.clone();
        use Event::*;
        match result {
            MouseDown {
                ref mut position, ..
            }
            | MouseUp {
                ref mut position, ..
            }
            | MouseMove { ref mut position } => *position += delta,
            TouchStart { ref mut touches } | TouchMove { ref mut touches } => {
                for touch in touches {
                    touch.position += delta;
                }
            }
            _ => {}
        }
        result
    }
}

#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum Key {
    Num0,
    Num1,
    Num2,
    Num3,
    Num4,
    Num5,
    Num6,
    Num7,
    Num8,
    Num9,

    A,
    B,
    C,
    D,
    E,
    F,
    G,
    H,
    I,
    J,
    K,
    L,
    M,
    N,
    O,
    P,
    Q,
    R,
    S,
    T,
    U,
    V,
    W,
    X,
    Y,
    Z,

    Escape,
    Space,
    Enter,
    Backspace,

    LShift,
    RShift,

    LCtrl,
    RCtrl,

    LAlt,
    RAlt,

    Left,
    Right,
    Up,
    Down,

    PageUp,
    PageDown,

    F1,
    F2,
    F3,
    F4,
    F5,
    F6,
    F7,
    F8,
    F9,
    F10,
    F11,
    F12,

    Unknown,
}