WIP crisper camera controls (fix direction of thrust)

This commit is contained in:
yuni 2024-11-17 01:05:06 +01:00
parent 3a7ab8c9ac
commit a3f1f4bd73

View file

@ -834,7 +834,8 @@ fn handle_wants_acceleration(
if accel.brake { if accel.brake {
if let Some(target_v) = closest_map.get(&entity) { if let Some(target_v) = closest_map.get(&entity) {
delta_v = *target_v - v.0; let stop_direction = (*target_v - v.0).as_vec3();
delta_v = (trans.rotation.inverse() * stop_direction).as_dvec3();
if delta_v.length_squared() > 0.003 { if delta_v.length_squared() > 0.003 {
engine.currently_matching_velocity = true; engine.currently_matching_velocity = true;
thruster_on = true; thruster_on = true;
@ -844,7 +845,7 @@ fn handle_wants_acceleration(
if accel.direction != DVec3::ZERO { if accel.direction != DVec3::ZERO {
// Player is pressing AWSD keys // Player is pressing AWSD keys
delta_v += (trans.rotation * accel.direction.as_vec3()).as_dvec3(); delta_v += accel.direction;
} else if accel.brake { } else if accel.brake {
// Player is only pressing space // Player is only pressing space
allow_fullstop = true; allow_fullstop = true;
@ -869,7 +870,9 @@ fn handle_wants_acceleration(
* ENGINE_SPEED_FACTOR as f64 * ENGINE_SPEED_FACTOR as f64
* engine.current_boost_factor; * engine.current_boost_factor;
let final_accel = delta_v.normalize() * engine_factor * dt as f64; let final_accel =
(trans.rotation * (delta_v.normalize() * engine_factor).as_vec3() * dt)
.as_dvec3();
// Apply acceleration to velocity // Apply acceleration to velocity
if allow_fullstop { if allow_fullstop {