55 lines
1.4 KiB
Rust
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()
|
|
}
|