focus method

void focus(
  1. dynamic point,
  2. dynamic size, [
  3. num amount = 1
])
  • Focus operation consist of positioning the point of interest in front of the camera and a slightly zoom in
  • point The point of interest
  • size Scale factor
  • amount amount of operation to be completed (used for focus animations, default is complete full operation)

Implementation

void focus(point, size, [num amount = 1]) {
    //move center of camera (along with gizmos) towards point of interest
    _offset.setFrom(point).sub(_gizmos.position).scale(amount);
    _translationMatrix.makeTranslation(_offset.x, _offset.y, _offset.z);

    _gizmoMatrixStateTemp.setFrom(_gizmoMatrixState);
    _gizmoMatrixState.premultiply(_translationMatrix);
    _gizmoMatrixState.decompose(
        _gizmos.position, _gizmos.quaternion, _gizmos.scale);

    _cameraMatrixStateTemp.setFrom(_cameraMatrixState);
    _cameraMatrixState.premultiply(_translationMatrix);
    _cameraMatrixState.decompose(
        camera.position, camera.quaternion, camera.scale);

    //apply zoom
    if (enableZoom) {
      applyTransformMatrix(scale(size, _gizmos.position));
    }

    _gizmoMatrixState.setFrom(_gizmoMatrixStateTemp);
    _cameraMatrixState.setFrom(_cameraMatrixStateTemp);
  }