use crate::tree::{NodeId, UiTree};
use astrelis_core::math::Vec2;
#[derive(Debug, Clone)]
pub enum UiInputEvent {
MouseMove { position: Vec2 },
MouseDown {
position: Vec2,
button: MouseButtonKind,
},
MouseUp {
position: Vec2,
button: MouseButtonKind,
},
Scroll { position: Vec2, delta: Vec2 },
KeyDown { key: KeyEventData },
KeyUp { key: KeyEventData },
CharInput { ch: char },
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum MouseButtonKind {
Left,
Right,
Middle,
Other(u16),
}
#[derive(Debug, Clone)]
pub struct KeyEventData {
pub physical_key: astrelis_winit::event::PhysicalKey,
pub is_repeat: bool,
}
pub struct PluginEventContext<'a> {
pub tree: &'a mut UiTree,
pub mouse_position: Vec2,
pub hovered_node: Option<NodeId>,
}