extends Node var refs: Array[WeakRef] = [] func _ready() -> void: call_deferred("run") func run() -> void: for i in 8: create_material(i) for i in 10: await get_tree().process_frame RenderingServer.force_sync() var alive := 0 for reference in refs: if reference.get_ref() != null: alive += 1 print("ISOLATED_PARTICLE_EXIT alive=", alive) get_tree().quit(1 if alive else 0) func create_material(index: int) -> void: var material := ParticleProcessMaterial.new() material.emission_shape = index % 3 material.get_rid() refs.append(weakref(material))