euv-engine 0.28.30

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 ProbeScene {
    fn on_update(&mut self, delta_time: f64) {
        let mut total: RefMut<'_, f64> = self.updates.borrow_mut();
        *total += delta_time;
    }
}

impl Scene for ProbeScene {
    fn on_enter(&mut self) {
        let mut count: RefMut<'_, u32> = self.entered.borrow_mut();
        *count += 1;
    }

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

    fn on_render(&self, draw_list: &mut DrawList) {
        let _: &str = &self.name;
        draw_list.fill_circle(Vector2D::zero(), 1.0, Color::white());
    }

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

impl Probe {
    pub fn new(name: &str) -> Self {
        Self {
            name: name.to_string(),
            enters: Rc::new(Cell::new(0)),
            exits: Rc::new(Cell::new(0)),
            updates: Rc::new(Cell::new(0)),
        }
    }

    pub fn enters(&self) -> Rc<Cell<u32>> {
        Rc::clone(&self.enters)
    }

    pub fn exits(&self) -> Rc<Cell<u32>> {
        Rc::clone(&self.exits)
    }

    pub fn updates(&self) -> Rc<Cell<u32>> {
        Rc::clone(&self.updates)
    }
}

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

impl Scene for Probe {
    fn on_enter(&mut self) {
        self.enters.set(self.enters.get() + 1);
    }

    fn on_exit(&mut self) {
        self.exits.set(self.exits.get() + 1);
    }

    fn on_render(&self, draw_list: &mut DrawList) {
        let _: &mut DrawList = draw_list;
    }

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