From a477e0bb40747e980d4d2e6cb91501193fea2aa4 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Sat, 8 Jan 2022 22:53:34 -0800 Subject: [PATCH 1/3] Update deps. --- Cargo.lock | 93 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3e8e37e..591e4c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -152,14 +152,14 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bevy" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_internal", ] [[package]] name = "bevy-crevice-derive" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -169,7 +169,7 @@ dependencies = [ [[package]] name = "bevy_app" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_derive", "bevy_ecs", @@ -181,7 +181,7 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.5.0" +version = "0.6.0" dependencies = [ "anyhow", "bevy_app", @@ -206,7 +206,7 @@ dependencies = [ [[package]] name = "bevy_core" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_derive", @@ -220,7 +220,7 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_asset", @@ -231,7 +231,7 @@ dependencies = [ [[package]] name = "bevy_crevice" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy-crevice-derive", "bytemuck", @@ -241,7 +241,7 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_macro_utils", "quote", @@ -250,7 +250,7 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_core", @@ -261,7 +261,7 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.5.0" +version = "0.6.0" dependencies = [ "async-channel", "bevy_ecs_macros", @@ -277,7 +277,7 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -287,7 +287,7 @@ dependencies = [ [[package]] name = "bevy_gilrs" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_ecs", @@ -298,7 +298,7 @@ dependencies = [ [[package]] name = "bevy_gltf" -version = "0.5.0" +version = "0.6.0" dependencies = [ "anyhow", "base64", @@ -321,7 +321,7 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_ecs", @@ -331,7 +331,7 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_asset", @@ -362,7 +362,7 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.5.0" +version = "0.6.0" dependencies = [ "android_log-sys", "bevy_app", @@ -375,7 +375,7 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.5.0" +version = "0.6.0" dependencies = [ "cargo-manifest", "quote", @@ -384,7 +384,7 @@ dependencies = [ [[package]] name = "bevy_math" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_reflect", "glam", @@ -392,7 +392,7 @@ dependencies = [ [[package]] name = "bevy_pbr" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_asset", @@ -411,7 +411,7 @@ dependencies = [ [[package]] name = "bevy_reflect" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_reflect_derive", "bevy_utils", @@ -426,7 +426,7 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -437,7 +437,7 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.5.0" +version = "0.6.0" dependencies = [ "anyhow", "bevy_app", @@ -453,6 +453,7 @@ dependencies = [ "bevy_window", "bitflags", "codespan-reporting", + "copyless", "downcast-rs", "futures-lite", "hex", @@ -470,7 +471,7 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.5.0" +version = "0.6.0" dependencies = [ "anyhow", "bevy_app", @@ -487,7 +488,7 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_asset", @@ -500,7 +501,9 @@ dependencies = [ "bevy_render", "bevy_transform", "bevy_utils", + "bitflags", "bytemuck", + "copyless", "guillotiere", "rectangle-pack", "serde", @@ -509,7 +512,7 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.5.0" +version = "0.6.0" dependencies = [ "async-channel", "async-executor", @@ -521,7 +524,7 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.5.0" +version = "0.6.0" dependencies = [ "ab_glyph", "anyhow", @@ -543,7 +546,7 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_ecs", @@ -555,7 +558,7 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_asset", @@ -581,7 +584,7 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.5.0" +version = "0.6.0" dependencies = [ "ahash", "bevy_derive", @@ -593,7 +596,7 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bevy_app", "bevy_math", @@ -604,7 +607,7 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.5.0" +version = "0.6.0" dependencies = [ "approx", "bevy_app", @@ -914,9 +917,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -935,9 +938,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "97242a70df9b89a65d0b6df3c4bf5b9ce03c5b7309019777fbde37e7537f8762" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -948,9 +951,9 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b10ddc024425c88c2ad148c1b0fd53f4c6d38db9697c9f1588381212fa657c9" +checksum = "b979d76c9fcb84dffc80a73f7290da0f83e4c95773494674cb44b76d13a7a110" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -958,9 +961,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -1370,7 +1373,7 @@ dependencies = [ [[package]] name = "heron" -version = "0.12.1" +version = "0.13.0" dependencies = [ "bevy", "cfg_aliases", @@ -1381,7 +1384,7 @@ dependencies = [ [[package]] name = "heron_core" -version = "0.12.1" +version = "0.13.0" dependencies = [ "bevy", "cfg_aliases", @@ -1390,7 +1393,7 @@ dependencies = [ [[package]] name = "heron_macros" -version = "0.12.1" +version = "0.13.0" dependencies = [ "heron_core", "quote", @@ -1399,7 +1402,7 @@ dependencies = [ [[package]] name = "heron_rapier" -version = "0.12.1" +version = "0.13.0" dependencies = [ "bevy", "cfg_aliases", @@ -1455,9 +1458,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" dependencies = [ "autocfg", "hashbrown", From 5fba5af72e23c607aff5d99478b01380a02a5a39 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Sun, 9 Jan 2022 22:29:35 -0800 Subject: [PATCH 2/3] quick dep update --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 591e4c3..122b328 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1373,7 +1373,7 @@ dependencies = [ [[package]] name = "heron" -version = "0.13.0" +version = "1.0.1-rc.1" dependencies = [ "bevy", "cfg_aliases", @@ -1384,7 +1384,7 @@ dependencies = [ [[package]] name = "heron_core" -version = "0.13.0" +version = "1.0.1-rc.1" dependencies = [ "bevy", "cfg_aliases", @@ -1393,7 +1393,7 @@ dependencies = [ [[package]] name = "heron_macros" -version = "0.13.0" +version = "1.0.1-rc.1" dependencies = [ "heron_core", "quote", @@ -1402,7 +1402,7 @@ dependencies = [ [[package]] name = "heron_rapier" -version = "0.13.0" +version = "1.0.1-rc.1" dependencies = [ "bevy", "cfg_aliases", From 483dc3f8645e457e84c56ca04adad7333bfa28c0 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Wed, 12 Jan 2022 00:18:13 -0800 Subject: [PATCH 3/3] Refactor done, still works. Mostly resisted the urge to add or change functionality. Checks clean and should have the foundation for real game-focused devel going forward. --- src/camera.rs | 63 +++++++++++ src/flycam.rs | 295 ------------------------------------------------ src/geometry.rs | 67 +++++++++++ src/input.rs | 49 ++++++++ src/lib.rs | 15 ++- src/lights.rs | 209 ++++++++++++++++++++++++++++++++++ src/main.rs | 260 ++++-------------------------------------- src/physics.rs | 161 ++++++++++++++++++++++++++ src/ui.rs | 47 ++++++++ 9 files changed, 633 insertions(+), 533 deletions(-) create mode 100644 src/camera.rs delete mode 100644 src/flycam.rs create mode 100644 src/geometry.rs create mode 100644 src/input.rs create mode 100644 src/lights.rs create mode 100644 src/physics.rs create mode 100644 src/ui.rs diff --git a/src/camera.rs b/src/camera.rs new file mode 100644 index 0000000..f4a121b --- /dev/null +++ b/src/camera.rs @@ -0,0 +1,63 @@ +use bevy::prelude::*; + +use crate::{geometry::CyberBike, input::InputState, physics::MovementSettings}; + +pub(crate) const CAM_DIST: f32 = 50.0; + +#[derive(Component, Debug)] +pub struct CyberCam; + +fn setup_cybercam(mut commands: Commands) { + use crate::geometry::PLAYER_DIST; + commands + .spawn_bundle(PerspectiveCameraBundle { + transform: Transform::from_xyz(PLAYER_DIST + CAM_DIST, 0.0, 0.0) + .looking_at(Vec3::ZERO, Vec3::Y), + ..Default::default() + }) + .insert(CyberCam); +} + +fn follow_player( + bike_query: Query<(&Transform, &CyberBike), Without>, + mut cam_query: Query<(&mut Transform, &CyberCam), Without>, +) { + let (bike_xform, _) = bike_query.single(); + let up = bike_xform.translation.normalize(); + + let look_at = bike_xform.translation; + let cam_pos = bike_xform.translation + (bike_xform.back() * CAM_DIST * 1.3) + (up * CAM_DIST); + + let (mut cam_xform, _) = cam_query.single_mut(); + cam_xform.translation = cam_pos; + cam_xform.look_at(look_at, up); +} + +fn player_look( + settings: Res, + windows: Res, + time: Res