pub mod callback;
pub mod decorator;
mod frame_resolution;
pub mod ndarray;
pub mod replay_data;
pub mod replay_data_heuristics;
pub mod stats;
pub mod stats_timeline;
pub mod stats_timeline_types;
pub use self::ndarray::*;
pub use callback::*;
pub use decorator::*;
pub use frame_resolution::StatsFrameResolution;
pub use replay_data::*;
pub use replay_data_heuristics::*;
pub use stats::*;
pub use stats_timeline::*;
pub use stats_timeline_types::*;
use crate::*;
use boxcars;
pub enum TimeAdvance {
Time(f32),
NextFrame,
}
pub trait Collector {
fn process_frame(
&mut self,
processor: &ReplayProcessor,
frame: &boxcars::Frame,
frame_number: usize,
current_time: f32,
) -> SubtrActorResult<TimeAdvance>;
fn process_replay(mut self, replay: &boxcars::Replay) -> SubtrActorResult<Self>
where
Self: Sized,
{
ReplayProcessor::new(replay)?.process(&mut self)?;
Ok(self)
}
fn finish_replay(&mut self, _processor: &ReplayProcessor) -> SubtrActorResult<()> {
Ok(())
}
}
impl<G> Collector for G
where
G: FnMut(&ReplayProcessor, &boxcars::Frame, usize, f32) -> SubtrActorResult<TimeAdvance>,
{
fn process_frame(
&mut self,
processor: &ReplayProcessor,
frame: &boxcars::Frame,
frame_number: usize,
current_time: f32,
) -> SubtrActorResult<TimeAdvance> {
self(processor, frame, frame_number, current_time)
}
}