Files
mtgodot-poc/project/effect_space_test.gd

23 lines
1.3 KiB
GDScript

extends SceneTree
const EffectPlayer = preload("res://fx/effect_player.gd")
var failures := 0
func check(ok: bool, label: String) -> void:
if not ok:
failures += 1
printerr("FAIL: " + label)
func _init() -> void:
var effect := EffectPlayer.new()
var rows := [[0, "MOVING_TYPE_DIRECT", 100, 200, 300], [1, "MOVING_TYPE_DIRECT", 200, 400, 600]]
check(effect._position_at(rows, 0).is_equal_approx(Vector3(1, 3, -2)), "source Z goes up and Y goes south")
check(effect._position_at(rows, 0.5).is_equal_approx(Vector3(1.5, 4.5, -3)), "movement interpolation uses converted vectors")
effect.build({"particles": [{"position": rows, "emitter": {"EmittingDirection": [0, 0, 1], "EmitterShape": 1}}],
"lights": [{"position": rows}]})
var emitter: GPUParticles3D = effect._emitters[0]
check(emitter.position.is_equal_approx(Vector3(1, 3, -2)), "particle spawn shares movement coordinates")
check(effect._lights[0].position.is_equal_approx(emitter.position), "light and particle coordinates agree")
check(emitter.process_material.direction.is_equal_approx(Vector3.UP), "source upwards emission is upwards")
check(emitter.process_material.emission_box_extents.y < 0.01, "ellipse lies on ground plane")
effect.free()
print("effect_space_test: failures=%d" % failures)
quit(1 if failures else 0)