Skip to content

Commit 946a693

Browse files
committed
.
1 parent da064d8 commit 946a693

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

binding_generator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
541541
result.append("#include <godot_cpp/variant/vector4.hpp>")
542542
result.append("")
543543

544-
if is_packed_array(class_name):
544+
if is_packed_array(class_name) or class_name == "Array":
545545
result.append("#include <godot_cpp/core/error_macros.hpp>")
546546
result.append("#include <initializer_list>")
547547
result.append("")
@@ -953,6 +953,7 @@ def generate_builtin_class_header(builtin_api, size, used_classes, fully_used_cl
953953
_FORCE_INLINE_ ConstIterator begin() const;
954954
_FORCE_INLINE_ ConstIterator end() const;
955955
""")
956+
result.append("\t_FORCE_INLINE_ Array(std::initializer_list<Variant> p_init);")
956957

957958
if class_name == "Dictionary":
958959
result.append("\tconst Variant &operator[](const Variant &p_key) const;")

include/godot_cpp/variant/typed_array.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class TypedArray : public Array {
5353
assign(p_array);
5454
}
5555
}
56+
_FORCE_INLINE_ TypedArray(std::initializer_list<Variant> p_init) :
57+
TypedArray(Array(p_init)) {}
5658
_FORCE_INLINE_ TypedArray() {
5759
set_typed(Variant::OBJECT, T::get_class_static(), Variant());
5860
}
@@ -68,6 +70,9 @@ class TypedArray : public Array {
6870
ERR_FAIL_COND_MSG(!is_same_typed(p_array), "Cannot assign an array with a different element type."); \
6971
_ref(p_array); \
7072
} \
73+
_FORCE_INLINE_ TypedArray(std::initializer_list<Variant> p_init) : \
74+
Array(Array(p_init), m_variant_type, StringName(), Variant()) { \
75+
} \
7176
_FORCE_INLINE_ TypedArray(const Variant &p_variant) : \
7277
TypedArray(Array(p_variant)) { \
7378
} \

include/godot_cpp/variant/variant.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,15 @@ Array::ConstIterator Array::end() const {
408408
return Array::ConstIterator(ptr() + size());
409409
}
410410

411+
Array::Array(std::initializer_list<Variant> p_init) {
412+
ERR_FAIL_COND(resize(p_init.size()) != 0);
413+
414+
size_t i = 0;
415+
for (const Variant &element : p_init) {
416+
set(i++, element);
417+
}
418+
}
419+
411420
#include <godot_cpp/variant/builtin_vararg_methods.hpp>
412421

413422
#ifdef REAL_T_IS_DOUBLE

0 commit comments

Comments
 (0)