mod celestial_object; mod game; mod game_state; use std::path::Path; use anyhow::Result; use ecs::*; use engine::prelude::*; use game::Game; use game_state::GameState; use skybox::SkyBox; const FREE_CAMERA_CONTROL: bool = false; fn main() -> Result<()> { let mut world_builder = World::builder(); let mut engine_ci = EngineCreateInfo::default(); engine_ci.resource_base_path = "/home/michaelh/Sync/space_game/".to_string(); engine_ci.asset_directories.gltf_file_directory = "objects".into(); Engine::new::(engine_ci, &mut world_builder)?; world_builder.add_system(10, GameState::update); world_builder.resources.insert(GameState::default()); let dir = Path::new("/home/michaelh/Sync/space_game/skybox"); 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(), )?; if FREE_CAMERA_CONTROL { let scene: &mut Scene = world_builder.resources.get_mut()?; let view = scene.view_mut(); let camera_control = FreeCameraControl::new(view)?; world_builder.resources.insert(camera_control); } Game::setup_updates(&mut world_builder)?; let mut world = world_builder.build(); Game::setup_scene(&mut world)?; world.run() }