Files
Embodiment/Levels/SlowTime.gd
2021-12-06 19:25:29 -06:00

35 lines
775 B
GDScript

extends Node
const END_VALUE = 1
signal unfreeze
var is_active = false
var time_start
var duration_ms
var start_value
func start(duration = 1, strength = 0.9):
time_start = OS.get_ticks_msec()
duration_ms = duration * 1000
start_value = 1 - strength
Engine.time_scale = start_value
is_active = true
func _process(delta):
if is_active:
var current_time = OS.get_ticks_msec() - time_start
var value = circl_ease_in(current_time, start_value, END_VALUE, duration_ms)
if current_time >= duration_ms:
is_active = false
value = END_VALUE
emit_signal('unfreeze')
Engine.time_scale = value
func circl_ease_in(t, b, c, d):
t /=d
return -c * (sqrt(1 - t * t) - 1) + b