38 lines
864 B
GDScript
38 lines
864 B
GDScript
extends Area3D
|
|
class_name Portal
|
|
|
|
var level_info = {}
|
|
|
|
|
|
var timer_active = false
|
|
var active = true
|
|
var index : int
|
|
|
|
const SCENE_SPAWN_OFFSET = Vector3(0,-150,0)
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
pass # Replace with function body.
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta: float) -> void:
|
|
pass
|
|
|
|
|
|
func _on_body_entered(body: Node3D) -> void:
|
|
if body.is_in_group("player"):
|
|
if active and timer_active:
|
|
active = false
|
|
var scene = load(level_info["level_path"]).instantiate()
|
|
|
|
if scene.sky_type != null:
|
|
SignalBus.emit_signal("update_sky",scene.sky_type)
|
|
|
|
get_tree().current_scene.add_child(scene)
|
|
scene.global_position = global_position + SCENE_SPAWN_OFFSET
|
|
|
|
|
|
func _on_start_activation_timeout() -> void:
|
|
timer_active = true
|