PolygonIndicatorHeuristics
Summary
Section titled “Summary”Polygon Indicator Heuristics Extracted from CollisionMapper for deterministic unit testing of indicator generation logic.
Methods
Section titled “Methods”static funcis_hollow(
offsets:Array
[
Vector2i
]
,
density_factor:float
)
->bool
Detects if a set of tile offsets forms a hollow (concave/void) pattern based on bounding box density. Returns true if (bbox_area > offsets.size() * density_factor)
static func should_expand_trapezoid(
polygon_is_convex:bool
,
offsets:Array
[
Vector2i
]
,
ys:Array
[
int
]
,
xs_by_y:Dictionary
,
hollow:bool
,
max_original:int
)
->bool
Returns true if trapezoid expansion (3/5/5 offsets) should be applied. Requirements: - Polygon is convex - Not hollow - Current offsets size <= max_original - Exactly two Y rows present containing -1 and 0 with (0,0) present (pre‑expansion base)
static func generate_trapezoid_offsets( ) ->Array
[
Vector2i
]
Generates canonical 13-tile trapezoid offsets (rows y=-1,0,1 => 3/5/5 pattern).
static func 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).
static func_inside(
p:Vector2
,
boundary:int
,
left:float
,
right:float
,
top:float
,
bottom:float
)
->bool
static func _intersect(
a:Vector2
,
b:Vector2
,
boundary:int
,
left:float
,
right:float
,
top:float
,
bottom:float
)
->Vector2
static func prune_concave_fringe(
world_points:PackedVector2Array
,
offsets:Array
[
Vector2i
]
,
center_tile:Vector2i
,
tile_size:Vector2
,
min_area_ratio:float
)
->Array
[
Vector2i
]
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).
Source
Section titled “Source”addons/grid_building/placement/manager/components/polygon_indicator_heuristics.gd
This API reference is automatically generated from the plugin source code. For implementation examples and usage guides, see the guides section.