use derivative::Derivative;
use winit::Event;
use crate::{
core::{
ecs::{Read, SystemData, World},
shrev::{EventChannel, ReaderId},
EventReader,
},
derive::EventReader,
input::{BindingTypes, InputEvent, StringBindings},
ui::UiEvent,
};
#[derive(Debug, Derivative, EventReader)]
#[derivative(Clone(bound = ""))]
#[reader(StateEventReader)]
pub enum StateEvent<T = StringBindings>
where
T: BindingTypes,
{
Window(Event),
Ui(UiEvent),
Input(InputEvent<T>),
}