From 483dc3f8645e457e84c56ca04adad7333bfa28c0 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Wed, 12 Jan 2022 00:18:13 -0800 Subject: [PATCH] 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