From 12a96cceee32801b35a3ddbcc828e72b19ca686f Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 10 May 2025 09:07:19 +0800 Subject: [PATCH] InputHandler now accepts a List of events, not a Set add batch argument to DelegateInputHandler --- .../lib/src/input/src/delegate_input_handler.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/thermion_dart/lib/src/input/src/delegate_input_handler.dart b/thermion_dart/lib/src/input/src/delegate_input_handler.dart index e95881dc..56b7882f 100644 --- a/thermion_dart/lib/src/input/src/delegate_input_handler.dart +++ b/thermion_dart/lib/src/input/src/delegate_input_handler.dart @@ -9,7 +9,7 @@ import 'implementations/free_flight_camera_delegate.dart'; typedef PointerEventDetails = (Vector2 localPosition, Vector2 delta); abstract class InputHandlerDelegate { - Future handle(Set events); + Future handle(List events); } /// @@ -24,10 +24,13 @@ class DelegateInputHandler implements InputHandler { Stream> get events => _gesturesController.stream; final _gesturesController = StreamController>.broadcast(); - final _events = {}; + final _events = []; final List 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); } @@ -69,7 +72,7 @@ class DelegateInputHandler implements InputHandler { case KeyEventType.down: keyDown[event.key] = event; } - } + } } for (final key in keyUp.keys) { _events.remove(keyDown[key]); @@ -95,5 +98,8 @@ class DelegateInputHandler implements InputHandler { } _events.add(event); + if (!this.batch) { + await process(); + } } }