emerald 0.3.214

A lite, fully featured 2D game engine.
Documentation
use emerald::*;

pub fn main() {
    emerald::start(
        Box::new(ProfilingExample {
            world: World::new(),
        }),
        GameSettings::default(),
    )
}

pub struct ProfilingExample {
    world: World,
}
impl Game for ProfilingExample {
    fn initialize(&mut self, mut emd: Emerald) {
        let profile_initialize = "initialize";
        emd.profiler(profile_initialize).start_frame().unwrap();

        emd.set_asset_folder_root(String::from("./examples/assets/"));
        let sprite = emd.loader().sprite("bunny.png").unwrap();
        self.world.spawn((sprite, Transform::default()));

        let initialize_time = emd.profiler(profile_initialize).finish_frame().unwrap();
        println!("initialize time: {}", initialize_time);
    }

    fn update(&mut self, mut emd: Emerald) {
        emd.profiler("update").start_frame().unwrap();

        let update_time = emd.profiler("update").finish_frame().unwrap();
        println!("update time: {}", update_time);
    }

    fn draw(&mut self, mut emd: Emerald) {
        emd.profiler("draw").start_frame().unwrap();

        emd.graphics().begin().unwrap();
        emd.graphics().draw_world(&mut self.world).unwrap();
        emd.graphics().render().unwrap();

        let draw_time = emd.profiler("draw").finish_frame().unwrap();
        println!("draw time: {}", draw_time);
    }
}