Files

38 lines
984 B
GDScript

extends Object
class_name UTIL
# chunks array into 'chunk_size' pieces
static func chunk_array(arr: Array, chunk_size: int) -> Array:
var result_chunks = []
var i = 0
while i < arr.size():
var chunk = arr.slice(i, i + chunk_size)
result_chunks.append(chunk)
i += chunk_size
return result_chunks
static func vector2_to_vector3(v: Vector2) -> Vector3:
return Vector3(v.x, v.y, 0)
static func get_bounding_rect(vectors: PackedVector2Array) -> Rect2:
if vectors.is_empty():
return Rect2()
var rect := Rect2(vectors[0], Vector2.ZERO) # Initialize with the first point
for point in vectors:
rect = rect.expand(point)
# The 'position' of the Rect2 will be the minimum corner
return rect
static func get_polygon_area(vectors: PackedVector2Array) -> float:
var result := 0.0
var num_vertices := vectors.size()
for q in range(num_vertices):
var p = (q - 1 + num_vertices) % num_vertices
result += vectors[q].cross(vectors[p])
return abs(result * 0.5)