22 lines
597 B
GDScript
22 lines
597 B
GDScript
class_name HitStop
|
|
extends Node
|
|
const DURATION := 0.03
|
|
var running := false
|
|
var previous_scale := 1.0
|
|
var deadline_usec := 0
|
|
func _ready() -> void:
|
|
process_mode = Node.PROCESS_MODE_ALWAYS
|
|
func trigger() -> void:
|
|
if running: return
|
|
previous_scale = Engine.time_scale
|
|
running = true
|
|
deadline_usec = Time.get_ticks_usec() + 30000
|
|
Engine.time_scale = 0.05
|
|
func _process(_dt: float) -> void:
|
|
if running and Time.get_ticks_usec() >= deadline_usec: restore()
|
|
func restore() -> void:
|
|
if not running: return
|
|
Engine.time_scale = previous_scale
|
|
running = false
|
|
func _exit_tree() -> void: restore()
|