aboutsummaryrefslogtreecommitdiff
path: root/examples/render-bsp/src/main.rs
diff options
context:
space:
mode:
authortcmal <me@aria.rip>2024-08-25 17:44:23 +0100
committertcmal <me@aria.rip>2024-08-25 17:44:23 +0100
commit47a0c0317cc774c19b78582bec9b5b09d56f569a (patch)
treed03471ea4e084ace9b95a2c5b7febb780b45bb63 /examples/render-bsp/src/main.rs
parentfb996488aa651cb2e7f46abc083c4318b47e77cd (diff)
feat(render): draw passes
Diffstat (limited to 'examples/render-bsp/src/main.rs')
-rw-r--r--examples/render-bsp/src/main.rs183
1 files changed, 0 insertions, 183 deletions
diff --git a/examples/render-bsp/src/main.rs b/examples/render-bsp/src/main.rs
deleted file mode 100644
index 73475c0..0000000
--- a/examples/render-bsp/src/main.rs
+++ /dev/null
@@ -1,183 +0,0 @@
-//! Renders ./example.bsp
-
-#[macro_use]
-extern crate stockton_input_codegen;
-
-#[macro_use]
-extern crate legion;
-
-use anyhow::{Context, Result};
-use log::warn;
-use std::collections::BTreeMap;
-use std::fs::File;
-use std::io::Read;
-use std::path::Path;
-use winit::{event::Event, event_loop::EventLoop, window::WindowBuilder};
-
-use egui::{containers::CentralPanel, Frame};
-use stockton_contrib::delta_time::*;
-use stockton_contrib::flycam::*;
-
-use stockton_input::{Axis, InputManager, Mouse};
-use stockton_levels::prelude::*;
-
-use stockton_render::error::full_error_display;
-use stockton_render::systems::*;
-use stockton_render::{Renderer, UiState, WindowEvent};
-
-use stockton_types::components::{CameraSettings, Transform};
-use stockton_types::{Session, Vector3};
-
-type MapFile = ();
-
-#[derive(InputManager, Default, Clone, Debug)]
-struct MovementInputs {
- #[axis]
- x: Axis,
-
- #[axis]
- y: Axis,
-
- #[axis]
- z: Axis,
-}
-
-impl FlycamInput for MovementInputs {
- fn get_x_axis(&self) -> &Axis {
- &self.x
- }
- fn get_y_axis(&self) -> &Axis {
- &self.y
- }
- fn get_z_axis(&self) -> &Axis {
- &self.z
- }
-}
-
-#[system]
-fn hello_world(#[resource] ui: &mut UiState) {
- CentralPanel::default()
- .frame(Frame::none())
- .show(ui.ctx(), |ui| {
- ui.heading("Hello, World!");
- });
-}
-
-fn main() {
- if let Err(err) = try_main() {
- eprintln!("{}", full_error_display(err));
- }
-}
-
-fn try_main() -> Result<()> {
- // Initialise logger
- simplelog::TermLogger::init(
- log::LevelFilter::Debug,
- simplelog::ConfigBuilder::new()
- .set_max_level(log::LevelFilter::Debug)
- .set_thread_mode(simplelog::ThreadLogMode::Names)
- .build(),
- simplelog::TerminalMode::Stderr,
- simplelog::ColorChoice::Auto,
- )
- .context("Error initialising logger")?;
-
- // Make a window
- let event_loop = EventLoop::new();
- let window = WindowBuilder::new()
- .build(&event_loop)
- .context("Error creating window")?;
-
- if window.set_cursor_grab(true).is_err() {
- warn!("warning: cursor not grabbed");
- }
- window.set_cursor_visible(false);
-
- // TODO: Parse the map file
- let map = todo!();
-
- // Create the UI State
- let mut ui = UiState::new();
-
- // Create the renderer
- let (renderer, tx) = Renderer::new(&window)?;
- let new_control_flow = renderer.update_control_flow.clone();
-
- // Populate the initial UI state
- ui.populate_initial_state(&renderer);
-
- // Create the input manager
- let manager = {
- use stockton_input::InputMutation::*;
- use MovementInputsFields::*;
-
- let mut actions = BTreeMap::new();
-
- actions.insert(17, (Z, PositiveAxis)); // W
- actions.insert(30, (X, NegativeAxis)); // A
- actions.insert(31, (Z, NegativeAxis)); // S
- actions.insert(32, (X, PositiveAxis)); // D
- actions.insert(29, (Y, NegativeAxis)); // Ctrl
- actions.insert(57, (Y, PositiveAxis)); // Space
-
- MovementInputsManager::new(actions)
- };
-
- // Load everything into the session
- let mut session = Session::new(
- move |resources| {
- resources.insert(ui);
- resources.insert(map);
- resources.insert(manager);
- resources.insert(Timing::default());
- resources.insert(Mouse::default());
- },
- move |schedule| {
- schedule
- .add_system(update_deltatime_system())
- .add_system(process_window_events_system::<MovementInputsManager, MapFile>())
- .flush()
- .add_system(hello_world_system())
- .add_system(flycam_move_system::<MovementInputsManager>())
- .flush();
- },
- );
-
- // Add our player entity
- let _player = session.world.push((
- Transform {
- position: Vector3::new(0.0, 0.0, 0.0),
- rotation: Vector3::new(0.0, 0.0, 0.0),
- },
- CameraSettings {
- far: 1024.0,
- fov: 90.0,
- near: 0.1,
- },
- FlycamControlled::new(512.0, 400.0),
- ));
-
- // Done loading - This is our main loop.
- // It just communicates events to the session and continuously ticks
- event_loop.run(move |event, _, flow| {
- match event {
- Event::MainEventsCleared => {
- window.request_redraw();
- }
- Event::RedrawRequested(_) => session.do_update(),
- _ => {
- if let Some(we) = WindowEvent::from(&event) {
- tx.send(we).unwrap()
- }
- }
- }
-
- // Update the control flow if the session has requested it.
- {
- let new_control_flow = new_control_flow.read().unwrap();
- if *new_control_flow != *flow {
- *flow = *new_control_flow;
- }
- };
- });
-}