@@ -44,10 +44,15 @@ class TypedArray : public Array {
4444 _ref (p_array);
4545 }
4646 _FORCE_INLINE_ TypedArray (const Variant &p_variant) :
47- Array(p_variant. operator Array (), Variant::OBJECT, T::get_class_static(), Variant( )) {
47+ TypedArray( Array(p_variant )) {
4848 }
49- _FORCE_INLINE_ TypedArray (const Array &p_array) :
50- Array(p_array, Variant::OBJECT, T::get_class_static(), Variant()) {
49+ _FORCE_INLINE_ TypedArray (const Array &p_array) {
50+ set_typed (Variant::OBJECT, T::get_class_static (), Variant ());
51+ if (is_same_typed (p_array)) {
52+ _ref (p_array);
53+ } else {
54+ assign (p_array);
55+ }
5156 }
5257 _FORCE_INLINE_ TypedArray () {
5358 set_typed (Variant::OBJECT, T::get_class_static (), Variant ());
@@ -65,10 +70,15 @@ class TypedArray : public Array {
6570 _ref (p_array); \
6671 } \
6772 _FORCE_INLINE_ TypedArray (const Variant &p_variant) : \
68- Array(p_variant. operator Array (), m_variant_type, StringName(), Variant()) { \
73+ TypedArray( Array(p_variant)) { \
6974 } \
70- _FORCE_INLINE_ TypedArray (const Array &p_array) : \
71- Array(p_array, m_variant_type, StringName(), Variant()) { \
75+ _FORCE_INLINE_ TypedArray (const Array &p_array) { \
76+ set_typed (m_variant_type, StringName (), Variant ()); \
77+ if (is_same_typed (p_array)) { \
78+ _ref (p_array); \
79+ } else { \
80+ assign (p_array); \
81+ } \
7282 } \
7383 _FORCE_INLINE_ TypedArray () { \
7484 set_typed (m_variant_type, StringName (), Variant ()); \
0 commit comments