1
extends RefCounted
class_name WaitGroup
signal finished
var _waiting := 0
var _finished := false
func add(signal_for_wait: Signal, signal_args := 0) -> void:
if _finished:
push_error("Cannot add signals after wait has completed.")
return
_waiting += 1
var callback := Callable(self, "_on_signal")
if signal_args > 0:
callback = callback.unbind(signal_args)
signal_for_wait.connect(callback, CONNECT_ONE_SHOT)
func wait() -> void:
if _waiting == 0:
return
await finished
func _on_signal() -> void:
_waiting -= 1
if _waiting == 0:
_finished = true
finished.emit()
For immediate assistance, please email our customer support: [email protected]