gesture handler improvements
This commit is contained in:
@@ -7,11 +7,11 @@ import 'package:vector_math/vector_math_64.dart';
|
|||||||
|
|
||||||
class DefaultZoomCameraDelegate implements ZoomCameraDelegate {
|
class DefaultZoomCameraDelegate implements ZoomCameraDelegate {
|
||||||
final ThermionViewer viewer;
|
final ThermionViewer viewer;
|
||||||
final double _zoomSensitivity = 0.0005;
|
final double zoomSensitivity ;
|
||||||
|
|
||||||
final double? Function(Vector3 cameraPosition)? getDistanceToTarget;
|
final double? Function(Vector3 cameraPosition)? getDistanceToTarget;
|
||||||
|
|
||||||
DefaultZoomCameraDelegate(this.viewer, {this.getDistanceToTarget});
|
DefaultZoomCameraDelegate(this.viewer, {this.zoomSensitivity = 0.005, this.getDistanceToTarget});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> zoomCamera(double scrollDelta, Vector2? velocity) async {
|
Future<void> zoomCamera(double scrollDelta, Vector2? velocity) async {
|
||||||
@@ -23,14 +23,14 @@ class DefaultZoomCameraDelegate implements ZoomCameraDelegate {
|
|||||||
forwardVector.normalize();
|
forwardVector.normalize();
|
||||||
|
|
||||||
double? distanceToTarget = getDistanceToTarget?.call(cameraPosition);
|
double? distanceToTarget = getDistanceToTarget?.call(cameraPosition);
|
||||||
double zoomDistance = scrollDelta * _zoomSensitivity;
|
double zoomDistance = scrollDelta * zoomSensitivity;
|
||||||
if (distanceToTarget != null) {
|
if (distanceToTarget != null) {
|
||||||
zoomDistance *= distanceToTarget;
|
zoomDistance *= distanceToTarget;
|
||||||
if (zoomDistance.abs() < 0.0001) {
|
if (zoomDistance.abs() < 0.0001) {
|
||||||
zoomDistance = scrollDelta * _zoomSensitivity;
|
zoomDistance = scrollDelta * zoomSensitivity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
zoomDistance = max(zoomDistance, scrollDelta * _zoomSensitivity);
|
zoomDistance = max(zoomDistance, scrollDelta * zoomSensitivity);
|
||||||
|
|
||||||
Vector3 newPosition = cameraPosition + (forwardVector * zoomDistance);
|
Vector3 newPosition = cameraPosition + (forwardVector * zoomDistance);
|
||||||
await viewer.setCameraPosition(newPosition.x, newPosition.y, newPosition.z);
|
await viewer.setCameraPosition(newPosition.x, newPosition.y, newPosition.z);
|
||||||
|
|||||||
Reference in New Issue
Block a user