strop_engine/editor/events/
channel.rs1use super::AppEvent;
5use std::sync::mpsc::{self, Receiver, SendError};
6
7#[derive(Clone)]
8pub struct EventSender {
9 sender: mpsc::Sender<AppEvent>,
10 owner: std::thread::Thread,
11}
12impl EventSender {
13 pub fn send(&self, event: AppEvent) -> Result<(), Box<SendError<AppEvent>>> {
14 self.sender.send(event).map_err(Box::new)?;
15 self.owner.unpark();
16 Ok(())
17 }
18}
19pub fn channel() -> (EventSender, Receiver<AppEvent>) {
20 let (sender, receiver) = mpsc::channel();
21 (
22 EventSender {
23 sender,
24 owner: std::thread::current(),
25 },
26 receiver,
27 )
28}
29
30pub const EVENTS_PER_TURN: usize = 32;
32pub const TURN_BUDGET: std::time::Duration = std::time::Duration::from_millis(2);