engine/examples/simple_window/src/main.rs

79 lines
1.8 KiB
Rust
Raw Normal View History

2025-03-01 05:43:44 +00:00
use std::path::Path;
2025-02-26 11:22:32 +00:00
use anyhow::Result;
2025-02-26 11:22:32 +00:00
use ecs::*;
use engine::prelude::*;
2025-03-01 05:43:44 +00:00
use skybox::SkyBox;
2025-02-26 11:22:32 +00:00
fn main() -> Result<()> {
let mut world_builder = World::builder();
2025-02-28 14:13:19 +00:00
Engine::new::<GameState>(EngineCreateInfo::default(), &mut world_builder)?;
world_builder.add_system(GameState::update);
world_builder.resources.insert(GameState::Startup);
2025-02-26 11:22:32 +00:00
2025-03-03 07:56:28 +00:00
let dir = Path::new("C:/Users/M.Huebner/Downloads/Space Skybox Generator/Export");
// let dir = Path::new("/home/michaelh/Sync/skybox");
2025-03-01 05:43:44 +00:00
SkyBox::new(
&mut world_builder,
[
dir.join("left.png"),
dir.join("right.png"),
dir.join("front.png"),
dir.join("back.png"),
dir.join("top.png"),
dir.join("bottom.png"),
]
.into_iter(),
)?;
2025-02-26 11:22:32 +00:00
world_builder.build().run()
}
2025-02-28 14:13:19 +00:00
enum GameState {
Startup,
Loading,
Menu,
Game(Game),
}
impl GameState {
fn update(world: &mut World) -> Result<bool> {
match world.resources.get_mut_unchecked::<Self>() {
GameState::Startup => (),
GameState::Loading => (),
GameState::Menu => (),
GameState::Game(game) => game.update(world)?,
}
Ok(true)
}
}
impl EventConsumer for GameState {
fn event(&mut self, world: &mut World, event: EngineEvent) -> Result<()> {
match self {
GameState::Startup => (),
GameState::Loading => (),
GameState::Menu => (),
GameState::Game(game) => game.event(world, event)?,
}
Ok(())
}
}
struct Game {}
impl Game {
fn update(&mut self, world: &mut World) -> Result<()> {
Ok(())
}
fn event(&mut self, world: &mut World, event: EngineEvent) -> Result<()> {
Ok(())
}
}