extends GPUParticles3D signal custom_finished # todo : use built-in one func _ready() -> void: set_emitting(true) var emission_timer: SceneTreeTimer = get_tree().create_timer(get_lifetime(), false, true) emission_timer.timeout.connect(_on_emission_ended) func _on_emission_ended() -> void: custom_finished.emit()