onPinchMove method
void
onPinchMove()
Implementation
void onPinchMove() {
if (enabled && enableZoom) {
setCenter(
(_touchCurrent[0].clientX + _touchCurrent[1].clientX) / 2,
(_touchCurrent[0].clientY + _touchCurrent[1].clientY) / 2);
const minDistance = 12; //minimum distance between fingers (in css pixels)
if (_state != State2.scale) {
_startFingerDistance = _currentFingerDistance;
updateTbState(State2.scale, true);
}
_currentFingerDistance = math.max(
calculatePointersDistance(
_touchCurrent[0],
_touchCurrent[1]
),
minDistance * _devPxRatio
);
final amount = _currentFingerDistance / _startFingerDistance;
Vector3? scalePoint;
if (!enablePan) {
scalePoint = _gizmos.position;
}
else {
if (camera is OrthographicCamera) {
scalePoint = unprojectOnTbPlane(camera, _center.x, _center.y)
.applyQuaternion(camera.quaternion)
.scale(1 / camera.zoom)
.add(_gizmos.position);
}
else if (camera is PerspectiveCamera) {
scalePoint = unprojectOnTbPlane(camera, _center.x, _center.y)
.applyQuaternion(camera.quaternion)
.add(_gizmos.position);
}
}
applyTransformMatrix(scale(amount, scalePoint));
dispatchEvent(_changeEvent);
}
}