For some reason, pressed / released keys are not recognized. Only the isKeyHeld method works well. The update method is called before validating the input. What have I done wrong?
HashSet<Keys> held_heys_ = new HashSet<Keys>();
HashSet<Keys> previous_held_heys_ = new HashSet<Keys>();
public void beginNewFrame() {
previous_held_heys_ = held_heys_;
held_heys_.Clear();
}
public void update(Keys[] keys) {
foreach(Keys key in keys) {
held_heys_.Add(key);
}
}
public bool isKeyHeld(Keys key) {
return held_heys_.Contains(key);
}
public bool wasKeyPressed(Keys key) {
return !previous_held_heys_.Contains(key) && held_heys_.Contains(key);
}
public bool wasKeyReleased(Keys key) {
return previous_held_heys_.Contains(key) && !held_heys_.Contains(key);
}