Randoloot/tests/levels/asteroid_debris_geometry_test.gd
2026-10-16 22:04:36 +02:00

26 lines
964 B
GDScript

extends Node2D
const DEBRIS := preload("res://scripts/game/asteroid_destruction_effect.gd")
const TEXTURES := preload("res://scripts/levels/exploration_poi.gd").ASTEROID_TEXTURES
func _ready() -> void:
var count := 0
for texture in TEXTURES.values():
var sprite := Sprite2D.new()
sprite.texture = texture
sprite.scale = Vector2.ONE * 78.0 / maxf(texture.get_width(), texture.get_height())
add_child(sprite)
for sample in 100:
var effect := Node2D.new()
effect.set_script(DEBRIS)
effect.call("configure", sprite)
assert(effect.get("_fragments").size() == 16)
for fragment in effect.get("_fragments"):
assert(fragment["points"].size() == fragment["uv"].size())
assert(not Geometry2D.triangulate_polygon(fragment["points"]).is_empty())
count += 1
effect.free()
sprite.free()
print("ASTEROID_DEBRIS_GEOMETRY_TEST: PASS (%d fragments across all five ore textures; triangulation and UVs valid)" % count)
get_tree().quit()