extends DeckNode var thread : Thread func _init(): name = "Delay" node_type = name.to_snake_case() description = "A Node that passes through the input after the set time." category = "general" add_output_port(DeckType.Types.ANY, "Value") add_input_port(DeckType.Types.NUMERIC, "Delay Time", "field") add_input_port(DeckType.Types.ANY, "Value", "field") func _receive(_to_input_port : int, data: Variant, _extra_data: Array = []) -> void: thread = Thread.new() thread.start(handle_delay.bind(data)) func handle_delay(data): var goal_time = Time.get_ticks_msec() + (int(get_input_ports()[0].value_callback.call()) * 1000) while Time.get_ticks_msec() < goal_time: pass print("Delay over") send(0, data) func _notification(what): if what == NOTIFICATION_PREDELETE and thread != null: thread.wait_to_finish()