virtualx-engine/demos/misc/autoload/global.gd

28 lines
983 B
GDScript

extends Node
var current_scene = null
func goto_scene(scene):
#load new scene
var s = ResourceLoader.load(scene)
#queue erasing old (don't use free because that scene is calling this method)
current_scene.queue_free()
# Remove the scene before loading the previous one.
# The node is removed when deleted anyway, but this will fix issues that
# might arise if both have a root node with the same name,
# as adding both together will cause the second to be renamed. (not usually a problem, but you might be wanting to look for the node later and not find it)
get_scene().get_root().remove(current_scene)
#instance the new scene
current_scene = s.instance()
#add it to the active scene, as child of root
get_scene().get_root().add_child(current_scene)
func _ready():
# get the current scene
# it is always the last child of root,
# after the autoloaded nodes
var root = get_scene().get_root()
current_scene = root.get_child( root.get_child_count() -1 )