inline suspension force calc
This commit is contained in:
parent
7d28281781
commit
3e11c6439f
1 changed files with 10 additions and 21 deletions
|
@ -213,9 +213,17 @@ mod systems {
|
||||||
CyberWheel::Rear => (rear_caster, rear_hits),
|
CyberWheel::Rear => (rear_caster, rear_hits),
|
||||||
};
|
};
|
||||||
|
|
||||||
let prev = &mut state.displacement;
|
|
||||||
if let Some(hit) = hits.iter().next() {
|
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 mag = mag.max(0.0);
|
||||||
//let fdir = -caster.global_direction().as_vec3();
|
//let fdir = -caster.global_direction().as_vec3();
|
||||||
let fdir = hit.normal1;
|
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(
|
pub(super) fn tweak(
|
||||||
mut config: Query<&mut WheelConfig>,
|
mut config: Query<&mut WheelConfig>,
|
||||||
mut keys: ResMut<ButtonInput<KeyCode>>,
|
mut keys: ResMut<ButtonInput<KeyCode>>,
|
||||||
|
|
Loading…
Reference in a new issue