From 180070c5afcceefd26a564e752cce5823b88a215 Mon Sep 17 00:00:00 2001
From: Joe Ardent <code@ardent.nebcorp.com>
Date: Sat, 25 Jan 2025 17:36:01 -0800
Subject: [PATCH] checkpoint

---
 src/action/systems.rs |  2 +-
 src/bike/body.rs      |  6 +++++-
 src/bike/wheels.rs    | 24 +++++++++++++++++++-----
 3 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/src/action/systems.rs b/src/action/systems.rs
index a9e77b7..4ab63e8 100644
--- a/src/action/systems.rs
+++ b/src/action/systems.rs
@@ -100,7 +100,7 @@ pub(super) fn apply_inputs(
     // steering
     let mut steering = steering.single_mut();
     let angle = yaw_to_angle(input.yaw);
-    let angle = if angle.is_normal() { angle } else { 0.0 };
+    let angle = if angle.is_normal() { -angle } else { 0.0 };
     let limit = AngleLimit::new(angle - 0.01, angle + 0.01);
     steering.angle_limit = Some(limit);
 }
diff --git a/src/bike/body.rs b/src/bike/body.rs
index e40c78e..a5f3330 100644
--- a/src/bike/body.rs
+++ b/src/bike/body.rs
@@ -1,4 +1,8 @@
-use avian3d::prelude::*;
+use avian3d::prelude::{
+    AngularDamping, AngularVelocity, CoefficientCombine, Collider, ColliderDensity,
+    CollisionLayers, ExternalTorque, Friction, LinearDamping, LinearVelocity, Restitution,
+    RigidBody, SleepingDisabled,
+};
 use bevy::{
     core::Name,
     prelude::{AssetServer, BuildChildren, Commands, Quat, Res, SpatialBundle, Transform, Vec3},
diff --git a/src/bike/wheels.rs b/src/bike/wheels.rs
index d91f2dd..e6ba2f1 100644
--- a/src/bike/wheels.rs
+++ b/src/bike/wheels.rs
@@ -1,5 +1,14 @@
-use avian3d::{math::FRAC_PI_2, prelude::*};
-use bevy::prelude::*;
+use avian3d::{
+    math::FRAC_PI_2,
+    prelude::{
+        Collider, ColliderDensity, CollisionLayers, CollisionMargin, ExternalTorque, FixedJoint,
+        Friction, Joint, MassPropertiesBundle, Restitution, RevoluteJoint, RigidBody, SweptCcd,
+    },
+};
+use bevy::prelude::{
+    AlphaMode, Assets, Color, Commands, Entity, Mesh, Name, PbrBundle, Quat, ResMut, Sphere,
+    StandardMaterial, Torus, Transform, Vec3,
+};
 
 use super::{CyberSteering, CyberWheel, Meshterial, WheelConfig};
 use crate::ColliderGroups;
@@ -50,6 +59,7 @@ pub fn spawn_wheels(
             mesh.clone(),
             collider.clone(),
             conf,
+            steering.is_some(),
         );
 
         if let Some(steering) = steering {
@@ -75,6 +85,7 @@ fn wheels_helper(
     tire_mesh: Mesh,
     collider: Collider,
     conf: &WheelConfig,
+    is_front: bool,
 ) -> Entity {
     let wheel_material = &StandardMaterial {
         base_color: Color::srgb(0.01, 0.01, 0.01),
@@ -83,14 +94,17 @@ fn wheels_helper(
         ..Default::default()
     };
 
+    let pos_name = if is_front { "front" } else { "rear" };
+
     let xform = Transform::from_translation(position);
     let hub_mesh: Mesh = Sphere::new(0.1).into();
 
     let hub = commands
         .spawn((
-            Name::new("hub"),
+            Name::new(format!("{pos_name} hub")),
             RigidBody::Dynamic,
-            MassPropertiesBundle::new_computed(&Collider::sphere(0.1), 200.0),
+            MassPropertiesBundle::new_computed(&Collider::sphere(0.1), 1000.0),
+            CollisionLayers::NONE,
             PbrBundle {
                 mesh: meshes.add(hub_mesh),
                 material: materials.add(wheel_material.clone()),
@@ -102,7 +116,7 @@ fn wheels_helper(
 
     let tire = commands
         .spawn((
-            Name::new("tire"),
+            Name::new(format!("{pos_name} tire")),
             PbrBundle {
                 mesh: meshes.add(tire_mesh),
                 material: materials.add(wheel_material.clone()),