bevy_undo2/
request.rs

1use bevy::ecs::system::SystemParam;
2use bevy::prelude::{Event, EventWriter, Res};
3use crate::counter::UndoCounter;
4
5#[derive(Event, Default, PartialEq, Debug, Copy, Clone, )]
6pub(crate) struct RequestUndoEvent(pub UndoCounter);
7
8
9#[derive(SystemParam)]
10pub struct UndoRequester<'w> {
11    ew: EventWriter<'w, RequestUndoEvent>,
12    counter: Res<'w, UndoCounter>
13}
14
15
16impl<'w> UndoRequester<'w> {
17    /// request undo-operation.
18    /// This will send the most recent event registered via [`UndoScheduler`](crate::undo_event::UndoScheduler).
19    #[inline(always)]
20    pub fn undo(&mut self) {
21        self.ew.send(RequestUndoEvent(*self.counter));
22    }
23}