Table of Contents

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

offsets
density_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_convex
offsets
ys
xs_by_y
hollow
max_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

polygon
rect

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_points
offsets
center_tile
tile_size
min_area_ratio

Returns