aboutsummaryrefslogtreecommitdiff
path: root/examples/render-quad/src
diff options
context:
space:
mode:
authortcmal <me@aria.rip>2024-08-25 17:44:24 +0100
committertcmal <me@aria.rip>2024-08-25 17:44:24 +0100
commit4f068467c4954fb79e6ce297ae1ac0fdd2bdf16a (patch)
tree4b3ec44d068f71ab80e8c85a6515a8862407ac56 /examples/render-quad/src
parent5e6396ed225be9a9991705de10174b3cf085f8f0 (diff)
WIP refactor(skeleton): type state for context
also some api improvements closes #2 related: #7
Diffstat (limited to 'examples/render-quad/src')
-rw-r--r--examples/render-quad/src/main.rs50
1 files changed, 33 insertions, 17 deletions
diff --git a/examples/render-quad/src/main.rs b/examples/render-quad/src/main.rs
index 618779e..45c469a 100644
--- a/examples/render-quad/src/main.rs
+++ b/examples/render-quad/src/main.rs
@@ -19,7 +19,6 @@ use stockton_levels::{
types::Rgba,
};
use stockton_render::{
- camera::calc_vp_matrix_system,
level::{LevelDrawPass, LevelDrawPassConfig},
ui::UiDrawPass,
window::{process_window_events_system, UiState, WindowEvent, WindowFlow},
@@ -28,7 +27,7 @@ use stockton_skeleton::{
draw_passes::ConsDrawPass, error::full_error_display, texture::resolver::FsResolver, Renderer,
};
use stockton_types::{
- components::{CameraSettings, CameraVPMatrix, Transform},
+ components::{CameraSettings, Transform},
Session, Vector2, Vector3,
};
@@ -162,15 +161,10 @@ fn try_main() -> Result<()> {
let mut session = Session::new(move |schedule| {
schedule
.add_system(update_deltatime_system())
- .add_system(process_window_events_system::<
- MovementInputsManager,
- Dp<'static>,
- >())
+ .add_system(process_window_events_system::<MovementInputsManager>())
.flush()
.add_system(hello_world_system())
- .add_system(flycam_move_system::<MovementInputsManager>())
- .flush()
- .add_thread_local(calc_vp_matrix_system::<Dp<'static>>());
+ .add_system(flycam_move_system::<MovementInputsManager>());
});
session.resources.insert(map.clone());
@@ -190,7 +184,6 @@ fn try_main() -> Result<()> {
fov: 90.0,
near: 0.1,
},
- CameraVPMatrix::default(),
FlycamControlled::new(512.0, 400.0),
));
@@ -217,7 +210,7 @@ fn try_main() -> Result<()> {
ui.populate_initial_state(&renderer);
}
- session.resources.insert(renderer);
+ let mut renderer = Some(renderer);
// Done loading - This is our main loop.
// It just communicates events to the session and continuously ticks
@@ -228,15 +221,38 @@ fn try_main() -> Result<()> {
}
Event::RedrawRequested(_) => {
session.do_update();
- let mut renderer = session
- .resources
- .get_mut::<Renderer<Dp<'static>>>()
- .unwrap();
- renderer.render(&session).unwrap();
+ let r = renderer.take().unwrap();
+ match r.render(&session) {
+ Ok(r) => {
+ renderer = Some(r);
+ }
+ Err(e) => {
+ println!("Error drawing: {}", full_error_display(e));
+
+ // TODO: Not really sound
+ *(new_control_flow.write().unwrap()) = ControlFlow::Exit;
+ }
+ }
}
_ => {
if let Some(we) = WindowEvent::from(&event) {
- tx.send(we).unwrap()
+ tx.send(we).unwrap();
+
+ println!("{:?}", we);
+ if let WindowEvent::SizeChanged(_, _) = we {
+ let r = renderer.take().unwrap();
+ match r.recreate_surface(&session) {
+ Ok(r) => {
+ renderer = Some(r);
+ }
+ Err(e) => {
+ println!("Error resizing: {}", full_error_display(e));
+
+ // TODO: Not really sound
+ *(new_control_flow.write().unwrap()) = ControlFlow::Exit;
+ }
+ }
+ }
}
}
}