mirror of
https://github.com/griffi-gh/kubi.git
synced 2024-12-23 04:18:21 -06:00
add pre_startup stage, use msaa settings in window init
This commit is contained in:
parent
896d80e074
commit
f15d2b1510
|
@ -51,7 +51,7 @@ use world::{
|
||||||
};
|
};
|
||||||
use player::{spawn_player, MainPlayer};
|
use player::{spawn_player, MainPlayer};
|
||||||
use prefabs::load_prefabs;
|
use prefabs::load_prefabs;
|
||||||
use settings::load_settings;
|
use settings::{load_settings, GameSettings};
|
||||||
use camera::compute_cameras;
|
use camera::compute_cameras;
|
||||||
use events::{
|
use events::{
|
||||||
clear_events,
|
clear_events,
|
||||||
|
@ -84,11 +84,17 @@ use gui::{render_gui, init_gui, update_gui};
|
||||||
use loading_screen::update_loading_screen;
|
use loading_screen::update_loading_screen;
|
||||||
use connecting_screen::switch_to_loading_if_connected;
|
use connecting_screen::switch_to_loading_if_connected;
|
||||||
|
|
||||||
|
/// stuff required to init the renderer and other basic systems
|
||||||
|
fn pre_startup() -> Workload {
|
||||||
|
(
|
||||||
|
load_settings,
|
||||||
|
).into_sequential_workload()
|
||||||
|
}
|
||||||
|
|
||||||
fn startup() -> Workload {
|
fn startup() -> Workload {
|
||||||
(
|
(
|
||||||
initial_resize_event,
|
initial_resize_event,
|
||||||
init_window_size,
|
init_window_size,
|
||||||
load_settings,
|
|
||||||
load_prefabs,
|
load_prefabs,
|
||||||
init_primitives,
|
init_primitives,
|
||||||
insert_lock_state,
|
insert_lock_state,
|
||||||
|
@ -171,19 +177,26 @@ fn main() {
|
||||||
//Create a shipyard world
|
//Create a shipyard world
|
||||||
let mut world = World::new();
|
let mut world = World::new();
|
||||||
|
|
||||||
//Create event loop
|
|
||||||
let event_loop = EventLoop::new();
|
|
||||||
|
|
||||||
//Add systems and uniques, Init and load things
|
|
||||||
world.add_unique_non_send_sync(Renderer::init(&event_loop));
|
|
||||||
world.add_unique(BackgroundColor(vec3(0.5, 0.5, 1.)));
|
|
||||||
|
|
||||||
//Register workloads
|
//Register workloads
|
||||||
|
world.add_workload(pre_startup);
|
||||||
world.add_workload(startup);
|
world.add_workload(startup);
|
||||||
world.add_workload(update);
|
world.add_workload(update);
|
||||||
world.add_workload(render);
|
world.add_workload(render);
|
||||||
world.add_workload(after_frame_end);
|
world.add_workload(after_frame_end);
|
||||||
|
|
||||||
|
//Run pre-startup procedure
|
||||||
|
world.run_workload(pre_startup).unwrap();
|
||||||
|
|
||||||
|
//Create event loop
|
||||||
|
let event_loop = EventLoop::new();
|
||||||
|
|
||||||
|
//Initialize renderer
|
||||||
|
{
|
||||||
|
let settings = world.borrow::<UniqueView<GameSettings>>().unwrap();
|
||||||
|
world.add_unique_non_send_sync(Renderer::init(&event_loop, &settings));
|
||||||
|
}
|
||||||
|
world.add_unique(BackgroundColor(vec3(0.5, 0.5, 1.)));
|
||||||
|
|
||||||
//Save _visualizer.json
|
//Save _visualizer.json
|
||||||
#[cfg(feature = "generate_visualizer_data")]
|
#[cfg(feature = "generate_visualizer_data")]
|
||||||
std::fs::write(
|
std::fs::write(
|
||||||
|
|
|
@ -9,7 +9,7 @@ use glium::{
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use glam::{Vec3, UVec2};
|
use glam::{Vec3, UVec2};
|
||||||
use crate::events::WindowResizedEvent;
|
use crate::{events::WindowResizedEvent, settings::GameSettings};
|
||||||
|
|
||||||
pub mod primitives;
|
pub mod primitives;
|
||||||
pub mod world;
|
pub mod world;
|
||||||
|
@ -29,13 +29,14 @@ pub struct Renderer {
|
||||||
pub display: Display
|
pub display: Display
|
||||||
}
|
}
|
||||||
impl Renderer {
|
impl Renderer {
|
||||||
pub fn init(event_loop: &EventLoop<()>) -> Self {
|
pub fn init(event_loop: &EventLoop<()>, settings: &GameSettings) -> Self {
|
||||||
log::info!("initializing display");
|
log::info!("initializing display");
|
||||||
let wb = WindowBuilder::new()
|
let wb = WindowBuilder::new()
|
||||||
.with_title("uwu")
|
.with_title("uwu")
|
||||||
.with_maximized(true);
|
.with_maximized(true);
|
||||||
let cb = ContextBuilder::new()
|
let cb = ContextBuilder::new()
|
||||||
.with_depth_buffer(24)
|
.with_depth_buffer(24)
|
||||||
|
.with_multisampling(settings.msaa.unwrap_or_default())
|
||||||
.with_gl_profile(GlProfile::Core);
|
.with_gl_profile(GlProfile::Core);
|
||||||
let display = Display::new(wb, cb, event_loop)
|
let display = Display::new(wb, cb, event_loop)
|
||||||
.expect("Failed to create a glium Display");
|
.expect("Failed to create a glium Display");
|
||||||
|
|
|
@ -2,7 +2,7 @@ use shipyard::{Unique, AllStoragesView};
|
||||||
|
|
||||||
#[derive(Unique)]
|
#[derive(Unique)]
|
||||||
pub struct GameSettings {
|
pub struct GameSettings {
|
||||||
pub msaa: Option<u8>,
|
pub msaa: Option<u16>,
|
||||||
pub max_anisotropy: Option<u16>,
|
pub max_anisotropy: Option<u16>,
|
||||||
/// there's a 1 chunk border of loaded but invisible around this
|
/// there's a 1 chunk border of loaded but invisible around this
|
||||||
pub render_distance: u8,
|
pub render_distance: u8,
|
||||||
|
@ -24,6 +24,7 @@ impl Default for GameSettings {
|
||||||
pub fn load_settings(
|
pub fn load_settings(
|
||||||
storages: AllStoragesView
|
storages: AllStoragesView
|
||||||
) {
|
) {
|
||||||
|
log::info!("loading game settings");
|
||||||
//todo
|
//todo
|
||||||
storages.add_unique(GameSettings::default());
|
storages.add_unique(GameSettings::default());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue