From 3e11c6439fcbce6ae590b48f25c5276315c81f02 Mon Sep 17 00:00:00 2001
From: Joe Ardent <code@ardent.nebcorp.com>
Date: Sat, 29 Mar 2025 16:08:27 -0700
Subject: [PATCH] inline suspension force calc

---
 src/physics.rs | 31 ++++++++++---------------------
 1 file changed, 10 insertions(+), 21 deletions(-)

diff --git a/src/physics.rs b/src/physics.rs
index aa48da5..a32d6ba 100644
--- a/src/physics.rs
+++ b/src/physics.rs
@@ -213,9 +213,17 @@ mod systems {
                 CyberWheel::Rear => (rear_caster, rear_hits),
             };
 
-            let prev = &mut state.displacement;
             if let Some(hit) = hits.iter().next() {
-                let mag = suspension_force(caster, hit, config, prev, dt, &mut xform);
+                let dist = hit.distance;
+                let cdir = caster.direction.as_vec3();
+                xform.translation = config.attach + (cdir * dist);
+
+                let displacement = config.rest_dist - dist;
+                let damper_vel = (state.displacement - displacement) / dt;
+                state.displacement = displacement;
+
+                let mag = config.konstant * displacement - config.damping * damper_vel;
+
                 let mag = mag.max(0.0);
                 //let fdir = -caster.global_direction().as_vec3();
                 let fdir = hit.normal1;
@@ -252,25 +260,6 @@ mod systems {
         }
     }
 
-    fn suspension_force(
-        caster: &ShapeCaster,
-        hit: &ShapeHitData,
-        config: &WheelConfig,
-        previous_dispacement: &mut Scalar,
-        dt: Scalar,
-        wheel_xform: &mut Transform,
-    ) -> Scalar {
-        let dist = hit.distance;
-        let cdir = caster.direction.as_vec3();
-        wheel_xform.translation = config.attach + (cdir * dist);
-
-        let displacement = config.rest_dist - dist;
-        let damper_vel = (*previous_dispacement - displacement) / dt;
-
-        *previous_dispacement = displacement;
-        config.konstant * displacement - config.damping * damper_vel
-    }
-
     pub(super) fn tweak(
         mut config: Query<&mut WheelConfig>,
         mut keys: ResMut<ButtonInput<KeyCode>>,