From ecfa9b586428f7afbeb6b8af5a0a41fc6cea795b Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Thu, 25 Jul 2024 15:49:10 -0700 Subject: [PATCH] ready to enable input --- src/action/components.rs | 6 +- src/action/mod.rs | 16 +--- src/action/systems.rs | 152 ++++++----------------------- src/bike/body.rs | 7 +- src/bike/components.rs | 17 ++-- src/bike/wheels.rs | 202 +++++++++++++++++---------------------- src/camera.rs | 17 ++-- src/lights.rs | 8 +- src/planet.rs | 6 +- src/ui.rs | 17 ++-- 10 files changed, 165 insertions(+), 283 deletions(-) diff --git a/src/action/components.rs b/src/action/components.rs index fc38312..bb68eec 100644 --- a/src/action/components.rs +++ b/src/action/components.rs @@ -37,7 +37,7 @@ impl Default for MovementSettings { fn default() -> Self { Self { accel: 20.0, - gravity: 4.8, + gravity: 9.8, } } } @@ -53,9 +53,9 @@ pub struct CatControllerSettings { impl Default for CatControllerSettings { fn default() -> Self { Self { - kp: 80.0, + kp: 1200.0, kd: 10.0, - ki: 0.4, + ki: 50.0, } } } diff --git a/src/action/mod.rs b/src/action/mod.rs index abad0bc..763ecd4 100644 --- a/src/action/mod.rs +++ b/src/action/mod.rs @@ -1,6 +1,6 @@ use avian3d::prelude::{PhysicsPlugins, SubstepCount}; use bevy::{ - app::Update, + app::FixedUpdate, diagnostic::FrameTimeDiagnosticsPlugin, ecs::reflect::ReflectResource, prelude::{App, IntoSystemConfigs, Plugin, Resource}, @@ -29,18 +29,10 @@ impl Plugin for CyberActionPlugin { .register_type::() .register_type::() .add_plugins((PhysicsPlugins::default(), FrameTimeDiagnosticsPlugin)) - .insert_resource(SubstepCount(6)) + .insert_resource(SubstepCount(12)) .add_systems( - Update, - ( - set_gravity, - clear_forces, - calculate_lean, - apply_lean, - //#[cfg(feature = "inspector")] - debug_bodies, - ) - .chain(), + FixedUpdate, + (set_gravity, calculate_lean, apply_lean).chain(), ); } } diff --git a/src/action/systems.rs b/src/action/systems.rs index 5c57305..d382bfe 100644 --- a/src/action/systems.rs +++ b/src/action/systems.rs @@ -1,18 +1,16 @@ use std::f32::consts::{FRAC_PI_3, FRAC_PI_4}; use avian3d::{ - collision::Collisions, dynamics::solver::xpbd::AngularConstraint, - prelude::{ - ColliderMassProperties, Collision, ExternalForce, ExternalTorque, Gravity, LinearVelocity, - PrismaticJoint, RigidBodyQuery, - }, + prelude::{ExternalTorque, FixedJoint, Gravity, LinearVelocity, RigidBodyQuery}, }; -use bevy::prelude::{EventReader, Quat, Query, Res, ResMut, Time, Transform, Vec3, With, Without}; +#[cfg(feature = "inspector")] +use bevy::prelude::Gizmos; +use bevy::prelude::{Quat, Query, Res, ResMut, Time, Transform, Vec3, With, Without}; use super::{CatControllerSettings, CatControllerState, CyberLean, MovementSettings}; use crate::{ - bike::{CyberBikeBody, CyberFork, CyberSpring, CyberSteering, CyberWheel, WheelConfig}, + bike::{CyberBikeBody, CyberFork, CyberSteering, CyberWheel}, input::InputState, }; @@ -39,7 +37,6 @@ fn rotate_point(pt: &Vec3, rot: &Quat) -> Vec3 { /// The gravity vector points from the cyberbike to the center of the planet. pub(super) fn set_gravity( xform: Query<&Transform, With>, - settings: Res, mut gravity: ResMut, ) { @@ -47,42 +44,6 @@ pub(super) fn set_gravity( *gravity = Gravity(xform.translation.normalize() * -settings.gravity); } -pub(super) fn clear_forces( - mut forces: Query<(Option<&mut ExternalForce>, Option<&mut ExternalTorque>)>, -) { - for (force, torque) in forces.iter_mut() { - if let Some(mut force) = force { - force.clear(); - } - if let Some(mut torque) = torque { - torque.clear(); - } - } -} - -pub(super) fn suspension( - movment_settings: Res, - wheel_config: Res, - time: Res