worldToTile method

  1. @override
Point<int> worldToTile(
  1. Point<num> worldPos
)
override

Implementation

@override
Point<int> worldToTile(Point<num> worldPos) {
  final gridPoint = _toShift(Point(
    (worldPos.x - zero.x) / tileWidth,
    (worldPos.y - zero.y) / tileHeight,
  ));
  final shModPeriod = (gridPoint.shift + _oneSixth) % 2.0;
  final shMod = shModPeriod % 1.0;
  var sh = (gridPoint.shift + _oneSixth).floor();

  if (shMod < _oneThird) {
    var off = hexOffset(gridPoint.shift);
    var bMod = gridPoint.base % 1.0;

    if (bMod > 0.5) {
      bMod = 1 - bMod;
    }

    if (bMod < off == shModPeriod < 1) {
      sh -= 1;
    }
  }

  var b = (gridPoint.base - hexOffset(gridPoint.shift)).floor();
  return _fromShift(ShiftPoint(sh, b));
}