update method

void update()

Implementation

void update() {
  const eps = 0.000001;

  if (target.equals(_currentTarget) == false) {
    _gizmos.position.setFrom(target); //for correct radius calculation
    _tbRadius = calculateTbRadius(camera);
    makeGizmos(target, _tbRadius);
    _currentTarget.setFrom(target);
  }

  //check min/max parameters
  if (camera is OrthographicCamera) {
    //check zoom
    if (camera.zoom > maxZoom || camera.zoom < minZoom) {
      final newZoom =
          MathUtils.clamp(camera.zoom, minZoom, maxZoom);
      applyTransformMatrix(scale(newZoom / camera.zoom, _gizmos.position, true));
    }
  } else if (camera is PerspectiveCamera) {
    //check distance
    final distance = camera.position.distanceTo(_gizmos.position);

    if (distance > maxDistance + eps ||
        distance < minDistance - eps) {
      final newDistance =
          MathUtils.clamp(distance, minDistance, maxDistance);
      applyTransformMatrix(
          scale(newDistance / distance, _gizmos.position));
      updateMatrixState();
    }

    //check fov
    if (camera.fov < minFov || camera.fov > maxFov) {
      camera.fov =
          MathUtils.clamp(camera.fov, minFov, maxFov);
      camera.updateProjectionMatrix();
    }

    final oldRadius = _tbRadius;
    _tbRadius = calculateTbRadius(camera);

    if (oldRadius < _tbRadius - eps || oldRadius > _tbRadius + eps) {
      final scale = (_gizmos.scale.x +_gizmos.scale.y +_gizmos.scale.z) /3;
      final newRadius = _tbRadius / scale;
      final curve = EllipseCurve(0, 0, newRadius, newRadius);
      final points = curve.getPoints(_curvePts);
      final curveGeometry = BufferGeometry().setFromPoints(points);

      for (final gizmo in _gizmos.children) {
        // _gizmos.children[ gizmo ].geometry = curveGeometry;
        gizmo.geometry = curveGeometry;
      }
    }
  }

  camera.lookAt(_gizmos.position);
}