41 lines
780 B
GDScript
41 lines
780 B
GDScript
extends Path
|
|
|
|
signal scene_finished
|
|
|
|
var offset = 0
|
|
var length = 0
|
|
var dir = 0
|
|
var run = false
|
|
var fadeout = false
|
|
|
|
func _ready():
|
|
length = curve.get_baked_length()
|
|
|
|
func playforward():
|
|
run = true
|
|
dir = 1
|
|
offset = 0
|
|
fadeout = false
|
|
get_node("Camera").make_current()
|
|
|
|
func playbackward():
|
|
run = true
|
|
dir = -1
|
|
offset = length
|
|
fadeout = false
|
|
get_node("Camera").make_current()
|
|
|
|
func _process(delta):
|
|
if run:
|
|
offset += delta * dir
|
|
if not fadeout:
|
|
if dir > 0 and offset >= length-1 or dir < 0 and offset <= 1:
|
|
emit_signal("scene_finished")
|
|
fadeout = true
|
|
var p1 = to_global(curve.interpolate_baked(offset))
|
|
var p2 = to_global(curve.interpolate_baked(offset+dir))
|
|
if p1 == p2:
|
|
run = false
|
|
return
|
|
$Camera.look_at_from_position(p1,p2,Vector3.UP)
|