engine/examples/free_space/src/main.rs
2025-04-07 16:56:35 +02:00

55 lines
1.4 KiB
Rust

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::<GameState>(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()
}