Fix key press event
This commit is contained in:
parent
bde47c9957
commit
324104c7c3
1 changed files with 24 additions and 18 deletions
|
@ -138,7 +138,11 @@ impl Default for InputState {
|
||||||
|
|
||||||
impl InputState {
|
impl InputState {
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn begin_frame(mut self, new: RawInput, requested_repaint_last_frame: bool) -> InputState {
|
pub fn begin_frame(
|
||||||
|
mut self,
|
||||||
|
mut new: RawInput,
|
||||||
|
requested_repaint_last_frame: bool,
|
||||||
|
) -> InputState {
|
||||||
let time = new.time.unwrap_or(self.time + new.predicted_dt as f64);
|
let time = new.time.unwrap_or(self.time + new.predicted_dt as f64);
|
||||||
let unstable_dt = (time - self.time) as f32;
|
let unstable_dt = (time - self.time) as f32;
|
||||||
|
|
||||||
|
@ -160,24 +164,26 @@ impl InputState {
|
||||||
let mut keys_down = self.keys_down;
|
let mut keys_down = self.keys_down;
|
||||||
let mut scroll_delta = Vec2::ZERO;
|
let mut scroll_delta = Vec2::ZERO;
|
||||||
let mut zoom_factor_delta = 1.0;
|
let mut zoom_factor_delta = 1.0;
|
||||||
for event in &new.events {
|
new.events.retain(|event| match event {
|
||||||
match event {
|
Event::Key { key, pressed, .. } => {
|
||||||
Event::Key { key, pressed, .. } => {
|
if *pressed {
|
||||||
if *pressed {
|
//return false (thus filtering out the Event) if the key already existed in the set of pressed keys
|
||||||
keys_down.insert(*key);
|
keys_down.insert(*key)
|
||||||
} else {
|
} else {
|
||||||
keys_down.remove(key);
|
keys_down.remove(key);
|
||||||
}
|
true
|
||||||
}
|
}
|
||||||
Event::Scroll(delta) => {
|
|
||||||
scroll_delta += *delta;
|
|
||||||
}
|
|
||||||
Event::Zoom(factor) => {
|
|
||||||
zoom_factor_delta *= *factor;
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
}
|
||||||
}
|
Event::Scroll(delta) => {
|
||||||
|
scroll_delta += *delta;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
Event::Zoom(factor) => {
|
||||||
|
zoom_factor_delta *= *factor;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
_ => true,
|
||||||
|
});
|
||||||
InputState {
|
InputState {
|
||||||
pointer,
|
pointer,
|
||||||
touch_states: self.touch_states,
|
touch_states: self.touch_states,
|
||||||
|
@ -280,7 +286,7 @@ impl InputState {
|
||||||
self.num_presses(desired_key) > 0
|
self.num_presses(desired_key) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
/// How many times were the given key pressed this frame?
|
/// How many times was the given key pressed this frame?
|
||||||
pub fn num_presses(&self, desired_key: Key) -> usize {
|
pub fn num_presses(&self, desired_key: Key) -> usize {
|
||||||
self.events
|
self.events
|
||||||
.iter()
|
.iter()
|
||||||
|
|
Loading…
Reference in a new issue