23 lines
1.3 KiB
GDScript
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)
|