use crate::plugin::Plugin;
use crate::resource::Resources;
use crate::time::Time;
pub struct TimePlugin;
impl Plugin for TimePlugin {
type Dependencies = ();
fn name(&self) -> &'static str {
"TimePlugin"
}
fn build(&self, resources: &mut Resources) {
resources.insert(Time::new());
tracing::debug!("TimePlugin: Registered Time resource");
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::EngineBuilder;
#[test]
fn test_time_plugin_registers_time() {
let engine = EngineBuilder::new().add_plugin(TimePlugin).build();
assert!(engine.get::<Time>().is_some());
}
#[test]
fn test_time_starts_at_zero() {
let engine = EngineBuilder::new().add_plugin(TimePlugin).build();
let time = engine.get::<Time>().unwrap();
assert_eq!(time.frame_count(), 0);
assert_eq!(time.time_scale(), 1.0);
}
}