# (c) 2023-present Eroax # (c) 2023-present Yagich # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) extends DeckNode var thread : Thread func _init(): name = "Delay" node_type = name.to_snake_case() description = "A node that passes through its' input after the set time." 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.call_deferred(0, data) func _notification(what): if what == NOTIFICATION_PREDELETE and thread != null: thread.wait_to_finish()