onPointerMove method

void onPointerMove(
  1. 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;
      }
    }
  }
}