getBlock method
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);
}