onPointerMove method
void
onPointerMove(
- dynamic event
Implementation
void onPointerMove(event) {
if (scope.enabled == false) return;
updatePointer(event);
_raycaster.setFromCamera(_pointer, _camera);
if (_selected != null) {
if (_raycaster.ray.intersectPlane(_plane, _intersection) != null) {
_selected!.position.setFrom(_intersection.sub(_offset).applyMatrix4(_inverseMatrix));
}
scope.dispatchEvent(Event(type: 'drag', object: _selected));
return;
}
// hover support
if (event.pointerType == 'mouse' || event.pointerType == 'pen') {
_intersections.length = 0;
_raycaster.setFromCamera(_pointer, _camera);
_raycaster.intersectObjects(_objects, true, _intersections);
if (_intersections.isNotEmpty) {
final object = _intersections[0].object;
_plane.setFromNormalAndCoplanarPoint(
_camera.getWorldDirection(_plane.normal),
_worldPosition.setFromMatrixPosition(object?.matrixWorld));
if (_hovered != object && _hovered != null) {
scope.dispatchEvent(Event(type: 'hoveroff', object: _hovered));
_hovered = null;
}
if (_hovered != object) {
scope.dispatchEvent(Event(type: 'hoveron', object: object));
_hovered = object;
}
}
else {
if (_hovered != null) {
scope.dispatchEvent(Event(type: 'hoveroff', object: _hovered));
_hovered = null;
}
}
}
}