InputHandler now accepts a List of events, not a Set
add batch argument to DelegateInputHandler
This commit is contained in:
@@ -9,7 +9,7 @@ import 'implementations/free_flight_camera_delegate.dart';
|
|||||||
typedef PointerEventDetails = (Vector2 localPosition, Vector2 delta);
|
typedef PointerEventDetails = (Vector2 localPosition, Vector2 delta);
|
||||||
|
|
||||||
abstract class InputHandlerDelegate {
|
abstract class InputHandlerDelegate {
|
||||||
Future handle(Set<InputEvent> events);
|
Future handle(List<InputEvent> events);
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -24,10 +24,13 @@ class DelegateInputHandler implements InputHandler {
|
|||||||
Stream<List<InputEvent>> get events => _gesturesController.stream;
|
Stream<List<InputEvent>> get events => _gesturesController.stream;
|
||||||
|
|
||||||
final _gesturesController = StreamController<List<InputEvent>>.broadcast();
|
final _gesturesController = StreamController<List<InputEvent>>.broadcast();
|
||||||
final _events = <InputEvent>{};
|
final _events = <InputEvent>[];
|
||||||
final List<InputHandlerDelegate> delegates;
|
final List<InputHandlerDelegate> delegates;
|
||||||
|
|
||||||
DelegateInputHandler({required this.viewer, required this.delegates}) {
|
final bool batch;
|
||||||
|
|
||||||
|
DelegateInputHandler(
|
||||||
|
{required this.viewer, required this.delegates, this.batch = true}) {
|
||||||
FilamentApp.instance!.registerRequestFrameHook(process);
|
FilamentApp.instance!.registerRequestFrameHook(process);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,7 +72,7 @@ class DelegateInputHandler implements InputHandler {
|
|||||||
case KeyEventType.down:
|
case KeyEventType.down:
|
||||||
keyDown[event.key] = event;
|
keyDown[event.key] = event;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (final key in keyUp.keys) {
|
for (final key in keyUp.keys) {
|
||||||
_events.remove(keyDown[key]);
|
_events.remove(keyDown[key]);
|
||||||
@@ -95,5 +98,8 @@ class DelegateInputHandler implements InputHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_events.add(event);
|
_events.add(event);
|
||||||
|
if (!this.batch) {
|
||||||
|
await process();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user