use std::rc::Rc;
use crate::engine::d2::display::Sprite;
use super::{MouseEvent, TouchPoint};
#[derive(Clone, Debug)]
pub enum EventSource {
Mouse { event: MouseEvent },
Touch { point: TouchPoint },
}
#[derive(Default, Clone, Debug)]
pub struct PointerEvent {
pub view_x: f32,
pub view_y: f32,
pub hit: Option<Sprite>,
pub source: Option<EventSource>,
pub id: i32,
pub stopped: bool,
}
impl PointerEvent {
pub fn new() -> Self {
Self {
id: 0,
view_x: 0.0,
view_y: 0.0,
hit: None,
source: None,
stopped: false,
}
}
#[inline]
pub fn stop_propagation(&mut self) {
self.stopped = true;
}
pub fn init(
&mut self,
id: i32,
view_x: f32,
view_y: f32,
hit: Option<Sprite>,
source: Option<EventSource>,
) {
self.id = id;
self.view_x = view_x;
self.view_y = view_y;
self.hit = hit;
self.source = source;
self.stopped = false;
}
}