Bugfix: program would crash when triggering an input entry flagged for removal
This commit is contained in:
parent
de2b2a56f0
commit
8f241032d2
1 changed files with 11 additions and 4 deletions
|
|
@ -55,26 +55,30 @@ public static class InputManager {
|
|||
Array.ForEach(pressed, key => {
|
||||
if (oldKBState.IsKeyUp(key)){
|
||||
if (keyPressListeners.TryGetValue(key, out var pressHandlers)){
|
||||
List<KeyboardInputEntry> toRemove = new();
|
||||
pressHandlers.ForEach(t => {
|
||||
if (t.Enabled){
|
||||
inputEventQueue.Enqueue(t.Action);
|
||||
}
|
||||
if (t.Hook.RemoveOnNextTrigger){
|
||||
pressHandlers.Remove(t);
|
||||
toRemove.Add(t);
|
||||
}
|
||||
});
|
||||
pressHandlers.RemoveAll(toRemove.Contains);
|
||||
}
|
||||
}
|
||||
|
||||
if (keyHoldListeners.TryGetValue(key, out var holdHandlers)){
|
||||
List<KeyboardInputEntry> toRemove = new();
|
||||
holdHandlers.ForEach(t => {
|
||||
if (t.Enabled){
|
||||
inputEventQueue.Enqueue(t.Action);
|
||||
}
|
||||
if (t.Hook.RemoveOnNextTrigger){
|
||||
holdHandlers.Remove(t);
|
||||
toRemove.Add(t);
|
||||
}
|
||||
});
|
||||
holdHandlers.RemoveAll(toRemove.Contains);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -84,15 +88,18 @@ public static class InputManager {
|
|||
}
|
||||
|
||||
if (newKBState.IsKeyUp(key)){
|
||||
if (keyReleaseListeners.TryGetValue(key, out var releaseHandlers))
|
||||
if (keyReleaseListeners.TryGetValue(key, out var releaseHandlers)){
|
||||
List<KeyboardInputEntry> toRemove = new();
|
||||
releaseHandlers.ForEach(t => {
|
||||
if (t.Enabled){
|
||||
inputEventQueue.Enqueue(t.Action);
|
||||
}
|
||||
if (t.Hook.RemoveOnNextTrigger){
|
||||
releaseHandlers.Remove(t);
|
||||
toRemove.Add(t);
|
||||
}
|
||||
});
|
||||
releaseHandlers.RemoveAll(toRemove.Contains);
|
||||
}
|
||||
}
|
||||
});
|
||||
oldKBState = newKBState;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue