Add configuration factors for forward/back/strafe motion.
This commit is contained in:
parent
d5c580f165
commit
33921acee8
|
@ -145,6 +145,14 @@ fn movement_controls<S, A: 'static>(
|
||||||
}
|
}
|
||||||
if direction.length_squared() != 0. {
|
if direction.length_squared() != 0. {
|
||||||
direction = direction.normalize();
|
direction = direction.normalize();
|
||||||
|
if direction.x > 0. {
|
||||||
|
direction.x *= config.forward_movement_factor;
|
||||||
|
} else if direction.x < 0. {
|
||||||
|
direction.x *= config.backward_movement_factor;
|
||||||
|
}
|
||||||
|
if direction.y != 0. {
|
||||||
|
direction.y *= config.strafe_movement_factor;
|
||||||
|
}
|
||||||
let strength = if let (Some(forward), Some(backward), Some(left), Some(right)) = (
|
let strength = if let (Some(forward), Some(backward), Some(left), Some(right)) = (
|
||||||
config.action_forward.clone(),
|
config.action_forward.clone(),
|
||||||
config.action_backward.clone(),
|
config.action_backward.clone(),
|
||||||
|
@ -168,7 +176,7 @@ fn movement_controls<S, A: 'static>(
|
||||||
let s = if sprinting {
|
let s = if sprinting {
|
||||||
**max_speed
|
**max_speed
|
||||||
} else {
|
} else {
|
||||||
**max_speed / 3.
|
**max_speed / config.sprint_movement_factor
|
||||||
};
|
};
|
||||||
speed.0 = s;
|
speed.0 = s;
|
||||||
direction *= s;
|
direction *= s;
|
||||||
|
@ -438,6 +446,10 @@ pub struct NavigationConfig<S, A> {
|
||||||
pub action_rotate_left: Option<A>,
|
pub action_rotate_left: Option<A>,
|
||||||
pub action_rotate_right: Option<A>,
|
pub action_rotate_right: Option<A>,
|
||||||
pub action_sprint: Option<A>,
|
pub action_sprint: Option<A>,
|
||||||
|
pub forward_movement_factor: f32,
|
||||||
|
pub backward_movement_factor: f32,
|
||||||
|
pub strafe_movement_factor: f32,
|
||||||
|
pub sprint_movement_factor: f32,
|
||||||
pub movement_states: Vec<S>,
|
pub movement_states: Vec<S>,
|
||||||
pub movement_control_states: Vec<S>,
|
pub movement_control_states: Vec<S>,
|
||||||
}
|
}
|
||||||
|
@ -452,6 +464,10 @@ impl<S, A> Default for NavigationConfig<S, A> {
|
||||||
action_rotate_left: None,
|
action_rotate_left: None,
|
||||||
action_rotate_right: None,
|
action_rotate_right: None,
|
||||||
action_sprint: None,
|
action_sprint: None,
|
||||||
|
forward_movement_factor: 1.,
|
||||||
|
backward_movement_factor: 1.,
|
||||||
|
strafe_movement_factor: 1.,
|
||||||
|
sprint_movement_factor: 3.,
|
||||||
movement_states: vec![],
|
movement_states: vec![],
|
||||||
movement_control_states: vec![],
|
movement_control_states: vec![],
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user