Class PolygonIndicatorHeuristics
- Namespace
- GridPlacement.GDScript
- Assembly
- MoonBark.GridPlacement.GDScript.dll
Polygon Indicator Heuristics Extracted from CollisionMapper for deterministic unit testing of indicator generation logic.
class PolygonIndicatorHeuristics extends RefCounted
PolygonIndicatorHeuristics
Properties
minx
var minx = 999999; var maxx = -999999; var miny = 999999; var maxy = -999999
bbox_area
var bbox_area: int = (maxx - minx + 1) * (maxy - miny + 1)
result
var result: Array[Vector2i] = []
minx
var minx = 999999; var maxx = -999999; var miny = 999999; var maxy = -999999
clipped
var clipped: PackedVector2Array = CollisionGeometryCalculator.clip_polygon_to_rect(polygon, rect)
minx
var minx = 999999; var maxx = -999999; var miny = 999999; var maxy = -999999
bbox_area
var bbox_area: int = (maxx - minx + 1) * (maxy - miny + 1)
tile_area
var tile_area: float = tile_size.x * tile_size.y
min_area
var min_area: float = tile_area * min_area_ratio
pruned
var pruned: Array[Vector2i] = []
tile_world
var tile_world = Vector2((center_tile.x + off.x) * tile_size.x, (center_tile.y + off.y) * tile_size.y)
rect
var rect = Rect2(tile_world, tile_size)
area
var area = polygon_tile_overlap_area(world_points, rect)
Methods
is_hollow
static func is_hollow(offsets: Array[Vector2i], density_factor: float = 1.5) -> bool:
Parameters
offsetsdensity_factor
Returns
should_expand_trapezoid
static func should_expand_trapezoid(polygon_is_convex: bool, offsets: Array[Vector2i], ys: Array[int], xs_by_y: Dictionary, hollow: bool, max_original: int = 10) -> bool:
Parameters
polygon_is_convexoffsetsysxs_by_yhollowmax_original
Returns
generate_trapezoid_offsets
static func generate_trapezoid_offsets() -> Array[Vector2i]:
Returns
polygon_tile_overlap_area
static func polygon_tile_overlap_area(polygon: PackedVector2Array, rect: Rect2) -> float:
Parameters
polygonrect
Returns
prune_concave_fringe
static func prune_concave_fringe(world_points: PackedVector2Array, offsets: Array[Vector2i], center_tile: Vector2i, tile_size: Vector2, min_area_ratio: float = 0.12) -> Array[Vector2i]:
Parameters
world_pointsoffsetscenter_tiletile_sizemin_area_ratio