From f80d92bf5b7f1d2bf9de80d4eb7920b451d16bf5 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 4 Mar 2024 15:41:35 +0800 Subject: [PATCH] move pick to pointerdown for better latency --- .../filament_gesture_detector_desktop.dart | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/widgets/filament_gesture_detector_desktop.dart b/lib/widgets/filament_gesture_detector_desktop.dart index 6265bc0c..ceef215f 100644 --- a/lib/widgets/filament_gesture_detector_desktop.dart +++ b/lib/widgets/filament_gesture_detector_desktop.dart @@ -95,8 +95,10 @@ class _FilamentGestureDetectorDesktopState Widget build(BuildContext context) { return Listener( onPointerSignal: (PointerSignalEvent pointerSignal) async { - if (pointerSignal is PointerScrollEvent && widget.enableCamera) { - _zoom(pointerSignal); + if (pointerSignal is PointerScrollEvent) { + if (widget.enableCamera) { + _zoom(pointerSignal); + } } else { throw Exception("TODO"); } @@ -107,7 +109,13 @@ class _FilamentGestureDetectorDesktopState // ignore all pointer down events // so we can wait to see if the pointer will be held/moved (interpreted as rotate/pan), // or if this is a single mousedown event (interpreted as viewport pick) - onPointerDown: (d) async {}, + onPointerDown: (d) async { + if (d.buttons != kTertiaryButton && widget.enablePicking) { + widget.controller + .pick(d.localPosition.dx.toInt(), d.localPosition.dy.toInt()); + } + _pointerMoving = false; + }, // holding/moving the left mouse button is interpreted as a pan, middle mouse button as a rotate onPointerMove: (PointerMoveEvent d) async { // if this is the first move event, we need to call rotateStart/panStart to set the first coordinates @@ -139,9 +147,6 @@ class _FilamentGestureDetectorDesktopState } else { if (_pointerMoving && widget.enableCamera) { widget.controller.panEnd(); - } else if (widget.enablePicking) { - widget.controller - .pick(d.localPosition.dx.toInt(), d.localPosition.dy.toInt()); } } _pointerMoving = false;