adapt FoV to g force rather than speed
This commit is contained in:
parent
98dad7dee4
commit
1c9bcd7208
29
src/actor.rs
29
src/actor.rs
|
@ -78,16 +78,16 @@ impl Default for HitPoints {
|
||||||
pub struct ExperiencesGForce {
|
pub struct ExperiencesGForce {
|
||||||
pub gforce: f32,
|
pub gforce: f32,
|
||||||
pub damage_threshold: f32,
|
pub damage_threshold: f32,
|
||||||
pub blackout_threshold: f32,
|
pub visual_effect_threshold: f32,
|
||||||
pub blackout: f32,
|
pub visual_effect: f32,
|
||||||
pub last_linear_velocity: DVec3,
|
pub last_linear_velocity: DVec3,
|
||||||
pub ignore_gforce_seconds: f32,
|
pub ignore_gforce_seconds: f32,
|
||||||
}
|
}
|
||||||
impl Default for ExperiencesGForce { fn default() -> Self { Self {
|
impl Default for ExperiencesGForce { fn default() -> Self { Self {
|
||||||
gforce: 0.0,
|
gforce: 0.0,
|
||||||
damage_threshold: 100.0,
|
damage_threshold: 100.0,
|
||||||
blackout_threshold: 20.0,
|
visual_effect_threshold: 20.0,
|
||||||
blackout: 0.0,
|
visual_effect: 0.0,
|
||||||
last_linear_velocity: DVec3::splat(0.0),
|
last_linear_velocity: DVec3::splat(0.0),
|
||||||
ignore_gforce_seconds: 0.0,
|
ignore_gforce_seconds: 0.0,
|
||||||
}}}
|
}}}
|
||||||
|
@ -466,17 +466,14 @@ fn handle_gforce(
|
||||||
hp.damage += (gforce.gforce - gforce.damage_threshold).powf(2.0) / 3000.0;
|
hp.damage += (gforce.gforce - gforce.damage_threshold).powf(2.0) / 3000.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Blackout disabled for now
|
if gforce.visual_effect > 0.0001 {
|
||||||
// if !settings.god_mode {
|
gforce.visual_effect *= 0.984;
|
||||||
// if gforce.blackout > 0.0001 {
|
}
|
||||||
// gforce.blackout *= 0.984;
|
else if gforce.visual_effect > 0.0 {
|
||||||
// }
|
gforce.visual_effect = 0.0;
|
||||||
// else if gforce.blackout > 0.0 {
|
}
|
||||||
// gforce.blackout = 0.0;
|
if gforce.gforce > gforce.visual_effect_threshold {
|
||||||
// }
|
gforce.visual_effect += (gforce.gforce - gforce.visual_effect_threshold).powf(2.0) / 300000.0
|
||||||
// if gforce.gforce > gforce.blackout_threshold {
|
}
|
||||||
// gforce.blackout += (gforce.gforce - gforce.blackout_threshold).powf(2.0) / 300000.0
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,12 +91,12 @@ pub fn sync_camera_to_player(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_fov(
|
pub fn update_fov(
|
||||||
q_player: Query<&actor::LifeForm, With<actor::Player>>,
|
q_player: Query<&actor::ExperiencesGForce, With<actor::Player>>,
|
||||||
mouse_input: Res<ButtonInput<MouseButton>>,
|
mouse_input: Res<ButtonInput<MouseButton>>,
|
||||||
mut settings: ResMut<settings::Settings>,
|
mut settings: ResMut<settings::Settings>,
|
||||||
mut q_camera: Query<&mut Projection, With<Camera>>,
|
mut q_camera: Query<&mut Projection, With<Camera>>,
|
||||||
) {
|
) {
|
||||||
if let (Ok(lifeform), Ok(mut projection)) = (q_player.get_single(), q_camera.get_single_mut())
|
if let (Ok(gforce), Ok(mut projection)) = (q_player.get_single(), q_camera.get_single_mut())
|
||||||
{
|
{
|
||||||
let fov: f32;
|
let fov: f32;
|
||||||
if settings.hud_active && mouse_input.pressed(settings.key_zoom) {
|
if settings.hud_active && mouse_input.pressed(settings.key_zoom) {
|
||||||
|
@ -105,7 +105,7 @@ pub fn update_fov(
|
||||||
settings.is_zooming = true;
|
settings.is_zooming = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fov = (lifeform.adrenaline.powf(3.0) * 25.0 + 45.0).to_radians();
|
fov = (gforce.visual_effect * 20.0 + 55.0).to_radians();
|
||||||
if settings.is_zooming {
|
if settings.is_zooming {
|
||||||
settings.is_zooming = false;
|
settings.is_zooming = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue