@tool extends Node var shader_time: float = 0.0 var time_scale: float = 1.0 var beat: float = 0.0: set = set_beat var bar: float = 0.0: set = set_bar var song_time: float = 0.0: set = set_song_time var total_song_time: float = 0.0: set = set_total_song_time var user_offset_ms: float = 0.0 func _notification(what: int) -> void: if what == NOTIFICATION_EDITOR_PRE_SAVE: # Just in case. RenderingServer.global_shader_parameter_set(&"time", 0.0) func _process(delta: float) -> void: shader_time += delta * time_scale RenderingServer.global_shader_parameter_set(&"time", shader_time) func set_paused(value: bool) -> void: set_process(not value) func set_user_offset_ms(offset: float) -> void: user_offset_ms = offset RenderingServer.global_shader_parameter_set(&"user_offset_ms", beat) func set_beat(_beat: float) -> void: beat = _beat RenderingServer.global_shader_parameter_set(&"beat", beat) func set_bar(_bar: float) -> void: bar = _bar RenderingServer.global_shader_parameter_set(&"bar", bar) func set_song_time(time: float) -> void: song_time = time RenderingServer.global_shader_parameter_set(&"song_time", time) func set_total_song_time(time: float) -> void: total_song_time = time RenderingServer.global_shader_parameter_set(&"total_song_time", time)