You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-13 13:31:48 +00:00
Enhance and cleanup stringify for Vector
This commit is contained in:
@@ -1624,6 +1624,19 @@ Variant::operator String() const {
|
|||||||
return stringify(stack);
|
return stringify(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
String stringify_vector(const T &vec, List<const void *> &stack) {
|
||||||
|
String str("[");
|
||||||
|
for (int i = 0; i < vec.size(); i++) {
|
||||||
|
if (i > 0) {
|
||||||
|
str += ", ";
|
||||||
|
}
|
||||||
|
str = str + Variant(vec[i]).stringify(stack);
|
||||||
|
}
|
||||||
|
str += "]";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
String Variant::stringify(List<const void *> &stack) const {
|
String Variant::stringify(List<const void *> &stack) const {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case NIL:
|
case NIL:
|
||||||
@@ -1703,88 +1716,31 @@ String Variant::stringify(List<const void *> &stack) const {
|
|||||||
return str;
|
return str;
|
||||||
} break;
|
} break;
|
||||||
case PACKED_VECTOR2_ARRAY: {
|
case PACKED_VECTOR2_ARRAY: {
|
||||||
Vector<Vector2> vec = operator Vector<Vector2>();
|
return stringify_vector(operator Vector<Vector2>(), stack);
|
||||||
String str("[");
|
|
||||||
for (int i = 0; i < vec.size(); i++) {
|
|
||||||
if (i > 0) {
|
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
str = str + Variant(vec[i]);
|
|
||||||
}
|
|
||||||
str += "]";
|
|
||||||
return str;
|
|
||||||
} break;
|
} break;
|
||||||
case PACKED_VECTOR3_ARRAY: {
|
case PACKED_VECTOR3_ARRAY: {
|
||||||
Vector<Vector3> vec = operator Vector<Vector3>();
|
return stringify_vector(operator Vector<Vector3>(), stack);
|
||||||
String str("[");
|
} break;
|
||||||
for (int i = 0; i < vec.size(); i++) {
|
case PACKED_COLOR_ARRAY: {
|
||||||
if (i > 0) {
|
return stringify_vector(operator Vector<Color>(), stack);
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
str = str + Variant(vec[i]);
|
|
||||||
}
|
|
||||||
str += "]";
|
|
||||||
return str;
|
|
||||||
} break;
|
} break;
|
||||||
case PACKED_STRING_ARRAY: {
|
case PACKED_STRING_ARRAY: {
|
||||||
Vector<String> vec = operator Vector<String>();
|
return stringify_vector(operator Vector<String>(), stack);
|
||||||
String str("[");
|
} break;
|
||||||
for (int i = 0; i < vec.size(); i++) {
|
case PACKED_BYTE_ARRAY: {
|
||||||
if (i > 0) {
|
return stringify_vector(operator Vector<uint8_t>(), stack);
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
str = str + vec[i];
|
|
||||||
}
|
|
||||||
str += "]";
|
|
||||||
return str;
|
|
||||||
} break;
|
} break;
|
||||||
case PACKED_INT32_ARRAY: {
|
case PACKED_INT32_ARRAY: {
|
||||||
Vector<int32_t> vec = operator Vector<int32_t>();
|
return stringify_vector(operator Vector<int32_t>(), stack);
|
||||||
String str("[");
|
|
||||||
for (int i = 0; i < vec.size(); i++) {
|
|
||||||
if (i > 0) {
|
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
str = str + itos(vec[i]);
|
|
||||||
}
|
|
||||||
str += "]";
|
|
||||||
return str;
|
|
||||||
} break;
|
} break;
|
||||||
case PACKED_INT64_ARRAY: {
|
case PACKED_INT64_ARRAY: {
|
||||||
Vector<int64_t> vec = operator Vector<int64_t>();
|
return stringify_vector(operator Vector<int64_t>(), stack);
|
||||||
String str("[");
|
|
||||||
for (int i = 0; i < vec.size(); i++) {
|
|
||||||
if (i > 0) {
|
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
str = str + itos(vec[i]);
|
|
||||||
}
|
|
||||||
str += "]";
|
|
||||||
return str;
|
|
||||||
} break;
|
} break;
|
||||||
case PACKED_FLOAT32_ARRAY: {
|
case PACKED_FLOAT32_ARRAY: {
|
||||||
Vector<float> vec = operator Vector<float>();
|
return stringify_vector(operator Vector<float>(), stack);
|
||||||
String str("[");
|
|
||||||
for (int i = 0; i < vec.size(); i++) {
|
|
||||||
if (i > 0) {
|
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
str = str + rtos(vec[i]);
|
|
||||||
}
|
|
||||||
str += "]";
|
|
||||||
return str;
|
|
||||||
} break;
|
} break;
|
||||||
case PACKED_FLOAT64_ARRAY: {
|
case PACKED_FLOAT64_ARRAY: {
|
||||||
Vector<double> vec = operator Vector<double>();
|
return stringify_vector(operator Vector<double>(), stack);
|
||||||
String str("[");
|
|
||||||
for (int i = 0; i < vec.size(); i++) {
|
|
||||||
if (i > 0) {
|
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
str = str + rtos(vec[i]);
|
|
||||||
}
|
|
||||||
str += "]";
|
|
||||||
return str;
|
|
||||||
} break;
|
} break;
|
||||||
case ARRAY: {
|
case ARRAY: {
|
||||||
Array arr = operator Array();
|
Array arr = operator Array();
|
||||||
@@ -1793,16 +1749,8 @@ String Variant::stringify(List<const void *> &stack) const {
|
|||||||
}
|
}
|
||||||
stack.push_back(arr.id());
|
stack.push_back(arr.id());
|
||||||
|
|
||||||
String str("[");
|
String str = stringify_vector(arr, stack);
|
||||||
for (int i = 0; i < arr.size(); i++) {
|
|
||||||
if (i) {
|
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
|
|
||||||
str += arr[i].stringify(stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
str += "]";
|
|
||||||
stack.erase(arr.id());
|
stack.erase(arr.id());
|
||||||
return str;
|
return str;
|
||||||
|
|
||||||
|
|||||||
42
modules/gdscript/tests/scripts/runtime/features/stringify.gd
Normal file
42
modules/gdscript/tests/scripts/runtime/features/stringify.gd
Normal file
@@ -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(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]))
|
||||||
@@ -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)]
|
||||||
Reference in New Issue
Block a user