wowlab_engine_sim/lib.rs
1//! Deterministic simulation scheduling and telemetry accumulation.
2//!
3//! ```
4//! use wowlab_engine_ports::{Event, SimState};
5//! use wowlab_engine_sim::EventQueue;
6//! use wowlab_engine_telemetry::TelemetrySink;
7//! use wowlab_types::sim::SimTime;
8//!
9//! fn canonical_ports(_: Option<Event>, _: Option<SimState>, _: Option<TelemetrySink>) {}
10//!
11//! let mut queue = EventQueue::new();
12//! queue.push(Event::PlayerReady {
13//! t: SimTime::from_millis(25),
14//! });
15//! queue.push(Event::PlayerReady {
16//! t: SimTime::from_millis(10),
17//! });
18//!
19//! assert_eq!(queue.pop().map(|event| event.timestamp()), Some(SimTime::from_millis(10)));
20//! ```
21//!
22//! ```compile_fail
23//! use wowlab_engine_sim::{Event, SimState, TelemetrySink};
24//! ```
25
26mod engine;
27mod queue;
28mod telemetry;
29
30pub use engine::{SimEngine, SimEngineRefs};
31pub use queue::EventQueue;
32pub use telemetry::{RepresentativeIteration, RunningDpsStats, TelemetryAccumulator};
33
34/// Result of driving a simulation iteration.
35pub type Result<T> = std::result::Result<T, wowlab_engine_ports::SimRunError>;