vert 0.1.1

The 51th Rust Game Engine, to write the 6th Game in Rust
Documentation
use glam::vec3;
use vert_framework::{
    app::App,
    flow::Flow,
    modules::{
        assets::fetchable_asset::{AssetSource, ImageAsset, LoadingAsset},
        graphics::elements::color_mesh::SingleColorMesh,
        Modules,
    },
    state::StateT,
};

pub enum MyImg {
    Loading(LoadingAsset<ImageAsset>),
    Loaded(ImageAsset),
    Error(anyhow::Error),
}

pub struct MyState {
    img: MyImg,
}

impl StateT for MyState {
    async fn initialize(modules: &mut Modules) -> anyhow::Result<Self> {
        // let system_id = modules.add_system();

        let source: AssetSource = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ6ttcadfmj7-DuD3JDobVHUXcGFNcreMPMjKm3nq-keA&s".into();
        dbg!(&source);
        let loading_asset = source.fetch_in_background();
        Ok(MyState {
            img: MyImg::Loading(loading_asset),
        })
    }

    fn update(&mut self, modules: &mut Modules) -> Flow {
        let label = match &self.img {
            MyImg::Loading(_) => "Loading".to_string(),
            MyImg::Loaded(img) => format!("Loaded, dims: {:?}", img.rgba.dimensions()),
            MyImg::Error(err) => format!("Error: {err}",),
        };

        egui::Window::new("Asset test").show(&mut modules.egui(), |ui| {
            ui.label(label);
        });

        match &mut self.img {
            MyImg::Loading(l) => {
                match l.get() {
                    Some(Ok(img)) => {
                        println!(
                            "Received image after {} seconds",
                            modules.time().total_secs()
                        );
                        self.img = MyImg::Loaded(img);
                    }
                    Some(Err(err)) => {
                        println!("Received error: {err}");
                        self.img = MyImg::Error(err);
                    }
                    None => {}
                };
            }
            _ => {}
        }

        Flow::Continue
    }

    fn prepare(&mut self, modules: &wgpu::Queue, encoder: &mut wgpu::CommandEncoder) {}
}

fn main() {
    App::<MyState>::run().unwrap();
}