PolygonIndicatorHeuristics
Prunes fringe offsets for concave...
Prunes fringe offsets for concave polygons by removing tiles whose overlap area is below min_area_ratio * tile_area. Returns a new array (may be original if no pruning beneficial).
Version: v5.0.0
Inherits: RefCounted
Source: polygon_indicator_heuristics.gd
Parsing: AST-based for maximum accuracy with symbol typing
Methods
is_hollow
Signature: static is_hollow(offsets: Array[Vector2i]: Variant, density_factor: float = 1.5) -> bool
Returns true if (bbox_area > offsets.size() * density_factor)
Returns: bool
Static: true
Parameters:
offsets: Array[Vector2i]: Variantdensity_factor: float(optional, default:1.5)
should_expand_trapezoid
Signature: static should_expand_trapezoid(polygon_is_convex: bool, offsets: Array[Vector2i]: Variant, ys: Array[int]: Variant, xs_by_y: Dictionary, hollow: bool, max_original: int = 10) -> bool
- Exactly two Y rows present containing -1 and 0 with (0,0) present (pre‑expansion base)
Returns: bool
Static: true
Parameters:
polygon_is_convex: booloffsets: Array[Vector2i]: Variantys: Array[int]: Variantxs_by_y: Dictionaryhollow: boolmax_original: int(optional, default:10)
generate_trapezoid_offsets
Signature: static generate_trapezoid_offsets() -> Array
Generates canonical 13-tile trapezoid offsets (rows y=-1,0,1 => 3/5/5 pattern).
Returns: Array
Static: true
polygon_tile_overlap_area
Signature: static polygon_tile_overlap_area(polygon: PackedVector2Array, rect: Rect2) -> float
Computes precise overlap area between polygon world points and a tile rect (duplicate of S-H clip used for deterministic tests).
Returns: float
Static: true
Parameters:
polygon: PackedVector2Arrayrect: Rect2
_inside
Signature: static _inside(p: Vector2, boundary: int, left: float, right: float, top: float, bottom: float) -> bool
Bounding box quick reject
Returns: bool
Static: true
Parameters:
p: Vector2boundary: intleft: floatright: floattop: floatbottom: float
_intersect
Signature: static _intersect(a: Vector2, b: Vector2, boundary: int, left: float, right: float, top: float, bottom: float) -> Vector2
Returns: Vector2
Static: true
Parameters:
a: Vector2b: Vector2boundary: intleft: floatright: floattop: floatbottom: float
prune_concave_fringe
Signature: static prune_concave_fringe(world_points: PackedVector2Array, offsets: Array[Vector2i]: Variant, center_tile: Vector2i, tile_size: Vector2, min_area_ratio: float = 0.12) -> Array
Returns a new array (may be original if no pruning beneficial).
Returns: Array
Static: true
Parameters:
world_points: PackedVector2Arrayoffsets: Array[Vector2i]: Variantcenter_tile: Vector2itile_size: Vector2min_area_ratio: float(optional, default:0.12)