euv-engine 0.28.27

A high-performance 2D game engine built on the euv framework, featuring ECS, fixed-timestep game loop, canvas rendering, physics, collision detection, sprite animation, and audio.
Documentation
use super::*;

impl Lifecycle for CountingComponent {
    fn on_update(&mut self, delta_time: f64) {
        let _: f64 = delta_time;
        let mut count: RefMut<'_, u32> = self.updates.borrow_mut();
        *count += 1;
    }
}

impl Component for CountingComponent {
    fn on_start(&mut self) {
        let mut count: RefMut<'_, u32> = self.started.borrow_mut();
        *count += 1;
    }

    fn on_render(&self, draw_list: &mut DrawList, transform: &Transform2D) {
        let _: &Transform2D = transform;
        let position: Vector2D = transform.get_position();
        draw_list.fill_circle(position, 1.0, Color::white());
    }

    fn on_destroy(&mut self) {
        let mut count: RefMut<'_, u32> = self.destroyed.borrow_mut();
        *count += 1;
    }

    fn name(&self) -> &str {
        &self.name
    }
}

impl Recorder {
    pub fn new(
        starts: Rc<Cell<u32>>,
        updates: Rc<Cell<u32>>,
        renders: Rc<Cell<u32>>,
        destroys: Rc<Cell<u32>>,
        name: String,
    ) -> Self {
        Self {
            starts,
            updates,
            renders,
            destroys,
            name,
        }
    }
}

impl Lifecycle for Recorder {
    fn on_update(&mut self, delta_time: f64) {
        let _: f64 = delta_time;
        self.updates.set(self.updates.get() + 1);
    }
}

impl Component for Recorder {
    fn on_start(&mut self) {
        self.starts.set(self.starts.get() + 1);
    }

    fn on_render(&self, draw_list: &mut DrawList, transform: &Transform2D) {
        let _: &Transform2D = transform;
        let _: &mut DrawList = draw_list;
        self.renders.set(self.renders.get() + 1);
    }

    fn on_destroy(&mut self) {
        self.destroys.set(self.destroys.get() + 1);
    }

    fn name(&self) -> &str {
        &self.name
    }
}