mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Prevent auto-glide from pitching too high up
This commit is contained in:
parent
270f89db6b
commit
eacc49a961
@ -753,8 +753,10 @@ impl PlayState for SessionState {
|
||||
}
|
||||
|
||||
// If auto-gliding, point camera into the wind
|
||||
if let Some(dir) = (self.auto_walk && self.client.borrow().is_gliding())
|
||||
if let Some(dir) = self
|
||||
.auto_walk
|
||||
.then_some(self.client.borrow())
|
||||
.filter(|client| client.is_gliding())
|
||||
.and_then(|client| {
|
||||
let ecs = client.state().ecs();
|
||||
let entity = client.entity();
|
||||
@ -766,10 +768,23 @@ impl PlayState for SessionState {
|
||||
.get(entity)
|
||||
.map(|vel| fluid.relative_flow(vel).0)
|
||||
.map(|rel_flow| {
|
||||
let is_wind_downwards = rel_flow.dot(Vec3::unit_z()).is_sign_negative();
|
||||
if !self.free_look {
|
||||
Plane::from(Dir::new(self.scene.camera().right())).projection(
|
||||
rel_flow * self.inputs.look_dir.dot(rel_flow).signum(),
|
||||
)
|
||||
if is_wind_downwards {
|
||||
self.scene.camera().forward_xy().into()
|
||||
} else {
|
||||
let windwards = rel_flow
|
||||
* self
|
||||
.scene
|
||||
.camera()
|
||||
.forward_xy()
|
||||
.dot(rel_flow.xy())
|
||||
.signum();
|
||||
Plane::from(Dir::new(self.scene.camera().right()))
|
||||
.projection(windwards)
|
||||
}
|
||||
} else if is_wind_downwards {
|
||||
Vec3::from(-rel_flow.xy())
|
||||
} else {
|
||||
-rel_flow
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user