8639cecf4c
The scripts were streamlined using more or less the following conventions: - space after a comma in lists of arguments - space around weak operators (+, -), no space around strong operators (*, /) - space after a comment start (#) - removed trailing spaces or tabs, apart from those that delimit the function indentation level (those could be removed too but since they are added automatically by the editor when typing code, keeping them for now) - function blocks separate by two newlines The scene files were resaved with the (current) 2.0 format, and some scenes that were in XML format were converted to SCN, to be consistent across all demos.
42 lines
1.1 KiB
GDScript
42 lines
1.1 KiB
GDScript
extends Node
|
|
|
|
# member variables
|
|
var current_scene = null
|
|
|
|
|
|
func goto_scene(path):
|
|
# This function will usually be called from a signal callback,
|
|
# or some other function from the running scene.
|
|
# Deleting the current scene at this point might be
|
|
# a bad idea, because it may be inside of a callback or function of it.
|
|
# The worst case will be a crash or unexpected behavior.
|
|
|
|
# The way around this is deferring the load to a later time, when
|
|
# it is ensured that no code from the current scene is running:
|
|
|
|
call_deferred("_deferred_goto_scene",path)
|
|
|
|
|
|
func _deferred_goto_scene(path):
|
|
# Immediately free the current scene,
|
|
# there is no risk here.
|
|
current_scene.free()
|
|
|
|
# Load new scene
|
|
var s = ResourceLoader.load(path)
|
|
|
|
# Instance the new scene
|
|
current_scene = s.instance()
|
|
|
|
# Add it to the active scene, as child of root
|
|
get_tree().get_root().add_child(current_scene)
|
|
|
|
|
|
func _ready():
|
|
# Get the current scene, the first time.
|
|
# it is always the last child of root,
|
|
# after the autoloaded nodes.
|
|
|
|
var root = get_tree().get_root()
|
|
current_scene = root.get_child(root.get_child_count() - 1)
|