qecs-core 0.0.13

Soon to be highly flexible Entity-Component-System framework, core lib.
Documentation
use std::any::Any;

pub trait SubsystemBase: Any + Send + Sync {
    fn on_before_frame(&mut self){}
    fn on_after_frame(&mut self){}

    fn on_before_pause(&mut self){}
    fn on_after_pause(&mut self){}
}

impl_downcast!(SubsystemBase);

downcast_methods!(SubsystemBase);

impl<T: SubsystemBase + ?Sized> SubsystemBase for Box<T> {
    fn on_before_frame(&mut self){ (**self).on_before_frame(); }
    fn on_after_frame(&mut self){ (**self).on_after_frame(); }
    fn on_before_pause(&mut self){ (**self).on_before_pause(); }
    fn on_after_pause(&mut self){ (**self).on_after_pause(); }
}