diff options
Diffstat (limited to 'modules/gdscript/tests/scripts/runtime/features')
24 files changed, 1029 insertions, 0 deletions
diff --git a/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.gd b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.gd new file mode 100644 index 0000000000..18174eae67 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.gd @@ -0,0 +1,32 @@ +# https://github.com/godotengine/godot/issues/48121 + +func test(): +	var x := [] +	var y := [] +	x.push_back(y) +	print("TEST ARRAY ADD TO SELF: " + str(len(y))) +	x.clear() + +	x = Array() +	y = Array() +	x.push_back(y) +	print("TEST ARRAY ADD TO SELF: " + str(len(y))) +	x.clear() + +	x = Array().duplicate() +	y = Array().duplicate() +	x.push_back(y) +	print("TEST ARRAY ADD TO SELF: " + str(len(y))) +	x.clear() + +	x = [].duplicate() +	y = [].duplicate() +	x.push_back(y) +	print("TEST ARRAY ADD TO SELF: " + str(len(y))) +	x.clear() + +	x = Array() +	y = Array() +	x.push_back(y) +	print("TEST ARRAY ADD TO SELF: " + str(len(y))) +	x.clear() diff --git a/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.out b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.out new file mode 100644 index 0000000000..f6b7d3cc39 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/arrays_arent_shared.out @@ -0,0 +1,6 @@ +GDTEST_OK +TEST ARRAY ADD TO SELF: 0 +TEST ARRAY ADD TO SELF: 0 +TEST ARRAY ADD TO SELF: 0 +TEST ARRAY ADD TO SELF: 0 +TEST ARRAY ADD TO SELF: 0 diff --git a/modules/gdscript/tests/scripts/runtime/features/assign_member_with_operation.gd b/modules/gdscript/tests/scripts/runtime/features/assign_member_with_operation.gd new file mode 100644 index 0000000000..f6526aefb4 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/assign_member_with_operation.gd @@ -0,0 +1,13 @@ +extends Node + +func test(): +	process_priority = 10 +	var change = 20 + +	print(process_priority) +	print(change) + +	process_priority += change + +	print(process_priority) +	print(change) diff --git a/modules/gdscript/tests/scripts/runtime/features/assign_member_with_operation.out b/modules/gdscript/tests/scripts/runtime/features/assign_member_with_operation.out new file mode 100644 index 0000000000..c9e6b34c77 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/assign_member_with_operation.out @@ -0,0 +1,5 @@ +GDTEST_OK +10 +20 +30 +20 diff --git a/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.gd b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.gd new file mode 100644 index 0000000000..9da61ab184 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.gd @@ -0,0 +1,8 @@ +# https://github.com/godotengine/godot/issues/50894 + +func test(): +	print(await not_coroutine()) + + +func not_coroutine(): +	return "awaited" diff --git a/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.out b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.out new file mode 100644 index 0000000000..c2ac488e9b --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/await_without_coroutine.out @@ -0,0 +1,6 @@ +GDTEST_OK +>> WARNING +>> Line: 4 +>> REDUNDANT_AWAIT +>> "await" keyword not needed in this case, because the expression isn't a coroutine nor a signal. +awaited diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.gd b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.gd new file mode 100644 index 0000000000..c6645c2c34 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.gd @@ -0,0 +1,138 @@ +func test(): +	var value + +	# null +	value = null +	print(value == null) + +	# bool +	value = false +	print(value == null) + +	# int +	value = 0 +	print(value == null) + +	# float +	value = 0.0 +	print(value == null) + +	# String +	value = "" +	print(value == null) + +	# Vector2 +	value = Vector2() +	print(value == null) + +	# Vector2i +	value = Vector2i() +	print(value == null) + +	# Rect2 +	value = Rect2() +	print(value == null) + +	# Rect2i +	value = Rect2i() +	print(value == null) + +	# Vector3 +	value = Vector3() +	print(value == null) + +	# Vector3i +	value = Vector3i() +	print(value == null) + +	# Transform2D +	value = Transform2D() +	print(value == null) + +	# Plane +	value = Plane() +	print(value == null) + +	# Quaternion +	value = Quaternion() +	print(value == null) + +	# AABB +	value = AABB() +	print(value == null) + +	# Basis +	value = Basis() +	print(value == null) + +	# Transform3D +	value = Transform3D() +	print(value == null) + +	# Color +	value = Color() +	print(value == null) + +	# StringName +	value = &"" +	print(value == null) + +	# NodePath +	value = ^"" +	print(value == null) + +	# RID +	value = RID() +	print(value == null) + +	# Callable +	value = Callable() +	print(value == null) + +	# Signal +	value = Signal() +	print(value == null) + +	# Dictionary +	value = {} +	print(value == null) + +	# Array +	value = [] +	print(value == null) + +	# PackedByteArray +	value = PackedByteArray() +	print(value == null) + +	# PackedInt32Array +	value = PackedInt32Array() +	print(value == null) + +	# PackedInt64Array +	value = PackedInt64Array() +	print(value == null) + +	# PackedFloat32Array +	value = PackedFloat32Array() +	print(value == null) + +	# PackedFloat64Array +	value = PackedFloat64Array() +	print(value == null) + +	# PackedStringArray +	value = PackedStringArray() +	print(value == null) + +	# PackedVector2Array +	value = PackedVector2Array() +	print(value == null) + +	# PackedVector3Array +	value = PackedVector3Array() +	print(value == null) + +	# PackedColorArray +	value = PackedColorArray() +	print(value == null) diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.out b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.out new file mode 100644 index 0000000000..639f6027b9 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-equals-null.out @@ -0,0 +1,35 @@ +GDTEST_OK +true +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.gd b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.gd new file mode 100644 index 0000000000..ee622bf22f --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.gd @@ -0,0 +1,138 @@ +func test(): +	var value + +	# null +	value = null +	print(value != null) + +	# bool +	value = false +	print(value != null) + +	# int +	value = 0 +	print(value != null) + +	# float +	value = 0.0 +	print(value != null) + +	# String +	value = "" +	print(value != null) + +	# Vector2 +	value = Vector2() +	print(value != null) + +	# Vector2i +	value = Vector2i() +	print(value != null) + +	# Rect2 +	value = Rect2() +	print(value != null) + +	# Rect2i +	value = Rect2i() +	print(value != null) + +	# Vector3 +	value = Vector3() +	print(value != null) + +	# Vector3i +	value = Vector3i() +	print(value != null) + +	# Transform2D +	value = Transform2D() +	print(value != null) + +	# Plane +	value = Plane() +	print(value != null) + +	# Quaternion +	value = Quaternion() +	print(value != null) + +	# AABB +	value = AABB() +	print(value != null) + +	# Basis +	value = Basis() +	print(value != null) + +	# Transform3D +	value = Transform3D() +	print(value != null) + +	# Color +	value = Color() +	print(value != null) + +	# StringName +	value = &"" +	print(value != null) + +	# NodePath +	value = ^"" +	print(value != null) + +	# RID +	value = RID() +	print(value != null) + +	# Callable +	value = Callable() +	print(value != null) + +	# Signal +	value = Signal() +	print(value != null) + +	# Dictionary +	value = {} +	print(value != null) + +	# Array +	value = [] +	print(value != null) + +	# PackedByteArray +	value = PackedByteArray() +	print(value != null) + +	# PackedInt32Array +	value = PackedInt32Array() +	print(value != null) + +	# PackedInt64Array +	value = PackedInt64Array() +	print(value != null) + +	# PackedFloat32Array +	value = PackedFloat32Array() +	print(value != null) + +	# PackedFloat64Array +	value = PackedFloat64Array() +	print(value != null) + +	# PackedStringArray +	value = PackedStringArray() +	print(value != null) + +	# PackedVector2Array +	value = PackedVector2Array() +	print(value != null) + +	# PackedVector3Array +	value = PackedVector3Array() +	print(value != null) + +	# PackedColorArray +	value = PackedColorArray() +	print(value != null) diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.out b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.out new file mode 100644 index 0000000000..d1e332afba --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-builtin-not-equals-null.out @@ -0,0 +1,35 @@ +GDTEST_OK +false +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.gd b/modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.gd new file mode 100644 index 0000000000..7649062fda --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.gd @@ -0,0 +1,138 @@ +func test(): +	var value + +	# null +	value = null +	print(null == value) + +	# bool +	value = false +	print(null == value) + +	# int +	value = 0 +	print(null == value) + +	# float +	value = 0.0 +	print(null == value) + +	# String +	value = "" +	print(null == value) + +	# Vector2 +	value = Vector2() +	print(null == value) + +	# Vector2i +	value = Vector2i() +	print(null == value) + +	# Rect2 +	value = Rect2() +	print(null == value) + +	# Rect2i +	value = Rect2i() +	print(null == value) + +	# Vector3 +	value = Vector3() +	print(null == value) + +	# Vector3i +	value = Vector3i() +	print(null == value) + +	# Transform2D +	value = Transform2D() +	print(null == value) + +	# Plane +	value = Plane() +	print(null == value) + +	# Quaternion +	value = Quaternion() +	print(null == value) + +	# AABB +	value = AABB() +	print(null == value) + +	# Basis +	value = Basis() +	print(null == value) + +	# Transform3D +	value = Transform3D() +	print(null == value) + +	# Color +	value = Color() +	print(null == value) + +	# StringName +	value = &"" +	print(null == value) + +	# NodePath +	value = ^"" +	print(null == value) + +	# RID +	value = RID() +	print(null == value) + +	# Callable +	value = Callable() +	print(null == value) + +	# Signal +	value = Signal() +	print(null == value) + +	# Dictionary +	value = {} +	print(null == value) + +	# Array +	value = [] +	print(null == value) + +	# PackedByteArray +	value = PackedByteArray() +	print(null == value) + +	# PackedInt32Array +	value = PackedInt32Array() +	print(null == value) + +	# PackedInt64Array +	value = PackedInt64Array() +	print(null == value) + +	# PackedFloat32Array +	value = PackedFloat32Array() +	print(null == value) + +	# PackedFloat64Array +	value = PackedFloat64Array() +	print(null == value) + +	# PackedStringArray +	value = PackedStringArray() +	print(null == value) + +	# PackedVector2Array +	value = PackedVector2Array() +	print(null == value) + +	# PackedVector3Array +	value = PackedVector3Array() +	print(null == value) + +	# PackedColorArray +	value = PackedColorArray() +	print(null == value) diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.out b/modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.out new file mode 100644 index 0000000000..639f6027b9 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-null-equals-builtin.out @@ -0,0 +1,35 @@ +GDTEST_OK +true +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false +false diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.gd b/modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.gd new file mode 100644 index 0000000000..8d5f9df1b8 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.gd @@ -0,0 +1,138 @@ +func test(): +	var value + +	# null +	value = null +	print(null != value) + +	# bool +	value = false +	print(null != value) + +	# int +	value = 0 +	print(null != value) + +	# float +	value = 0.0 +	print(null != value) + +	# String +	value = "" +	print(null != value) + +	# Vector2 +	value = Vector2() +	print(null != value) + +	# Vector2i +	value = Vector2i() +	print(null != value) + +	# Rect2 +	value = Rect2() +	print(null != value) + +	# Rect2i +	value = Rect2i() +	print(null != value) + +	# Vector3 +	value = Vector3() +	print(null != value) + +	# Vector3i +	value = Vector3i() +	print(null != value) + +	# Transform2D +	value = Transform2D() +	print(null != value) + +	# Plane +	value = Plane() +	print(null != value) + +	# Quaternion +	value = Quaternion() +	print(null != value) + +	# AABB +	value = AABB() +	print(null != value) + +	# Basis +	value = Basis() +	print(null != value) + +	# Transform3D +	value = Transform3D() +	print(null != value) + +	# Color +	value = Color() +	print(null != value) + +	# StringName +	value = &"" +	print(null != value) + +	# NodePath +	value = ^"" +	print(null != value) + +	# RID +	value = RID() +	print(null != value) + +	# Callable +	value = Callable() +	print(null != value) + +	# Signal +	value = Signal() +	print(null != value) + +	# Dictionary +	value = {} +	print(null != value) + +	# Array +	value = [] +	print(null != value) + +	# PackedByteArray +	value = PackedByteArray() +	print(null != value) + +	# PackedInt32Array +	value = PackedInt32Array() +	print(null != value) + +	# PackedInt64Array +	value = PackedInt64Array() +	print(null != value) + +	# PackedFloat32Array +	value = PackedFloat32Array() +	print(null != value) + +	# PackedFloat64Array +	value = PackedFloat64Array() +	print(null != value) + +	# PackedStringArray +	value = PackedStringArray() +	print(null != value) + +	# PackedVector2Array +	value = PackedVector2Array() +	print(null != value) + +	# PackedVector3Array +	value = PackedVector3Array() +	print(null != value) + +	# PackedColorArray +	value = PackedColorArray() +	print(null != value) diff --git a/modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.out b/modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.out new file mode 100644 index 0000000000..d1e332afba --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/compare-null-not-equals-builtin.out @@ -0,0 +1,35 @@ +GDTEST_OK +false +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true diff --git a/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.gd b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.gd new file mode 100644 index 0000000000..d5a5f8de64 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.gd @@ -0,0 +1,19 @@ +# https://github.com/godotengine/godot/issues/48121 + +func test(): +	var x := Dictionary() +	var y := Dictionary() +	y[0]=1 +	y[1]=1 +	y[2]=1 +	print("TEST OTHER DICTIONARY: " + str(len(x))) +	x.clear() + +	x = Dictionary().duplicate() +	y = Dictionary().duplicate() +	y[0]=1 +	y[1]=1 +	y[2]=1 +	print("TEST OTHER DICTIONARY: " + str(len(x))) +	x.clear() +	return diff --git a/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.out b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.out new file mode 100644 index 0000000000..0bf49f5934 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/dictionaries_arent_shared.out @@ -0,0 +1,3 @@ +GDTEST_OK +TEST OTHER DICTIONARY: 0 +TEST OTHER DICTIONARY: 0 diff --git a/modules/gdscript/tests/scripts/runtime/features/lua_assign.gd b/modules/gdscript/tests/scripts/runtime/features/lua_assign.gd new file mode 100644 index 0000000000..c9b5f8481e --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/lua_assign.gd @@ -0,0 +1,4 @@ +func test(): +	var dict = {} +	dict.test = 1 +	print(dict.test) diff --git a/modules/gdscript/tests/scripts/runtime/features/lua_assign.out b/modules/gdscript/tests/scripts/runtime/features/lua_assign.out new file mode 100644 index 0000000000..a7f1357bb2 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/lua_assign.out @@ -0,0 +1,2 @@ +GDTEST_OK +1 diff --git a/modules/gdscript/tests/scripts/runtime/features/property_with_operator_assignment.gd b/modules/gdscript/tests/scripts/runtime/features/property_with_operator_assignment.gd new file mode 100644 index 0000000000..3eb02816ed --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/property_with_operator_assignment.gd @@ -0,0 +1,11 @@ +#GDTEST_OK +var prop : int = 0: +	get: +		return prop +	set(value): +		prop = value % 7 + +func test(): +	for i in 7: +		prop += 1 +		print(prop) diff --git a/modules/gdscript/tests/scripts/runtime/features/property_with_operator_assignment.out b/modules/gdscript/tests/scripts/runtime/features/property_with_operator_assignment.out new file mode 100644 index 0000000000..76157853f2 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/property_with_operator_assignment.out @@ -0,0 +1,8 @@ +GDTEST_OK +1 +2 +3 +4 +5 +6 +0 diff --git a/modules/gdscript/tests/scripts/runtime/features/recursion.gd b/modules/gdscript/tests/scripts/runtime/features/recursion.gd new file mode 100644 index 0000000000..a35485022e --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/recursion.gd @@ -0,0 +1,19 @@ +func is_prime(number: int, divisor: int = 2) -> bool: +	print(divisor) +	if number <= 2: +		return (number == 2) +	elif number % divisor == 0: +		return false +	elif divisor * divisor > number: +		return true + +	return is_prime(number, divisor + 1) + +func test(): +	# Not a prime number. +	print(is_prime(989)) + +	print() + +	# Largest prime number below 10000. +	print(is_prime(9973)) diff --git a/modules/gdscript/tests/scripts/runtime/features/recursion.out b/modules/gdscript/tests/scripts/runtime/features/recursion.out new file mode 100644 index 0000000000..2bd8f24988 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/recursion.out @@ -0,0 +1,125 @@ +GDTEST_OK +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +false + +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +true diff --git a/modules/gdscript/tests/scripts/runtime/features/stringify.gd b/modules/gdscript/tests/scripts/runtime/features/stringify.gd new file mode 100644 index 0000000000..fead2df854 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/stringify.gd @@ -0,0 +1,42 @@ +func test(): +	print(true, false) +	print(-1, 0, 1) +	print(-1.25, 0.25, 1.25) +	print("hello world") + +	print(Vector2(0.25, 0.25)) +	print(Vector2i(0, 0)) + +	print(Rect2(0.25, 0.25, 0.5, 0.5)) +	print(Rect2i(0, 0, 0, 0)) + +	print(Vector3(0.25, 0.25, 0.25)) +	print(Vector3i(0, 0, 0)) + +	print(Transform2D.IDENTITY) +	print(Plane(1, 2, 3, 4)) +	print(Quaternion(1, 2, 3, 4)) +	print(AABB(Vector3.ZERO, Vector3.ONE)) +	print(Basis.from_euler(Vector3(0, 0, 0))) +	print(Transform3D.IDENTITY) + +	print(Color(1, 2, 3, 4)) +	print(StringName("hello")) +	print(NodePath("hello/world")) +	var node := Node.new() +	print(RID(node)) +	print(node.get_name) +	print(node.property_list_changed) +	node.free() +	print({"hello":123}) +	print(["hello", 123]) + +	print(PackedByteArray([-1, 0, 1])) +	print(PackedInt32Array([-1, 0, 1])) +	print(PackedInt64Array([-1, 0, 1])) +	print(PackedFloat32Array([-1, 0, 1])) +	print(PackedFloat64Array([-1, 0, 1])) +	print(PackedStringArray(["hello", "world"])) +	print(PackedVector2Array([Vector2.ONE, Vector2.ZERO])) +	print(PackedVector3Array([Vector3.ONE, Vector3.ZERO])) +	print(PackedColorArray([Color.RED, Color.BLUE, Color.GREEN])) diff --git a/modules/gdscript/tests/scripts/runtime/features/stringify.out b/modules/gdscript/tests/scripts/runtime/features/stringify.out new file mode 100644 index 0000000000..7670fc0128 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/stringify.out @@ -0,0 +1,34 @@ +GDTEST_OK +truefalse +-101 +-1.250.251.25 +hello world +(0.25, 0.25) +(0, 0) +[P: (0.25, 0.25), S: (0.5, 0.5)] +[P: (0, 0), S: (0, 0)] +(0.25, 0.25, 0.25) +(0, 0, 0) +[X: (1, 0), Y: (0, 1), O: (0, 0)] +[N: (1, 2, 3), D: 4] +(1, 2, 3, 4) +[P: (0, 0, 0), S: (1, 1, 1)] +[X: (1, 0, 0), Y: (0, 1, 0), Z: (0, 0, 1)] +[X: (1, 0, 0), Y: (0, 1, 0), Z: (0, 0, 1), O: (0, 0, 0)] +(1, 2, 3, 4) +hello +hello/world +RID(0) +Node::get_name +Node::[signal]property_list_changed +{hello:123} +[hello, 123] +[255, 0, 1] +[-1, 0, 1] +[-1, 0, 1] +[-1, 0, 1] +[-1, 0, 1] +[hello, world] +[(1, 1), (0, 0)] +[(1, 1, 1), (0, 0, 0)] +[(1, 0, 0, 1), (0, 0, 1, 1), (0, 1, 0, 1)]  |