drawGrid method

void drawGrid()

Draw a grid and add it to the scene

Implementation

void drawGrid() {
    if (scene != null) {
      const color = 0x888888;
      const multiplier = 3;
      double? size;
      double? divisions;
      double maxLength;
      double tick;

      if (camera is OrthographicCamera) {
        final width = camera.right - camera.left;
        final height = camera.bottom - camera.top;

        maxLength = math.max(width, height);
        tick = maxLength / 20;

        size = maxLength / camera.zoom * multiplier;
        divisions = size / tick * camera.zoom;
      }
      else if (camera is PerspectiveCamera) {
        final distance = camera.position.distanceTo(_gizmos.position);
        final halfFovV = MathUtils.deg2rad * camera.fov * 0.5;
        final halfFovH = math.atan((camera.aspect) * math.tan(halfFovV));

        maxLength = math.tan(math.max(halfFovV, halfFovH)) * distance * 2;
        tick = maxLength / 20;

        size = maxLength * multiplier;
        divisions = size / tick;
      }

      if (_grid == null && size != null && divisions != null) {
        _grid = GridHelper(size, divisions.toInt(), color, color);
        _grid!.position.setFrom(_gizmos.position);
        _gridPosition.setFrom(_grid!.position);
        _grid!.quaternion.setFrom(camera.quaternion);
        _grid!.rotateX(math.pi * 0.5);

        scene!.add(_grid);
      }
    }
  }