getBlock method

Block getBlock(
  1. Vector2 p
)

Get which block's surface is at isometric position p.

This can be used to handle clicks or hovers. This is the opposite of getBlockCenterPosition.

Implementation

Block getBlock(Vector2 p) {
  final halfTile = effectiveTileSize / 2;
  final multiplier = 1 - halfTile.y / (2 * effectiveTileHeight);
  final delta = halfTile.clone()..multiply(Vector2(1, multiplier));
  final cart = isoToCart(p - position + delta);
  final px = (cart.x / halfTile.x - 1).ceil();
  final py = (cart.y / halfTile.y).ceil();
  return Block(px, py);
}