diff options
69 files changed, 842 insertions, 223 deletions
diff --git a/SConstruct b/SConstruct index 9c1644594f..a5a233fa11 100644 --- a/SConstruct +++ b/SConstruct @@ -334,15 +334,16 @@ if selected_platform in platform_list: # Enforce our minimal compiler version requirements version = methods.get_compiler_version(env) - major = int(version[0]) if version is not None else -1 - if methods.using_gcc(env): - # GCC 8 has a regression in the support of guaranteed copy elision + if version is not None and methods.using_gcc(env): + major = int(version[0]) + minor = int(version[1]) + # GCC 8 before 8.4 has a regression in the support of guaranteed copy elision # which causes a build failure: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86521 - if major == 8: - print("Detected GCC version 8, which is not supported due to a regression " - "in its C++17 guaranteed copy elision support. Use a newer GCC " - "version, or Clang 6 or later by passing \"use_llvm=yes\" to the " - "SCons command line.") + if major == 8 and minor < 4: + print("Detected GCC 8 version < 8.4, which is not supported due to a " + "regression in its C++17 guaranteed copy elision support. Use a " + "newer GCC version, or Clang 6 or later by passing \"use_llvm=yes\" " + "to the SCons command line.") sys.exit(255) elif major < 7: print("Detected GCC version older than 7, which does not fully support " @@ -350,7 +351,8 @@ if selected_platform in platform_list: "version, or Clang 6 or later by passing \"use_llvm=yes\" to the " "SCons command line.") sys.exit(255) - elif methods.using_clang(env): + elif version is not None and methods.using_clang(env): + major = int(version[0]) # Apple LLVM versions differ from upstream LLVM version \o/, compare # in https://en.wikipedia.org/wiki/Xcode#Toolchain_versions if env["platform"] == "osx" or env["platform"] == "iphone": diff --git a/core/global_constants.cpp b/core/global_constants.cpp index 73db723c65..0945240c1f 100644 --- a/core/global_constants.cpp +++ b/core/global_constants.cpp @@ -92,9 +92,6 @@ VARIANT_ENUM_CAST(JoystickList); VARIANT_ENUM_CAST(MidiMessageList); void register_global_constants() { - - //{ KEY_BACKSPACE, VK_BACK },// (0x08) // backspace - BIND_GLOBAL_ENUM_CONSTANT(MARGIN_LEFT); BIND_GLOBAL_ENUM_CONSTANT(MARGIN_TOP); BIND_GLOBAL_ENUM_CONSTANT(MARGIN_RIGHT); @@ -116,7 +113,7 @@ void register_global_constants() { BIND_GLOBAL_ENUM_CONSTANT(VALIGN_CENTER); BIND_GLOBAL_ENUM_CONSTANT(VALIGN_BOTTOM); - // hueg list of keys + // huge list of keys BIND_GLOBAL_CONSTANT(SPKEY); BIND_GLOBAL_ENUM_CONSTANT(KEY_ESCAPE); @@ -596,23 +593,26 @@ void register_global_constants() { BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_INT", Variant::INT); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_REAL", Variant::FLOAT); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING", Variant::STRING); - BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2", Variant::VECTOR2); // 5 + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2", Variant::VECTOR2); + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2I", Variant::VECTOR2I); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RECT2", Variant::RECT2); + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RECT2I", Variant::RECT2I); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR3", Variant::VECTOR3); + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR3I", Variant::VECTOR3I); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_TRANSFORM2D", Variant::TRANSFORM2D); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_PLANE", Variant::PLANE); - BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_QUAT", Variant::QUAT); // 10 + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_QUAT", Variant::QUAT); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_AABB", Variant::AABB); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_BASIS", Variant::BASIS); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_TRANSFORM", Variant::TRANSFORM); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_COLOR", Variant::COLOR); - BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING_NAME", Variant::STRING_NAME); // 15 - BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_NODE_PATH", Variant::NODE_PATH); // 15 + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING_NAME", Variant::STRING_NAME); + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_NODE_PATH", Variant::NODE_PATH); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RID", Variant::_RID); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_OBJECT", Variant::OBJECT); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_CALLABLE", Variant::CALLABLE); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_SIGNAL", Variant::SIGNAL); - BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_DICTIONARY", Variant::DICTIONARY); // 20 + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_DICTIONARY", Variant::DICTIONARY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_ARRAY", Variant::ARRAY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RAW_ARRAY", Variant::PACKED_BYTE_ARRAY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_INT32_ARRAY", Variant::PACKED_INT32_ARRAY); @@ -620,7 +620,7 @@ void register_global_constants() { BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_FLOAT32_ARRAY", Variant::PACKED_FLOAT32_ARRAY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_FLOAT64_ARRAY", Variant::PACKED_FLOAT64_ARRAY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING_ARRAY", Variant::PACKED_STRING_ARRAY); - BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2_ARRAY", Variant::PACKED_VECTOR2_ARRAY); // 25 + BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2_ARRAY", Variant::PACKED_VECTOR2_ARRAY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR3_ARRAY", Variant::PACKED_VECTOR3_ARRAY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_COLOR_ARRAY", Variant::PACKED_COLOR_ARRAY); BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_MAX", Variant::VARIANT_MAX); diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp index 0b815b2c7b..fbcaa582b7 100644 --- a/core/io/marshalls.cpp +++ b/core/io/marshalls.cpp @@ -186,7 +186,7 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int if (r_len) (*r_len) += 4 * 2; - } break; // 5 + } break; case Variant::VECTOR2I: { ERR_FAIL_COND_V(len < 4 * 2, ERR_INVALID_DATA); @@ -198,7 +198,7 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int if (r_len) (*r_len) += 4 * 2; - } break; // 5 + } break; case Variant::RECT2: { ERR_FAIL_COND_V(len < 4 * 4, ERR_INVALID_DATA); @@ -1058,7 +1058,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo r_len += 2 * 4; - } break; // 5 + } break; case Variant::VECTOR2I: { if (buf) { @@ -1069,7 +1069,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo r_len += 2 * 4; - } break; // 5 + } break; case Variant::RECT2: { if (buf) { diff --git a/core/variant.h b/core/variant.h index 9ab25b9406..614d39e84a 100644 --- a/core/variant.h +++ b/core/variant.h @@ -78,7 +78,6 @@ class Variant { public: // If this changes the table in variant_op must be updated enum Type { - NIL, // atomic types @@ -88,8 +87,7 @@ public: STRING, // math types - - VECTOR2, // 5 + VECTOR2, VECTOR2I, RECT2, RECT2I, @@ -97,7 +95,7 @@ public: VECTOR3I, TRANSFORM2D, PLANE, - QUAT, // 10 + QUAT, AABB, BASIS, TRANSFORM, @@ -105,26 +103,26 @@ public: // misc types COLOR, STRING_NAME, - NODE_PATH, // 15 + NODE_PATH, _RID, OBJECT, CALLABLE, SIGNAL, DICTIONARY, ARRAY, - // arrays - PACKED_BYTE_ARRAY, // 20 + + // typed arrays + PACKED_BYTE_ARRAY, PACKED_INT32_ARRAY, PACKED_INT64_ARRAY, PACKED_FLOAT32_ARRAY, PACKED_FLOAT64_ARRAY, PACKED_STRING_ARRAY, PACKED_VECTOR2_ARRAY, - PACKED_VECTOR3_ARRAY, // 25 + PACKED_VECTOR3_ARRAY, PACKED_COLOR_ARRAY, VARIANT_MAX - }; private: diff --git a/core/variant_call.cpp b/core/variant_call.cpp index e82b491e4b..9cc08b54e6 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -1291,14 +1291,14 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i // math types case VECTOR2: - return Vector2(); // 5 + return Vector2(); case RECT2: return Rect2(); case VECTOR3: return Vector3(); case TRANSFORM2D: return Transform2D(); case PLANE: return Plane(); case QUAT: return Quat(); case AABB: - return ::AABB(); // 10 + return ::AABB(); case BASIS: return Basis(); case TRANSFORM: return Transform(); @@ -1306,16 +1306,16 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i // misc types case COLOR: return Color(); case STRING_NAME: - return StringName(); // 15 + return StringName(); case NODE_PATH: - return NodePath(); // 15 + return NodePath(); case _RID: return RID(); case OBJECT: return (Object *)NULL; case CALLABLE: return Callable(); case SIGNAL: return Signal(); case DICTIONARY: return Dictionary(); case ARRAY: - return Array(); // 20 + return Array(); case PACKED_BYTE_ARRAY: return PackedByteArray(); case PACKED_INT32_ARRAY: return PackedInt32Array(); case PACKED_INT64_ARRAY: return PackedInt64Array(); @@ -1323,7 +1323,7 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i case PACKED_FLOAT64_ARRAY: return PackedFloat64Array(); case PACKED_STRING_ARRAY: return PackedStringArray(); case PACKED_VECTOR2_ARRAY: - return PackedVector2Array(); // 25 + return PackedVector2Array(); case PACKED_VECTOR3_ARRAY: return PackedVector3Array(); case PACKED_COLOR_ARRAY: return PackedColorArray(); default: return Variant(); @@ -1364,7 +1364,7 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i case PLANE: return (Plane(*p_args[0])); case QUAT: return (p_args[0]->operator Quat()); case AABB: - return (::AABB(*p_args[0])); // 10 + return (::AABB(*p_args[0])); case BASIS: return (Basis(p_args[0]->operator Basis())); case TRANSFORM: return (Transform(p_args[0]->operator Transform())); @@ -1372,16 +1372,16 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i // misc types case COLOR: return p_args[0]->type == Variant::STRING ? Color::html(*p_args[0]) : Color::hex(*p_args[0]); case STRING_NAME: - return (StringName(p_args[0]->operator StringName())); // 15 + return (StringName(p_args[0]->operator StringName())); case NODE_PATH: - return (NodePath(p_args[0]->operator NodePath())); // 15 + return (NodePath(p_args[0]->operator NodePath())); case _RID: return (RID(*p_args[0])); case OBJECT: return ((Object *)(p_args[0]->operator Object *())); case CALLABLE: return ((Callable)(p_args[0]->operator Callable())); case SIGNAL: return ((Signal)(p_args[0]->operator Signal())); case DICTIONARY: return p_args[0]->operator Dictionary(); case ARRAY: - return p_args[0]->operator Array(); // 20 + return p_args[0]->operator Array(); // arrays case PACKED_BYTE_ARRAY: return (PackedByteArray(*p_args[0])); @@ -1391,7 +1391,7 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i case PACKED_FLOAT64_ARRAY: return (PackedFloat64Array(*p_args[0])); case PACKED_STRING_ARRAY: return (PackedStringArray(*p_args[0])); case PACKED_VECTOR2_ARRAY: - return (PackedVector2Array(*p_args[0])); // 25 + return (PackedVector2Array(*p_args[0])); case PACKED_VECTOR3_ARRAY: return (PackedVector3Array(*p_args[0])); case PACKED_COLOR_ARRAY: return (PackedColorArray(*p_args[0])); default: return Variant(); diff --git a/core/variant_op.cpp b/core/variant_op.cpp index 8bdd8389dc..36d1278929 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -1612,7 +1612,7 @@ void Variant::set_named(const StringName &p_index, const Variant &p_value, bool } } - } break; // 10 + } break; case AABB: { if (p_value.type == Variant::VECTOR3) { @@ -1870,7 +1870,7 @@ Variant Variant::get_named(const StringName &p_index, bool *r_valid) const { return v->w; } - } break; // 10 + } break; case AABB: { const ::AABB *v = _data._aabb; @@ -2097,7 +2097,7 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid) } } - } break; // 5 + } break; case VECTOR2I: { if (p_value.type != Variant::INT && p_value.type != Variant::FLOAT) @@ -2132,7 +2132,7 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid) } } - } break; // 5 + } break; case RECT2: { if (p_value.type != Variant::VECTOR2) @@ -2368,7 +2368,7 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid) } } - } break; // 10 + } break; case AABB: { if (p_value.type != Variant::VECTOR3) @@ -2544,9 +2544,9 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid) } break; case STRING_NAME: { - } break; // 15 + } break; case NODE_PATH: { - } break; // 15 + } break; case _RID: { } break; case OBJECT: { @@ -2580,14 +2580,14 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid) valid = true; //always valid, i guess? should this really be ok? return; } break; - DEFAULT_OP_ARRAY_CMD(ARRAY, Array, ;, (*arr)[index] = p_value; return ) // 20 + DEFAULT_OP_ARRAY_CMD(ARRAY, Array, ;, (*arr)[index] = p_value; return ) DEFAULT_OP_DVECTOR_SET(PACKED_BYTE_ARRAY, uint8_t, p_value.type != Variant::FLOAT && p_value.type != Variant::INT) DEFAULT_OP_DVECTOR_SET(PACKED_INT32_ARRAY, int32_t, p_value.type != Variant::FLOAT && p_value.type != Variant::INT) DEFAULT_OP_DVECTOR_SET(PACKED_INT64_ARRAY, int64_t, p_value.type != Variant::FLOAT && p_value.type != Variant::INT) DEFAULT_OP_DVECTOR_SET(PACKED_FLOAT32_ARRAY, float, p_value.type != Variant::FLOAT && p_value.type != Variant::INT) DEFAULT_OP_DVECTOR_SET(PACKED_FLOAT64_ARRAY, double, p_value.type != Variant::FLOAT && p_value.type != Variant::INT) DEFAULT_OP_DVECTOR_SET(PACKED_STRING_ARRAY, String, p_value.type != Variant::STRING) - DEFAULT_OP_DVECTOR_SET(PACKED_VECTOR2_ARRAY, Vector2, p_value.type != Variant::VECTOR2) // 25 + DEFAULT_OP_DVECTOR_SET(PACKED_VECTOR2_ARRAY, Vector2, p_value.type != Variant::VECTOR2) DEFAULT_OP_DVECTOR_SET(PACKED_VECTOR3_ARRAY, Vector3, p_value.type != Variant::VECTOR3) DEFAULT_OP_DVECTOR_SET(PACKED_COLOR_ARRAY, Color, p_value.type != Variant::COLOR) default: @@ -2660,7 +2660,7 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const { } } - } break; // 5 + } break; case VECTOR2I: { if (p_index.get_type() == Variant::INT || p_index.get_type() == Variant::FLOAT) { @@ -2688,7 +2688,7 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const { } } - } break; // 5 + } break; case RECT2: { if (p_index.get_type() == Variant::STRING) { @@ -2867,7 +2867,7 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const { } } - } break; // 10 + } break; case AABB: { if (p_index.get_type() == Variant::STRING) { @@ -3000,9 +3000,9 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const { } break; case STRING_NAME: { - } break; // 15 + } break; case NODE_PATH: { - } break; // 15 + } break; case _RID: { } break; case OBJECT: { @@ -3034,14 +3034,14 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const { return *res; } } break; - DEFAULT_OP_ARRAY_CMD(ARRAY, const Array, ;, return (*arr)[index]) // 20 + DEFAULT_OP_ARRAY_CMD(ARRAY, const Array, ;, return (*arr)[index]) DEFAULT_OP_DVECTOR_GET(PACKED_BYTE_ARRAY, uint8_t) DEFAULT_OP_DVECTOR_GET(PACKED_INT32_ARRAY, int32_t) DEFAULT_OP_DVECTOR_GET(PACKED_INT64_ARRAY, int64_t) DEFAULT_OP_DVECTOR_GET(PACKED_FLOAT32_ARRAY, float) DEFAULT_OP_DVECTOR_GET(PACKED_FLOAT64_ARRAY, double) DEFAULT_OP_DVECTOR_GET(PACKED_STRING_ARRAY, String) - DEFAULT_OP_DVECTOR_GET(PACKED_VECTOR2_ARRAY, Vector2) // 25 + DEFAULT_OP_DVECTOR_GET(PACKED_VECTOR2_ARRAY, Vector2) DEFAULT_OP_DVECTOR_GET(PACKED_VECTOR3_ARRAY, Vector3) DEFAULT_OP_DVECTOR_GET(PACKED_COLOR_ARRAY, Color) default: @@ -3103,7 +3103,7 @@ bool Variant::in(const Variant &p_index, bool *r_valid) const { const Dictionary *dic = reinterpret_cast<const Dictionary *>(_data._mem); return dic->has(p_index); - } break; // 20 + } break; case ARRAY: { const Array *arr = reinterpret_cast<const Array *>(_data._mem); @@ -3302,13 +3302,13 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::FLOAT, "x")); p_list->push_back(PropertyInfo(Variant::FLOAT, "y")); - } break; // 5 + } break; case VECTOR2I: { p_list->push_back(PropertyInfo(Variant::INT, "x")); p_list->push_back(PropertyInfo(Variant::INT, "y")); - } break; // 5 + } break; case RECT2: { p_list->push_back(PropertyInfo(Variant::VECTOR2, "position")); @@ -3360,7 +3360,7 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::FLOAT, "z")); p_list->push_back(PropertyInfo(Variant::FLOAT, "w")); - } break; // 10 + } break; case AABB: { p_list->push_back(PropertyInfo(Variant::VECTOR3, "position")); p_list->push_back(PropertyInfo(Variant::VECTOR3, "size")); @@ -3394,9 +3394,9 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const { } break; case STRING_NAME: { - } break; // 15 + } break; case NODE_PATH: { - } break; // 15 + } break; case _RID: { } break; case OBJECT: { @@ -3427,14 +3427,14 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const { } } } break; - case ARRAY: // 20 + case ARRAY: case PACKED_BYTE_ARRAY: case PACKED_INT32_ARRAY: case PACKED_INT64_ARRAY: case PACKED_FLOAT32_ARRAY: case PACKED_FLOAT64_ARRAY: case PACKED_STRING_ARRAY: - case PACKED_VECTOR2_ARRAY: // 25 + case PACKED_VECTOR2_ARRAY: case PACKED_VECTOR3_ARRAY: case PACKED_COLOR_ARRAY: { diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index 0bf1120009..3d22c5c6ed 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -1480,76 +1480,94 @@ <constant name="TYPE_VECTOR2" value="5" enum="Variant.Type"> Variable is of type [Vector2]. </constant> - <constant name="TYPE_RECT2" value="6" enum="Variant.Type"> + <constant name="TYPE_VECTOR2I" value="6" enum="Variant.Type"> + Variable is of type [Vector2i]. + </constant> + <constant name="TYPE_RECT2" value="7" enum="Variant.Type"> Variable is of type [Rect2]. </constant> - <constant name="TYPE_VECTOR3" value="7" enum="Variant.Type"> + <constant name="TYPE_RECT2I" value="8" enum="Variant.Type"> + Variable is of type [Rect2i]. + </constant> + <constant name="TYPE_VECTOR3" value="9" enum="Variant.Type"> Variable is of type [Vector3]. </constant> - <constant name="TYPE_TRANSFORM2D" value="8" enum="Variant.Type"> + <constant name="TYPE_VECTOR3I" value="10" enum="Variant.Type"> + Variable is of type [Vector3i]. + </constant> + <constant name="TYPE_TRANSFORM2D" value="11" enum="Variant.Type"> Variable is of type [Transform2D]. </constant> - <constant name="TYPE_PLANE" value="9" enum="Variant.Type"> + <constant name="TYPE_PLANE" value="12" enum="Variant.Type"> Variable is of type [Plane]. </constant> - <constant name="TYPE_QUAT" value="10" enum="Variant.Type"> + <constant name="TYPE_QUAT" value="13" enum="Variant.Type"> Variable is of type [Quat]. </constant> - <constant name="TYPE_AABB" value="11" enum="Variant.Type"> + <constant name="TYPE_AABB" value="14" enum="Variant.Type"> Variable is of type [AABB]. </constant> - <constant name="TYPE_BASIS" value="12" enum="Variant.Type"> + <constant name="TYPE_BASIS" value="15" enum="Variant.Type"> Variable is of type [Basis]. </constant> - <constant name="TYPE_TRANSFORM" value="13" enum="Variant.Type"> + <constant name="TYPE_TRANSFORM" value="16" enum="Variant.Type"> Variable is of type [Transform]. </constant> - <constant name="TYPE_COLOR" value="14" enum="Variant.Type"> + <constant name="TYPE_COLOR" value="17" enum="Variant.Type"> Variable is of type [Color]. </constant> - <constant name="TYPE_STRING_NAME" value="15" enum="Variant.Type"> + <constant name="TYPE_STRING_NAME" value="18" enum="Variant.Type"> + Variable is of type [StringName]. </constant> - <constant name="TYPE_NODE_PATH" value="16" enum="Variant.Type"> + <constant name="TYPE_NODE_PATH" value="19" enum="Variant.Type"> Variable is of type [NodePath]. </constant> - <constant name="TYPE_RID" value="17" enum="Variant.Type"> + <constant name="TYPE_RID" value="20" enum="Variant.Type"> Variable is of type [RID]. </constant> - <constant name="TYPE_OBJECT" value="18" enum="Variant.Type"> + <constant name="TYPE_OBJECT" value="21" enum="Variant.Type"> Variable is of type [Object]. </constant> - <constant name="TYPE_CALLABLE" value="19" enum="Variant.Type"> + <constant name="TYPE_CALLABLE" value="22" enum="Variant.Type"> + Variable is of type [Callable]. </constant> - <constant name="TYPE_SIGNAL" value="20" enum="Variant.Type"> + <constant name="TYPE_SIGNAL" value="23" enum="Variant.Type"> + Variable is of type [Signal]. </constant> - <constant name="TYPE_DICTIONARY" value="21" enum="Variant.Type"> + <constant name="TYPE_DICTIONARY" value="24" enum="Variant.Type"> Variable is of type [Dictionary]. </constant> - <constant name="TYPE_ARRAY" value="22" enum="Variant.Type"> + <constant name="TYPE_ARRAY" value="25" enum="Variant.Type"> Variable is of type [Array]. </constant> - <constant name="TYPE_RAW_ARRAY" value="23" enum="Variant.Type"> + <constant name="TYPE_RAW_ARRAY" value="26" enum="Variant.Type"> Variable is of type [PackedByteArray]. </constant> - <constant name="TYPE_INT_ARRAY" value="24" enum="Variant.Type"> - Variable is of type [PackedIntArray]. + <constant name="TYPE_INT32_ARRAY" value="27" enum="Variant.Type"> + Variable is of type [PackedInt32Array]. + </constant> + <constant name="TYPE_INT64_ARRAY" value="28" enum="Variant.Type"> + Variable is of type [PackedInt64Array]. + </constant> + <constant name="TYPE_FLOAT32_ARRAY" value="29" enum="Variant.Type"> + Variable is of type [PackedFloat32Array]. </constant> - <constant name="TYPE_REAL_ARRAY" value="25" enum="Variant.Type"> - Variable is of type [PackedRealArray]. + <constant name="TYPE_FLOAT64_ARRAY" value="30" enum="Variant.Type"> + Variable is of type [PackedFloat64Array]. </constant> - <constant name="TYPE_STRING_ARRAY" value="26" enum="Variant.Type"> + <constant name="TYPE_STRING_ARRAY" value="31" enum="Variant.Type"> Variable is of type [PackedStringArray]. </constant> - <constant name="TYPE_VECTOR2_ARRAY" value="27" enum="Variant.Type"> + <constant name="TYPE_VECTOR2_ARRAY" value="32" enum="Variant.Type"> Variable is of type [PackedVector2Array]. </constant> - <constant name="TYPE_VECTOR3_ARRAY" value="28" enum="Variant.Type"> + <constant name="TYPE_VECTOR3_ARRAY" value="33" enum="Variant.Type"> Variable is of type [PackedVector3Array]. </constant> - <constant name="TYPE_COLOR_ARRAY" value="29" enum="Variant.Type"> + <constant name="TYPE_COLOR_ARRAY" value="34" enum="Variant.Type"> Variable is of type [PackedColorArray]. </constant> - <constant name="TYPE_MAX" value="30" enum="Variant.Type"> + <constant name="TYPE_MAX" value="35" enum="Variant.Type"> Represents the size of the [enum Variant.Type] enum. </constant> <constant name="OP_EQUAL" value="0" enum="Variant.Operator"> diff --git a/doc/classes/AStar.xml b/doc/classes/AStar.xml index d175aa6f45..e930abba87 100644 --- a/doc/classes/AStar.xml +++ b/doc/classes/AStar.xml @@ -152,7 +152,7 @@ </description> </method> <method name="get_id_path"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="from_id" type="int"> </argument> @@ -185,7 +185,7 @@ </description> </method> <method name="get_point_connections"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="id" type="int"> </argument> diff --git a/doc/classes/AStar2D.xml b/doc/classes/AStar2D.xml index af1fb3e273..2639f62552 100644 --- a/doc/classes/AStar2D.xml +++ b/doc/classes/AStar2D.xml @@ -111,7 +111,7 @@ </description> </method> <method name="get_id_path"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="from_id" type="int"> </argument> @@ -144,7 +144,7 @@ </description> </method> <method name="get_point_connections"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="id" type="int"> </argument> diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml index 51de591f49..0926ef9855 100644 --- a/doc/classes/Animation.xml +++ b/doc/classes/Animation.xml @@ -274,7 +274,7 @@ </description> </method> <method name="method_track_get_key_indices" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="track_idx" type="int"> </argument> @@ -627,7 +627,7 @@ </description> </method> <method name="value_track_get_key_indices" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="track_idx" type="int"> </argument> diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml index f99af5b091..a294967fc9 100644 --- a/doc/classes/Array.xml +++ b/doc/classes/Array.xml @@ -58,19 +58,37 @@ <method name="Array"> <return type="Array"> </return> - <argument index="0" name="from" type="PackedRealArray"> + <argument index="0" name="from" type="PackedFloat64Array"> </argument> <description> - Constructs an array from a [PackedRealArray]. + Constructs an array from a [PackedFloat64Array]. </description> </method> <method name="Array"> <return type="Array"> </return> - <argument index="0" name="from" type="PackedIntArray"> + <argument index="0" name="from" type="PackedFloat32Array"> </argument> <description> - Constructs an array from a [PackedIntArray]. + Constructs an array from a [PackedFloat32Array]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="PackedInt64Array"> + </argument> + <description> + Constructs an array from a [PackedInt64Array]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="PackedInt32Array"> + </argument> + <description> + Constructs an array from a [PackedInt32Array]. </description> </method> <method name="Array"> diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml index 3c599792ad..33b62054df 100644 --- a/doc/classes/ArrayMesh.xml +++ b/doc/classes/ArrayMesh.xml @@ -208,7 +208,7 @@ [PackedVector3Array] of vertex normals. </constant> <constant name="ARRAY_TANGENT" value="2" enum="ArrayType"> - [PackedRealArray] of vertex tangents. Each element in groups of 4 floats, first 3 floats determine the tangent, and the last the binormal direction as -1 or 1. + [PackedFloat32Array] of vertex tangents. Each element in groups of 4 floats, first 3 floats determine the tangent, and the last the binormal direction as -1 or 1. </constant> <constant name="ARRAY_COLOR" value="3" enum="ArrayType"> [PackedColorArray] of vertex colors. @@ -220,13 +220,13 @@ [PackedVector2Array] for second UV coordinates. </constant> <constant name="ARRAY_BONES" value="6" enum="ArrayType"> - [PackedRealArray] or [PackedIntArray] of bone indices. Each element in groups of 4 floats. + [PackedFloat32Array] or [PackedInt32Array] of bone indices. Each element in groups of 4 floats. </constant> <constant name="ARRAY_WEIGHTS" value="7" enum="ArrayType"> - [PackedRealArray] of bone weights. Each element in groups of 4 floats. + [PackedFloat32Array] of bone weights. Each element in groups of 4 floats. </constant> <constant name="ARRAY_INDEX" value="8" enum="ArrayType"> - [PackedIntArray] of integers used as indices referencing vertices, colors, normals, tangents, and textures. All of those arrays must have the same number of elements as the vertex array. No index can be beyond the vertex array size. When this index array is present, it puts the function into "index mode," where the index selects the *i*'th vertex, normal, tangent, color, UV, etc. This means if you want to have different normals or colors along an edge, you have to duplicate the vertices. + [PackedInt32Array] of integers used as indices referencing vertices, colors, normals, tangents, and textures. All of those arrays must have the same number of elements as the vertex array. No index can be beyond the vertex array size. When this index array is present, it puts the function into "index mode," where the index selects the *i*'th vertex, normal, tangent, color, UV, etc. This means if you want to have different normals or colors along an edge, you have to duplicate the vertices. For triangles, the index array is interpreted as triples, referring to the vertices of each triangle. For lines, the index array is in pairs indicating the start and end of each line. </constant> <constant name="ARRAY_MAX" value="9" enum="ArrayType"> diff --git a/doc/classes/BoxContainer.xml b/doc/classes/BoxContainer.xml index 4b5d4c853a..0d8233e6ff 100644 --- a/doc/classes/BoxContainer.xml +++ b/doc/classes/BoxContainer.xml @@ -4,7 +4,7 @@ Base class for box containers. </brief_description> <description> - Arranges child controls vertically or horizontally, and rearranges the controls automatically when their minimum size changes. + Arranges child [Control] nodes vertically or horizontally, and rearranges them automatically when their minimum size changes. </description> <tutorials> </tutorials> @@ -15,13 +15,13 @@ <argument index="0" name="begin" type="bool"> </argument> <description> - Adds a control to the box as a spacer. If [code]true[/code], [code]begin[/code] will insert the spacer control in front of other children. + Adds a [Control] node to the box as a spacer. If [code]begin[/code] is [code]true[/code], it will insert the [Control] node in front of all other children. </description> </method> </methods> <members> <member name="alignment" type="int" setter="set_alignment" getter="get_alignment" enum="BoxContainer.AlignMode" default="0"> - The alignment of the container's children (must be one of [constant ALIGN_BEGIN], [constant ALIGN_CENTER] or [constant ALIGN_END]). + The alignment of the container's children (must be one of [constant ALIGN_BEGIN], [constant ALIGN_CENTER], or [constant ALIGN_END]). </member> </members> <constants> diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml index e6251a1d66..dec7c907a4 100644 --- a/doc/classes/CanvasItem.xml +++ b/doc/classes/CanvasItem.xml @@ -260,7 +260,7 @@ <argument index="9" name="texture_repeat" type="int" enum="CanvasItem.TextureRepeat" default="0"> </argument> <description> - Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points for a triangle and 4 points for a quad. + Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points for a triangle, and 4 points for a quad. </description> </method> <method name="draw_rect"> diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml index 0805a87d18..5ab929d911 100644 --- a/doc/classes/ColorPicker.xml +++ b/doc/classes/ColorPicker.xml @@ -4,7 +4,7 @@ Color picker control. </brief_description> <description> - [Control] node displaying a color picker widget. It's useful for selecting a color from an RGB/RGBA colorspace. + Displays a color picker widget. Useful for selecting a color from an RGB/RGBA colorspace. </description> <tutorials> </tutorials> diff --git a/doc/classes/Curve3D.xml b/doc/classes/Curve3D.xml index c5345c8025..5024cdefbd 100644 --- a/doc/classes/Curve3D.xml +++ b/doc/classes/Curve3D.xml @@ -48,10 +48,10 @@ </description> </method> <method name="get_baked_tilts" qualifiers="const"> - <return type="PackedRealArray"> + <return type="PackedFloat32Array"> </return> <description> - Returns the cache of tilts as a [PackedRealArray]. + Returns the cache of tilts as a [PackedFloat32Array]. </description> </method> <method name="get_baked_up_vectors" qualifiers="const"> diff --git a/doc/classes/GIProbeData.xml b/doc/classes/GIProbeData.xml index 3504d127b8..228e1afb4c 100644 --- a/doc/classes/GIProbeData.xml +++ b/doc/classes/GIProbeData.xml @@ -22,7 +22,7 @@ </argument> <argument index="5" name="distance_field" type="PackedByteArray"> </argument> - <argument index="6" name="level_counts" type="PackedIntArray"> + <argument index="6" name="level_counts" type="PackedInt32Array"> </argument> <description> </description> @@ -40,7 +40,7 @@ </description> </method> <method name="get_level_counts" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <description> </description> diff --git a/doc/classes/Geometry.xml b/doc/classes/Geometry.xml index 9d4e0d0388..b2d77f6f92 100644 --- a/doc/classes/Geometry.xml +++ b/doc/classes/Geometry.xml @@ -445,21 +445,21 @@ </description> </method> <method name="triangulate_delaunay_2d"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="points" type="PackedVector2Array"> </argument> <description> - Triangulates the area specified by discrete set of [code]points[/code] such that no point is inside the circumcircle of any resulting triangle. Returns a [PackedIntArray] where each triangle consists of three consecutive point indices into [code]points[/code] (i.e. the returned array will have [code]n * 3[/code] elements, with [code]n[/code] being the number of found triangles). If the triangulation did not succeed, an empty [PackedIntArray] is returned. + Triangulates the area specified by discrete set of [code]points[/code] such that no point is inside the circumcircle of any resulting triangle. Returns a [PackedInt32Array] where each triangle consists of three consecutive point indices into [code]points[/code] (i.e. the returned array will have [code]n * 3[/code] elements, with [code]n[/code] being the number of found triangles). If the triangulation did not succeed, an empty [PackedInt32Array] is returned. </description> </method> <method name="triangulate_polygon"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="polygon" type="PackedVector2Array"> </argument> <description> - Triangulates the polygon specified by the points in [code]polygon[/code]. Returns a [PackedIntArray] where each triangle consists of three consecutive point indices into [code]polygon[/code] (i.e. the returned array will have [code]n * 3[/code] elements, with [code]n[/code] being the number of found triangles). If the triangulation did not succeed, an empty [PackedIntArray] is returned. + Triangulates the polygon specified by the points in [code]polygon[/code]. Returns a [PackedInt32Array] where each triangle consists of three consecutive point indices into [code]polygon[/code] (i.e. the returned array will have [code]n * 3[/code] elements, with [code]n[/code] being the number of found triangles). If the triangulation did not succeed, an empty [PackedInt32Array] is returned. </description> </method> </methods> diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml index 12c87f9cff..05aebef9de 100644 --- a/doc/classes/Gradient.xml +++ b/doc/classes/Gradient.xml @@ -90,8 +90,8 @@ <member name="colors" type="PackedColorArray" setter="set_colors" getter="get_colors" default="PackedColorArray( 0, 0, 0, 1, 1, 1, 1, 1 )"> Gradient's colors returned as a [PackedColorArray]. </member> - <member name="offsets" type="PackedRealArray" setter="set_offsets" getter="get_offsets" default="PackedRealArray( 0, 1 )"> - Gradient's offsets returned as a [PackedRealArray]. + <member name="offsets" type="PackedFloat32Array" setter="set_offsets" getter="get_offsets" default="PackedFloat32Array( 0, 1 )"> + Gradient's offsets returned as a [PackedFloat32Array]. </member> </members> <constants> diff --git a/doc/classes/HeightMapShape.xml b/doc/classes/HeightMapShape.xml index 505961cd0c..029f3642d2 100644 --- a/doc/classes/HeightMapShape.xml +++ b/doc/classes/HeightMapShape.xml @@ -11,7 +11,7 @@ <methods> </methods> <members> - <member name="map_data" type="PackedRealArray" setter="set_map_data" getter="get_map_data" default="PackedRealArray( 0, 0, 0, 0 )"> + <member name="map_data" type="PackedFloat32Array" setter="set_map_data" getter="get_map_data" default="PackedFloat32Array( 0, 0, 0, 0 )"> Height map data, pool array must be of [member map_width] * [member map_depth] size. </member> <member name="map_depth" type="int" setter="set_map_depth" getter="get_map_depth" default="2"> diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml index d53fabaacb..c6ed1e22ed 100644 --- a/doc/classes/ItemList.xml +++ b/doc/classes/ItemList.xml @@ -142,7 +142,7 @@ </description> </method> <method name="get_selected_items"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <description> Returns an array with the indexes of the selected items. diff --git a/doc/classes/MeshDataTool.xml b/doc/classes/MeshDataTool.xml index bdc9d20305..81ff5969e3 100644 --- a/doc/classes/MeshDataTool.xml +++ b/doc/classes/MeshDataTool.xml @@ -57,7 +57,7 @@ </description> </method> <method name="get_edge_faces" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -160,7 +160,7 @@ </description> </method> <method name="get_vertex_bones" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -185,7 +185,7 @@ </description> </method> <method name="get_vertex_edges" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -194,7 +194,7 @@ </description> </method> <method name="get_vertex_faces" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -248,7 +248,7 @@ </description> </method> <method name="get_vertex_weights" qualifiers="const"> - <return type="PackedRealArray"> + <return type="PackedFloat32Array"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -303,7 +303,7 @@ </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="bones" type="PackedIntArray"> + <argument index="1" name="bones" type="PackedInt32Array"> </argument> <description> Sets the bones of the given vertex. @@ -380,7 +380,7 @@ </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="weights" type="PackedRealArray"> + <argument index="1" name="weights" type="PackedFloat32Array"> </argument> <description> Sets the bone weights of the given vertex. diff --git a/doc/classes/MeshLibrary.xml b/doc/classes/MeshLibrary.xml index ec12a0ff42..e8431e64f4 100644 --- a/doc/classes/MeshLibrary.xml +++ b/doc/classes/MeshLibrary.xml @@ -36,7 +36,7 @@ </description> </method> <method name="get_item_list" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <description> Returns the list of item IDs in use. diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml index 6831fc88df..24b87f8e28 100644 --- a/doc/classes/MultiMesh.xml +++ b/doc/classes/MultiMesh.xml @@ -105,7 +105,7 @@ </method> </methods> <members> - <member name="buffer" type="PackedRealArray" setter="set_buffer" getter="get_buffer" default="PackedRealArray( )"> + <member name="buffer" type="PackedFloat32Array" setter="set_buffer" getter="get_buffer" default="PackedFloat32Array( )"> </member> <member name="color_array" type="PackedColorArray" setter="_set_color_array" getter="_get_color_array"> </member> diff --git a/doc/classes/MultiplayerAPI.xml b/doc/classes/MultiplayerAPI.xml index 968357ea07..9c753818d9 100644 --- a/doc/classes/MultiplayerAPI.xml +++ b/doc/classes/MultiplayerAPI.xml @@ -19,7 +19,7 @@ </description> </method> <method name="get_network_connected_peers" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <description> Returns the peer IDs of all connected peers of this MultiplayerAPI's [member network_peer]. diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml index 04ebb1336c..6deca4394f 100644 --- a/doc/classes/NavigationMesh.xml +++ b/doc/classes/NavigationMesh.xml @@ -10,7 +10,7 @@ <method name="add_polygon"> <return type="void"> </return> - <argument index="0" name="polygon" type="PackedIntArray"> + <argument index="0" name="polygon" type="PackedInt32Array"> </argument> <description> </description> @@ -38,7 +38,7 @@ </description> </method> <method name="get_polygon"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="idx" type="int"> </argument> diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml index 908617fb91..da291b7337 100644 --- a/doc/classes/NavigationPolygon.xml +++ b/doc/classes/NavigationPolygon.xml @@ -18,7 +18,7 @@ var polygon = NavigationPolygon.new() var vertices = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)]) polygon.set_vertices(vertices) - var indices = PackedIntArray(0, 3, 1) + var indices = PackedInt32Array(0, 3, 1) polygon.add_polygon(indices) $NavigationPolygonInstance.navpoly = polygon [/codeblock] @@ -49,7 +49,7 @@ <method name="add_polygon"> <return type="void"> </return> - <argument index="0" name="polygon" type="PackedIntArray"> + <argument index="0" name="polygon" type="PackedInt32Array"> </argument> <description> Adds a polygon using the indices of the vertices you get when calling [method get_vertices]. @@ -86,12 +86,12 @@ </description> </method> <method name="get_polygon"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Returns a [PackedIntArray] containing the indices of the vertices of a created polygon. + Returns a [PackedInt32Array] containing the indices of the vertices of a created polygon. </description> </method> <method name="get_polygon_count" qualifiers="const"> diff --git a/doc/classes/NavigationServer.xml b/doc/classes/NavigationServer.xml index 5eb9f34ead..1f65a6004e 100644 --- a/doc/classes/NavigationServer.xml +++ b/doc/classes/NavigationServer.xml @@ -358,13 +358,15 @@ Control activation of this server. </description> </method> - <method name="step"> + <method name="process"> <return type="void"> </return> <argument index="0" name="delta_time" type="float"> </argument> <description> - Steps the server. This is not threadsafe and must be called in single thread. + Process the collision avoidance agents. + The result of this process is needed by the physics server, so this must be called in the main thread. + Note: This function is not thread safe. </description> </method> </methods> diff --git a/doc/classes/PackedRealArray.xml b/doc/classes/PackedFloat32Array.xml index 0d40c2517f..ee82586cdb 100644 --- a/doc/classes/PackedRealArray.xml +++ b/doc/classes/PackedFloat32Array.xml @@ -1,22 +1,23 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PackedRealArray" version="4.0"> +<class name="PackedFloat32Array" version="4.0"> <brief_description> - A packed [Array] of reals ([float]). + A packed [Array] of 32-bit floating-point values. </brief_description> <description> - An [Array] specifically designed to hold floating-point values ([float]). Packs data tightly, so it saves memory for large array sizes. + An [Array] specifically designed to hold 32-bit floating-point values. Packs data tightly, so it saves memory for large array sizes. [b]Note:[/b] This type is passed by value and not by reference. + If you need to pack 64-bit floats tightly, see [PackedFloat64Array]. </description> <tutorials> </tutorials> <methods> - <method name="PackedRealArray"> - <return type="PackedRealArray"> + <method name="PackedFloat32Array"> + <return type="PackedFloat32Array"> </return> <argument index="0" name="from" type="Array"> </argument> <description> - Constructs a new [PackedRealArray]. Optionally, you can pass in a generic [Array] that will be converted. + Constructs a new [PackedFloat32Array]. Optionally, you can pass in a generic [Array] that will be converted. </description> </method> <method name="append"> @@ -31,10 +32,10 @@ <method name="append_array"> <return type="void"> </return> - <argument index="0" name="array" type="PackedRealArray"> + <argument index="0" name="array" type="PackedFloat32Array"> </argument> <description> - Appends a [PackedRealArray] at the end of this array. + Appends a [PackedFloat32Array] at the end of this array. </description> </method> <method name="empty"> diff --git a/doc/classes/PackedFloat64Array.xml b/doc/classes/PackedFloat64Array.xml new file mode 100644 index 0000000000..ce2300c65a --- /dev/null +++ b/doc/classes/PackedFloat64Array.xml @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PackedFloat64Array" version="4.0"> + <brief_description> + A packed [Array] of 64-bit floating-point values. + </brief_description> + <description> + An [Array] specifically designed to hold 64-bit floating-point values. Packs data tightly, so it saves memory for large array sizes. + [b]Note:[/b] This type is passed by value and not by reference. + If you only need to pack 32-bit floats tightly, see [PackedFloat32Array] for a more memory-friendly alternative. + </description> + <tutorials> + </tutorials> + <methods> + <method name="PackedFloat64Array"> + <return type="PackedFloat64Array"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Constructs a new [PackedFloat64Array]. Optionally, you can pass in a generic [Array] that will be converted. + </description> + </method> + <method name="append"> + <return type="void"> + </return> + <argument index="0" name="value" type="float"> + </argument> + <description> + Appends an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <return type="void"> + </return> + <argument index="0" name="array" type="PackedFloat64Array"> + </argument> + <description> + Appends a [PackedFloat64Array] at the end of this array. + </description> + </method> + <method name="empty"> + <return type="bool"> + </return> + <description> + Returns [code]true[/code] if the array is empty. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="value" type="float"> + </argument> + <description> + Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]). + </description> + </method> + <method name="invert"> + <return type="void"> + </return> + <description> + Reverses the order of the elements in the array. + </description> + </method> + <method name="push_back"> + <return type="void"> + </return> + <argument index="0" name="value" type="float"> + </argument> + <description> + Appends an element at the end of the array. + </description> + </method> + <method name="remove"> + <return type="void"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Removes an element from the array by index. + </description> + </method> + <method name="resize"> + <return type="void"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. + </description> + </method> + <method name="set"> + <return type="void"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="value" type="float"> + </argument> + <description> + Changes the float at the given index. + </description> + </method> + <method name="size"> + <return type="int"> + </return> + <description> + Returns the size of the array. + </description> + </method> + </methods> + <constants> + </constants> +</class> diff --git a/doc/classes/PackedInt32Array.xml b/doc/classes/PackedInt32Array.xml new file mode 100644 index 0000000000..176c624956 --- /dev/null +++ b/doc/classes/PackedInt32Array.xml @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PackedInt32Array" version="4.0"> + <brief_description> + A packed [Array] of 32-bit integers. + </brief_description> + <description> + An [Array] specifically designed to hold 32-bit integer values. Packs data tightly, so it saves memory for large array sizes. + [b]Note:[/b] This type is passed by value and not by reference. + [b]Note:[/b] This type stores signed 32-bit integers, which means it can take values in the interval [code][-2^31, 2^31 - 1][/code], i.e. [code][-2147483648, 2147483647][/code]. Exceeding those bounds will wrap around. In comparison, [int] uses signed 64-bit integers which can hold much larger values. If you need to pack 64-bit integers tightly, see [PackedInt64Array]. + </description> + <tutorials> + </tutorials> + <methods> + <method name="PackedInt32Array"> + <return type="PackedInt32Array"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Constructs a new [PackedInt32Array]. Optionally, you can pass in a generic [Array] that will be converted. + </description> + </method> + <method name="append"> + <return type="void"> + </return> + <argument index="0" name="integer" type="int"> + </argument> + <description> + Appends an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <return type="void"> + </return> + <argument index="0" name="array" type="PackedInt32Array"> + </argument> + <description> + Appends a [PackedInt32Array] at the end of this array. + </description> + </method> + <method name="empty"> + <return type="bool"> + </return> + <description> + Returns [code]true[/code] if the array is empty. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="integer" type="int"> + </argument> + <description> + Inserts a new integer at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]). + </description> + </method> + <method name="invert"> + <return type="void"> + </return> + <description> + Reverses the order of the elements in the array. + </description> + </method> + <method name="push_back"> + <return type="void"> + </return> + <argument index="0" name="integer" type="int"> + </argument> + <description> + Appends a value to the array. + </description> + </method> + <method name="remove"> + <return type="void"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Removes an element from the array by index. + </description> + </method> + <method name="resize"> + <return type="void"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. + </description> + </method> + <method name="set"> + <return type="void"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="integer" type="int"> + </argument> + <description> + Changes the integer at the given index. + </description> + </method> + <method name="size"> + <return type="int"> + </return> + <description> + Returns the array size. + </description> + </method> + </methods> + <constants> + </constants> +</class> diff --git a/doc/classes/PackedIntArray.xml b/doc/classes/PackedInt64Array.xml index ca98157be5..d8a8071590 100644 --- a/doc/classes/PackedIntArray.xml +++ b/doc/classes/PackedInt64Array.xml @@ -1,23 +1,23 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PackedIntArray" version="4.0"> +<class name="PackedInt64Array" version="4.0"> <brief_description> - A packed [Array] of integers ([int]). + A packed [Array] of 64-bit integers. </brief_description> <description> - An [Array] specifically designed to hold integer values ([int]). Packs data tightly, so it saves memory for large array sizes. + An [Array] specifically designed to hold 64-bit integer values. Packs data tightly, so it saves memory for large array sizes. [b]Note:[/b] This type is passed by value and not by reference. - [b]Note:[/b] This type is limited to signed 32-bit integers, which means it can only take values in the interval [code][-2^31, 2^31 - 1][/code], i.e. [code][-2147483648, 2147483647][/code]. Exceeding those bounds will wrap around. In comparison, [int] uses signed 64-bit integers which can hold much larger values. + [b]Note:[/b] This type stores signed 64-bit integers, which means it can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around. If you only need to pack 32-bit integers tightly, see [PackedInt32Array] for a more memory-friendly alternative. </description> <tutorials> </tutorials> <methods> - <method name="PackedIntArray"> - <return type="PackedIntArray"> + <method name="PackedInt64Array"> + <return type="PackedInt64Array"> </return> <argument index="0" name="from" type="Array"> </argument> <description> - Constructs a new [PackedIntArray]. Optionally, you can pass in a generic [Array] that will be converted. + Constructs a new [PackedInt64Array]. Optionally, you can pass in a generic [Array] that will be converted. </description> </method> <method name="append"> @@ -32,10 +32,10 @@ <method name="append_array"> <return type="void"> </return> - <argument index="0" name="array" type="PackedIntArray"> + <argument index="0" name="array" type="PackedInt64Array"> </argument> <description> - Appends a [PackedIntArray] at the end of this array. + Appends a [PackedInt64Array] at the end of this array. </description> </method> <method name="empty"> diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml index 8efe1e2b4b..e422545b7b 100644 --- a/doc/classes/PackedScene.xml +++ b/doc/classes/PackedScene.xml @@ -65,7 +65,7 @@ </method> </methods> <members> - <member name="_bundled" type="Dictionary" setter="_set_bundled_scene" getter="_get_bundled_scene" default="{"conn_count": 0,"conns": PackedIntArray( ),"editable_instances": [ ],"names": PackedStringArray( ),"node_count": 0,"node_paths": [ ],"nodes": PackedIntArray( ),"variants": [ ],"version": 2}"> + <member name="_bundled" type="Dictionary" setter="_set_bundled_scene" getter="_get_bundled_scene" default="{"conn_count": 0,"conns": PackedInt32Array( ),"editable_instances": [ ],"names": PackedStringArray( ),"node_count": 0,"node_paths": [ ],"nodes": PackedInt32Array( ),"variants": [ ],"version": 2}"> A dictionary representation of the scene contents. Available keys include "rnames" and "variants" for resources, "node_count", "nodes", "node_paths" for nodes, "editable_instances" for base scene children overrides, "conn_count" and "conns" for signal connections, and "version" for the format style of the PackedScene. </member> diff --git a/doc/classes/Polygon2D.xml b/doc/classes/Polygon2D.xml index 2a408e277a..f777545733 100644 --- a/doc/classes/Polygon2D.xml +++ b/doc/classes/Polygon2D.xml @@ -14,7 +14,7 @@ </return> <argument index="0" name="path" type="NodePath"> </argument> - <argument index="1" name="weights" type="PackedRealArray"> + <argument index="1" name="weights" type="PackedFloat32Array"> </argument> <description> </description> @@ -48,7 +48,7 @@ </description> </method> <method name="get_bone_weights" qualifiers="const"> - <return type="PackedRealArray"> + <return type="PackedFloat32Array"> </return> <argument index="0" name="index" type="int"> </argument> @@ -70,7 +70,7 @@ </return> <argument index="0" name="index" type="int"> </argument> - <argument index="1" name="weights" type="PackedRealArray"> + <argument index="1" name="weights" type="PackedFloat32Array"> </argument> <description> </description> diff --git a/doc/classes/PolygonPathFinder.xml b/doc/classes/PolygonPathFinder.xml index 0b535159a7..49453d32ac 100644 --- a/doc/classes/PolygonPathFinder.xml +++ b/doc/classes/PolygonPathFinder.xml @@ -72,7 +72,7 @@ </return> <argument index="0" name="points" type="PackedVector2Array"> </argument> - <argument index="1" name="connections" type="PackedIntArray"> + <argument index="1" name="connections" type="PackedInt32Array"> </argument> <description> </description> diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml index e32b19ff00..26abfb538b 100644 --- a/doc/classes/Rect2.xml +++ b/doc/classes/Rect2.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Rect2" version="4.0"> <brief_description> - 2D axis-aligned bounding box. + 2D axis-aligned bounding box using floating point coordinates. </brief_description> <description> - Rect2 consists of a position, a size, and several utility functions. It is typically used for fast overlap tests. + [Rect2] consists of a position, a size, and several utility functions. It is typically used for fast overlap tests. + It uses floating point coordinates. </description> <tutorials> <link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link> @@ -36,6 +37,15 @@ Constructs a [Rect2] by x, y, width, and height. </description> </method> + <method name="Rect2"> + <return type="Rect2"> + </return> + <argument index="0" name="from" type="Rect2i"> + </argument> + <description> + Constructs a [Rect2] from a [Rect2i]. + </description> + </method> <method name="abs"> <return type="Rect2"> </return> diff --git a/doc/classes/Rect2i.xml b/doc/classes/Rect2i.xml new file mode 100644 index 0000000000..2e8be384c1 --- /dev/null +++ b/doc/classes/Rect2i.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="Rect2i" version="4.0"> + <brief_description> + 2D axis-aligned bounding box using integer coordinates. + </brief_description> + <description> + [Rect2i] consists of a position, a size, and several utility functions. It is typically used for fast overlap tests. + It uses integer coordinates. + </description> + <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link> + </tutorials> + <methods> + <method name="Rect2i"> + <return type="Rect2i"> + </return> + <argument index="0" name="position" type="Vector2"> + </argument> + <argument index="1" name="size" type="Vector2"> + </argument> + <description> + Constructs a [Rect2i] by position and size. + </description> + </method> + <method name="Rect2i"> + <return type="Rect2i"> + </return> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> + </argument> + <argument index="2" name="width" type="int"> + </argument> + <argument index="3" name="height" type="int"> + </argument> + <description> + Constructs a [Rect2i] by x, y, width, and height. + </description> + </method> + <method name="Rect2i"> + <return type="Rect2i"> + </return> + <argument index="0" name="from" type="Rect2"> + </argument> + <description> + Constructs a new [Rect2i] from [Rect2]. The floating point coordinates will be truncated. + </description> + </method> + </methods> + <constants> + </constants> +</class> diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml index 37f0944ca1..e6778013cf 100644 --- a/doc/classes/SceneTree.xml +++ b/doc/classes/SceneTree.xml @@ -83,7 +83,7 @@ </description> </method> <method name="get_network_connected_peers" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <description> Returns the peer IDs of all connected peers of this [SceneTree]'s [member network_peer]. diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml index 0b113bebe5..9c5634f43a 100644 --- a/doc/classes/ScrollContainer.xml +++ b/doc/classes/ScrollContainer.xml @@ -4,7 +4,9 @@ A helper node for displaying scrollable elements such as lists. </brief_description> <description> - A ScrollContainer node meant to contain a [Control] child. ScrollContainers will automatically create a scrollbar child ([HScrollBar], [VScrollBar], or both) when needed and will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the [member Control.rect_min_size] of the Control relative to the ScrollContainer. Works great with a [Panel] control. You can set [code]EXPAND[/code] on the children's size flags, so they will upscale to the ScrollContainer's size if it's larger (scroll is invisible for the chosen dimension). + A ScrollContainer node meant to contain a [Control] child. + ScrollContainers will automatically create a scrollbar child ([HScrollBar], [VScrollBar], or both) when needed and will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the [member Control.rect_min_size] of the Control relative to the ScrollContainer. + Works great with a [Panel] control. You can set [code]EXPAND[/code] on the children's size flags, so they will upscale to the ScrollContainer's size if it's larger (scroll is invisible for the chosen dimension). </description> <tutorials> </tutorials> diff --git a/doc/classes/String.xml b/doc/classes/String.xml index 7127ebdbff..1a5182b76e 100644 --- a/doc/classes/String.xml +++ b/doc/classes/String.xml @@ -49,6 +49,15 @@ <method name="String"> <return type="String"> </return> + <argument index="0" name="from" type="Vector2i"> + </argument> + <description> + Constructs a new String from the given [Vector2i]. + </description> + </method> + <method name="String"> + <return type="String"> + </return> <argument index="0" name="from" type="Rect2"> </argument> <description> @@ -58,6 +67,15 @@ <method name="String"> <return type="String"> </return> + <argument index="0" name="from" type="Rect2i"> + </argument> + <description> + Constructs a new String from the given [Rect2i]. + </description> + </method> + <method name="String"> + <return type="String"> + </return> <argument index="0" name="from" type="Vector3"> </argument> <description> @@ -67,6 +85,15 @@ <method name="String"> <return type="String"> </return> + <argument index="0" name="from" type="Vector3i"> + </argument> + <description> + Constructs a new String from the given [Vector3i]. + </description> + </method> + <method name="String"> + <return type="String"> + </return> <argument index="0" name="from" type="Transform2D"> </argument> <description> @@ -133,6 +160,7 @@ <argument index="0" name="from" type="StringName"> </argument> <description> + Constructs a new String from the given [StringName]. </description> </method> <method name="String"> @@ -159,6 +187,7 @@ <argument index="0" name="from" type="Callable"> </argument> <description> + Constructs a new String from the given [Callable]. </description> </method> <method name="String"> @@ -167,6 +196,7 @@ <argument index="0" name="from" type="Signal"> </argument> <description> + Constructs a new String from the given [Signal]. </description> </method> <method name="String"> @@ -199,19 +229,37 @@ <method name="String"> <return type="String"> </return> - <argument index="0" name="from" type="PackedIntArray"> + <argument index="0" name="from" type="PackedInt32Array"> + </argument> + <description> + Constructs a new String from the given [PackedInt32Array]. + </description> + </method> + <method name="String"> + <return type="String"> + </return> + <argument index="0" name="from" type="PackedInt64Array"> + </argument> + <description> + Constructs a new String from the given [PackedInt64Array]. + </description> + </method> + <method name="String"> + <return type="String"> + </return> + <argument index="0" name="from" type="PackedFloat32Array"> </argument> <description> - Constructs a new String from the given [PackedIntArray]. + Constructs a new String from the given [PackedFloat32Array]. </description> </method> <method name="String"> <return type="String"> </return> - <argument index="0" name="from" type="PackedRealArray"> + <argument index="0" name="from" type="PackedFloat64Array"> </argument> <description> - Constructs a new String from the given [PackedRealArray]. + Constructs a new String from the given [PackedFloat64Array]. </description> </method> <method name="String"> @@ -849,7 +897,7 @@ </description> </method> <method name="split_floats"> - <return type="PackedRealArray"> + <return type="PackedFloat32Array"> </return> <argument index="0" name="delimiter" type="String"> </argument> diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml index a265d16cd9..4304a8df5e 100644 --- a/doc/classes/SurfaceTool.xml +++ b/doc/classes/SurfaceTool.xml @@ -22,7 +22,7 @@ <method name="add_bones"> <return type="void"> </return> - <argument index="0" name="bones" type="PackedIntArray"> + <argument index="0" name="bones" type="PackedInt32Array"> </argument> <description> Adds an array of bones for the next vertex to use. [code]bones[/code] must contain 4 integers. @@ -123,7 +123,7 @@ <method name="add_weights"> <return type="void"> </return> - <argument index="0" name="weights" type="PackedRealArray"> + <argument index="0" name="weights" type="PackedFloat32Array"> </argument> <description> Specifies weight values for next vertex to use. [code]weights[/code] must contain 4 values. diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml index 2ab8b939c7..d4eeb574eb 100644 --- a/doc/classes/TextEdit.xml +++ b/doc/classes/TextEdit.xml @@ -299,7 +299,7 @@ </description> </method> <method name="search" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="key" type="String"> </argument> @@ -311,7 +311,7 @@ </argument> <description> Perform a search inside the text. Search flags can be specified in the [enum SearchFlags] enum. - Returns an empty [code]PackedIntArray[/code] if no result was found. Otherwise, the result line and column can be accessed at indices specified in the [enum SearchResult] enum, e.g: + Returns an empty [code]PackedInt32Array[/code] if no result was found. Otherwise, the result line and column can be accessed at indices specified in the [enum SearchResult] enum, e.g: [codeblock] var result = search(key, flags, line, column) if result.size() > 0: diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml index 4eef103d1f..7b02a1a4c9 100644 --- a/doc/classes/Vector2.xml +++ b/doc/classes/Vector2.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Vector2" version="4.0"> <brief_description> - Vector used for 2D math. + Vector used for 2D math using floating point coordinates. </brief_description> <description> 2-element structure that can be used to represent positions in 2D space or any other pair of numeric values. + It uses floating point coordinates. </description> <tutorials> <link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link> @@ -13,12 +14,21 @@ <method name="Vector2"> <return type="Vector2"> </return> + <argument index="0" name="from" type="Vector2i"> + </argument> + <description> + Constructs a new [Vector2] from [Vector2i]. + </description> + </method> + <method name="Vector2"> + <return type="Vector2"> + </return> <argument index="0" name="x" type="float"> </argument> <argument index="1" name="y" type="float"> </argument> <description> - Constructs a new Vector2 from the given [code]x[/code] and [code]y[/code]. + Constructs a new [Vector2] from the given [code]x[/code] and [code]y[/code]. </description> </method> <method name="abs"> diff --git a/doc/classes/Vector2i.xml b/doc/classes/Vector2i.xml new file mode 100644 index 0000000000..a516eb01dd --- /dev/null +++ b/doc/classes/Vector2i.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="Vector2i" version="4.0"> + <brief_description> + Vector used for 2D math using integer coordinates. + </brief_description> + <description> + 2-element structure that can be used to represent positions in 2D space or any other pair of numeric values. + It uses integer coordinates. + </description> + <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link> + </tutorials> + <methods> + <method name="Vector2i"> + <return type="Vector2i"> + </return> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> + </argument> + <description> + Constructs a new [Vector2i] from the given [code]x[/code] and [code]y[/code]. + </description> + </method> + <method name="Vector2i"> + <return type="Vector2i"> + </return> + <argument index="0" name="from" type="Vector2"> + </argument> + <description> + Constructs a new [Vector2i] from [Vector2]. The floating point coordinates will be truncated. + </description> + </method> + </methods> + <constants> + <constant name="AXIS_X" value="0"> + Enumerated value for the X axis. + </constant> + <constant name="AXIS_Y" value="1"> + Enumerated value for the Y axis. + </constant> + <constant name="ZERO" value="Vector2i( 0, 0 )"> + Zero vector. + </constant> + <constant name="ONE" value="Vector2i( 1, 1 )"> + One vector. + </constant> + <constant name="LEFT" value="Vector2i( -1, 0 )"> + Left unit vector. + </constant> + <constant name="RIGHT" value="Vector2i( 1, 0 )"> + Right unit vector. + </constant> + <constant name="UP" value="Vector2i( 0, -1 )"> + Up unit vector. + </constant> + <constant name="DOWN" value="Vector2i( 0, 1 )"> + Down unit vector. + </constant> + </constants> +</class> diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml index 7ae89cc450..600c03ba7d 100644 --- a/doc/classes/Vector3.xml +++ b/doc/classes/Vector3.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Vector3" version="4.0"> <brief_description> - Vector used for 3D math. + Vector used for 3D math using floating point coordinates. </brief_description> <description> 3-element structure that can be used to represent positions in 3D space or any other pair of numeric values. + It uses floating point coordinates. </description> <tutorials> <link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link> @@ -13,6 +14,15 @@ <method name="Vector3"> <return type="Vector3"> </return> + <argument index="0" name="from" type="Vector3i"> + </argument> + <description> + Constructs a new [Vector3] from [Vector3i]. + </description> + </method> + <method name="Vector3"> + <return type="Vector3"> + </return> <argument index="0" name="x" type="float"> </argument> <argument index="1" name="y" type="float"> @@ -20,7 +30,7 @@ <argument index="2" name="z" type="float"> </argument> <description> - Returns a Vector3 with the given components. + Returns a [Vector3] with the given components. </description> </method> <method name="abs"> diff --git a/doc/classes/Vector3i.xml b/doc/classes/Vector3i.xml new file mode 100644 index 0000000000..4f5a658b89 --- /dev/null +++ b/doc/classes/Vector3i.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="Vector3i" version="4.0"> + <brief_description> + Vector used for 3D math using integer coordinates. + </brief_description> + <description> + 3-element structure that can be used to represent positions in 3D space or any other pair of numeric values. + It uses integer coordinates. + </description> + <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link> + </tutorials> + <methods> + <method name="Vector3i"> + <return type="Vector3i"> + </return> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> + </argument> + <argument index="2" name="z" type="int"> + </argument> + <description> + Returns a [Vector3i] with the given components. + </description> + </method> + <method name="Vector3i"> + <return type="Vector3i"> + </return> + <argument index="0" name="from" type="Vector3"> + </argument> + <description> + Constructs a new [Vector3i] from [Vector3]. The floating point coordinates will be truncated. + </description> + </method> + </methods> + <constants> + <constant name="AXIS_X" value="0"> + Enumerated value for the X axis. + </constant> + <constant name="AXIS_Y" value="1"> + Enumerated value for the Y axis. + </constant> + <constant name="AXIS_Z" value="2"> + Enumerated value for the Z axis. + </constant> + <constant name="ZERO" value="Vector3i( 0, 0, 0 )"> + Zero vector. + </constant> + <constant name="ONE" value="Vector3i( 1, 1, 1 )"> + One vector. + </constant> + <constant name="LEFT" value="Vector3i( -1, 0, 0 )"> + Left unit vector. + </constant> + <constant name="RIGHT" value="Vector3i( 1, 0, 0 )"> + Right unit vector. + </constant> + <constant name="UP" value="Vector3i( 0, 1, 0 )"> + Up unit vector. + </constant> + <constant name="DOWN" value="Vector3i( 0, -1, 0 )"> + Down unit vector. + </constant> + <constant name="FORWARD" value="Vector3i( 0, 0, -1 )"> + Forward unit vector. + </constant> + <constant name="BACK" value="Vector3i( 0, 0, 1 )"> + Back unit vector. + </constant> + </constants> +</class> diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml index 187fd2300a..ca2058ddbb 100644 --- a/doc/classes/VisualServer.xml +++ b/doc/classes/VisualServer.xml @@ -1943,7 +1943,7 @@ </description> </method> <method name="multimesh_get_buffer" qualifiers="const"> - <return type="PackedRealArray"> + <return type="PackedFloat32Array"> </return> <argument index="0" name="multimesh" type="RID"> </argument> @@ -2078,7 +2078,7 @@ </return> <argument index="0" name="multimesh" type="RID"> </argument> - <argument index="1" name="buffer" type="PackedRealArray"> + <argument index="1" name="buffer" type="PackedFloat32Array"> </argument> <description> </description> diff --git a/doc/classes/VisualShader.xml b/doc/classes/VisualShader.xml index 99ba665979..27ba54cb68 100644 --- a/doc/classes/VisualShader.xml +++ b/doc/classes/VisualShader.xml @@ -107,7 +107,7 @@ </description> </method> <method name="get_node_list" qualifiers="const"> - <return type="PackedIntArray"> + <return type="PackedInt32Array"> </return> <argument index="0" name="type" type="int" enum="VisualShader.Type"> </argument> diff --git a/editor/doc/doc_dump.cpp b/editor/doc/doc_dump.cpp index fa3ec7f706..b0a89ff4b8 100644 --- a/editor/doc/doc_dump.cpp +++ b/editor/doc/doc_dump.cpp @@ -198,7 +198,7 @@ void DocDump::dump(const String &p_file) { default_arg_text = Variant::get_type_name(default_arg.get_type()) + "(" + default_arg_text + ")"; break; case Variant::OBJECT: - case Variant::DICTIONARY: // 20 + case Variant::DICTIONARY: case Variant::ARRAY: case Variant::_RID: diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index a53a060479..e154b13eac 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -3173,7 +3173,7 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ editor->setup(min, max, step, hide_slider); add_property_editor(p_path, editor); - } break; // 5 + } break; case Variant::RECT2: { EditorPropertyRect2 *editor = memnew(EditorPropertyRect2); double min = -65535, max = 65535, step = default_float_step; @@ -3260,7 +3260,7 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ editor->setup(min, max, step, hide_slider); add_property_editor(p_path, editor); - } break; // 10 + } break; case Variant::AABB: { EditorPropertyAABB *editor = memnew(EditorPropertyAABB); double min = -65535, max = 65535, step = default_float_step; @@ -3349,7 +3349,7 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ } add_property_editor(p_path, editor); - } break; // 15 + } break; case Variant::_RID: { EditorPropertyRID *editor = memnew(EditorPropertyRID); add_property_editor(p_path, editor); @@ -3388,7 +3388,7 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ EditorPropertyArray *editor = memnew(EditorPropertyArray); editor->setup(Variant::PACKED_BYTE_ARRAY); add_property_editor(p_path, editor); - } break; // 20 + } break; case Variant::PACKED_INT32_ARRAY: { EditorPropertyArray *editor = memnew(EditorPropertyArray); editor->setup(Variant::PACKED_INT32_ARRAY); @@ -3423,7 +3423,7 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ EditorPropertyArray *editor = memnew(EditorPropertyArray); editor->setup(Variant::PACKED_VECTOR3_ARRAY); add_property_editor(p_path, editor); - } break; // 25 + } break; case Variant::PACKED_COLOR_ARRAY: { EditorPropertyArray *editor = memnew(EditorPropertyArray); editor->setup(Variant::PACKED_COLOR_ARRAY); diff --git a/editor/icons/PackedRealArray.svg b/editor/icons/PackedFloat32Array.svg index 734f40cd05..734f40cd05 100644 --- a/editor/icons/PackedRealArray.svg +++ b/editor/icons/PackedFloat32Array.svg diff --git a/editor/icons/PackedFloat64Array.svg b/editor/icons/PackedFloat64Array.svg new file mode 100644 index 0000000000..734f40cd05 --- /dev/null +++ b/editor/icons/PackedFloat64Array.svg @@ -0,0 +1 @@ +<svg height="12" viewBox="0 0 16 12" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m0 0v12h4v-2h-2v-8h2v-2zm12 0v2h2v8h-2v2h4v-12z" fill="#e0e0e0"/><path d="m6 2a3 3 0 0 0 -3 3v5h2v-2h1v-2h-1v-1a1 1 0 0 1 1-1zm1 0v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1-1v-5zm3 0v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1-1v-1h1v-2h-1v-2z" fill="#61daf4"/><path d="m7 2v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1-1v-5z" fill="#fff" fill-opacity=".39216"/></svg>
\ No newline at end of file diff --git a/editor/icons/PackedIntArray.svg b/editor/icons/PackedInt32Array.svg index a664b2d5fd..a664b2d5fd 100644 --- a/editor/icons/PackedIntArray.svg +++ b/editor/icons/PackedInt32Array.svg diff --git a/editor/icons/PackedInt64Array.svg b/editor/icons/PackedInt64Array.svg new file mode 100644 index 0000000000..a664b2d5fd --- /dev/null +++ b/editor/icons/PackedInt64Array.svg @@ -0,0 +1 @@ +<svg height="12" viewBox="0 0 16 12" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m0 0v12h4v-2h-2v-8h2v-2zm12 0v2h2v8h-2v2h4v-12z" fill="#e0e0e0"/><path d="m3 2v2h2v-2zm2 2v2h-2v4h4v-4a1 1 0 0 1 1 1v3h2v-3a3 3 0 0 0 -3-3zm5 3a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1-1v-1h1v-2h-1v-2h-2z" fill="#7dc6ef"/><path d="m5 4v6h2v-4a1 1 0 0 1 1 1v3h2v-3a3 3 0 0 0 -3-3z" fill="#fff" fill-opacity=".39216"/></svg>
\ No newline at end of file diff --git a/main/main.cpp b/main/main.cpp index e3747fc48c..d8a9cc87a7 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -203,6 +203,7 @@ void finalize_physics() { void initialize_navigation_server() { ERR_FAIL_COND(navigation_server != NULL); + navigation_server = NavigationServerManager::new_default_server(); navigation_2d_server = memnew(Navigation2DServer); } @@ -210,6 +211,7 @@ void initialize_navigation_server() { void finalize_navigation_server() { memdelete(navigation_server); navigation_server = NULL; + memdelete(navigation_2d_server); navigation_2d_server = NULL; } @@ -2037,9 +2039,9 @@ bool Main::iteration() { break; } - message_queue->flush(); + NavigationServer::get_singleton_mut()->process(frame_slice * time_scale); - NavigationServer::get_singleton_mut()->step(frame_slice * time_scale); + message_queue->flush(); PhysicsServer::get_singleton()->step(frame_slice * time_scale); diff --git a/methods.py b/methods.py index 5fdcc2c4b4..2e858e3865 100644 --- a/methods.py +++ b/methods.py @@ -557,6 +557,10 @@ def is_vanilla_clang(env): def get_compiler_version(env): + """ + Returns an array of version numbers as strings: [major, minor, patch]. + The return array should have at least two values (major, minor). + """ if using_gcc(env): version = decode_utf8(subprocess.check_output([env['CXX'], '-dumpversion']).strip()) elif using_clang(env): @@ -564,7 +568,7 @@ def get_compiler_version(env): version = decode_utf8(subprocess.check_output([env['CXX'], '--version']).strip()) else: # TODO: Implement for MSVC return None - match = re.search('[0-9][0-9.]*', version) + match = re.search('[0-9]+\.[0-9.]*', version) if match is not None: return match.group().split('.') else: diff --git a/modules/gdnative/include/gdnative/variant.h b/modules/gdnative/include/gdnative/variant.h index 4d70f1143c..934e856fbf 100644 --- a/modules/gdnative/include/gdnative/variant.h +++ b/modules/gdnative/include/gdnative/variant.h @@ -56,31 +56,33 @@ typedef enum godot_variant_type { GODOT_VARIANT_TYPE_STRING, // math types - - GODOT_VARIANT_TYPE_VECTOR2, // 5 + GODOT_VARIANT_TYPE_VECTOR2, + GODOT_VARIANT_TYPE_VECTOR2I, GODOT_VARIANT_TYPE_RECT2, + GODOT_VARIANT_TYPE_RECT2I, GODOT_VARIANT_TYPE_VECTOR3, + GODOT_VARIANT_TYPE_VECTOR3I, GODOT_VARIANT_TYPE_TRANSFORM2D, GODOT_VARIANT_TYPE_PLANE, - GODOT_VARIANT_TYPE_QUAT, // 10 + GODOT_VARIANT_TYPE_QUAT, GODOT_VARIANT_TYPE_AABB, GODOT_VARIANT_TYPE_BASIS, GODOT_VARIANT_TYPE_TRANSFORM, // misc types GODOT_VARIANT_TYPE_COLOR, - GODOT_VARIANT_TYPE_NODE_PATH, // 15 + GODOT_VARIANT_TYPE_NODE_PATH, GODOT_VARIANT_TYPE_RID, GODOT_VARIANT_TYPE_OBJECT, GODOT_VARIANT_TYPE_DICTIONARY, - GODOT_VARIANT_TYPE_ARRAY, // 20 + GODOT_VARIANT_TYPE_ARRAY, // arrays GODOT_VARIANT_TYPE_PACKED_BYTE_ARRAY, GODOT_VARIANT_TYPE_PACKED_INT_ARRAY, GODOT_VARIANT_TYPE_PACKED_REAL_ARRAY, GODOT_VARIANT_TYPE_PACKED_STRING_ARRAY, - GODOT_VARIANT_TYPE_PACKED_VECTOR2_ARRAY, // 25 + GODOT_VARIANT_TYPE_PACKED_VECTOR2_ARRAY, GODOT_VARIANT_TYPE_PACKED_VECTOR3_ARRAY, GODOT_VARIANT_TYPE_PACKED_COLOR_ARRAY, } godot_variant_type; diff --git a/modules/gdnavigation/gd_navigation_server.cpp b/modules/gdnavigation/gd_navigation_server.cpp index 1f1783802d..4129d1f65a 100644 --- a/modules/gdnavigation/gd_navigation_server.cpp +++ b/modules/gdnavigation/gd_navigation_server.cpp @@ -121,6 +121,7 @@ GdNavigationServer::GdNavigationServer() : } GdNavigationServer::~GdNavigationServer() { + flush_queries(); memdelete(operations_mutex); memdelete(commands_mutex); } @@ -474,12 +475,9 @@ void GdNavigationServer::set_active(bool p_active) const { mut_this->operations_mutex->unlock(); } -void GdNavigationServer::step(real_t p_delta_time) { - if (!active) { - return; - } - - // With c++ we can't be 100% sure this is called in single thread so use the mutex. +void GdNavigationServer::flush_queries() { + // In c++ we can't be sure that this is performed in the main thread + // even with mutable functions. commands_mutex->lock(); operations_mutex->lock(); for (size_t i(0); i < commands.size(); i++) { @@ -489,13 +487,24 @@ void GdNavigationServer::step(real_t p_delta_time) { commands.clear(); operations_mutex->unlock(); commands_mutex->unlock(); +} + +void GdNavigationServer::process(real_t p_delta_time) { + flush_queries(); - // These are internal operations so don't need to be shielded. + if (!active) { + return; + } + + // In c++ we can't be sure that this is performed in the main thread + // even with mutable functions. + operations_mutex->lock(); for (int i(0); i < active_maps.size(); i++) { active_maps[i]->sync(); active_maps[i]->step(p_delta_time); active_maps[i]->dispatch_callbacks(); } + operations_mutex->unlock(); } #undef COMMAND_1 diff --git a/modules/gdnavigation/gd_navigation_server.h b/modules/gdnavigation/gd_navigation_server.h index 7fa5979c31..0400acf1a3 100644 --- a/modules/gdnavigation/gd_navigation_server.h +++ b/modules/gdnavigation/gd_navigation_server.h @@ -131,7 +131,9 @@ public: COMMAND_1(free, RID, p_object); virtual void set_active(bool p_active) const; - virtual void step(real_t p_delta_time); + + void flush_queries(); + virtual void process(real_t p_delta_time); }; #undef COMMAND_1 diff --git a/modules/gdnavigation/nav_map.cpp b/modules/gdnavigation/nav_map.cpp index d3e2f8f388..c3880f89b6 100644 --- a/modules/gdnavigation/nav_map.cpp +++ b/modules/gdnavigation/nav_map.cpp @@ -545,8 +545,11 @@ void NavMap::add_region(NavRegion *p_region) { } void NavMap::remove_region(NavRegion *p_region) { - regions.push_back(p_region); - regenerate_links = true; + std::vector<NavRegion *>::iterator it = std::find(regions.begin(), regions.end(), p_region); + if (it != regions.end()) { + regions.erase(it); + regenerate_links = true; + } } bool NavMap::has_agent(RvoAgent *agent) const { diff --git a/modules/gdscript/language_server/gdscript_workspace.cpp b/modules/gdscript/language_server/gdscript_workspace.cpp index 1c0590cff1..ea54784f96 100644 --- a/modules/gdscript/language_server/gdscript_workspace.cpp +++ b/modules/gdscript/language_server/gdscript_workspace.cpp @@ -33,8 +33,11 @@ #include "../gdscript_parser.h" #include "core/project_settings.h" #include "core/script_language.h" +#include "editor/editor_file_system.h" #include "editor/editor_help.h" +#include "editor/editor_node.h" #include "gdscript_language_protocol.h" +#include "scene/resources/packed_scene.h" void GDScriptWorkspace::_bind_methods() { ClassDB::bind_method(D_METHOD("symbol"), &GDScriptWorkspace::symbol); @@ -373,6 +376,46 @@ void GDScriptWorkspace::publish_diagnostics(const String &p_path) { GDScriptLanguageProtocol::get_singleton()->notify_client("textDocument/publishDiagnostics", params); } +void GDScriptWorkspace::_get_owners(EditorFileSystemDirectory *efsd, String p_path, List<String> &owners) { + if (!efsd) + return; + + for (int i = 0; i < efsd->get_subdir_count(); i++) { + _get_owners(efsd->get_subdir(i), p_path, owners); + } + + for (int i = 0; i < efsd->get_file_count(); i++) { + + Vector<String> deps = efsd->get_file_deps(i); + bool found = false; + for (int j = 0; j < deps.size(); j++) { + if (deps[j] == p_path) { + found = true; + break; + } + } + if (!found) + continue; + + owners.push_back(efsd->get_file_path(i)); + } +} + +Node *GDScriptWorkspace::_get_owner_node(String p_path) { + Node *owner_node = NULL; + List<String> owners; + + _get_owners(EditorFileSystem::get_singleton()->get_filesystem(), p_path, owners); + + if (owners.size() > 0) { + NodePath owner_path = owners[0]; + Ref<PackedScene> owner_res = ResourceLoader::load(owner_path); + owner_node = owner_res->instance(PackedScene::GEN_EDIT_STATE_DISABLED); + } + + return owner_node; +} + void GDScriptWorkspace::completion(const lsp::CompletionParams &p_params, List<ScriptCodeCompletionOption> *r_options) { String path = get_file_path(p_params.textDocument.uri); @@ -380,8 +423,12 @@ void GDScriptWorkspace::completion(const lsp::CompletionParams &p_params, List<S bool forced = false; if (const ExtendGDScriptParser *parser = get_parse_result(path)) { + Node *owner_node = _get_owner_node(path); String code = parser->get_text_for_completion(p_params.position); - GDScriptLanguage::get_singleton()->complete_code(code, path, NULL, r_options, forced, call_hint); + GDScriptLanguage::get_singleton()->complete_code(code, path, owner_node, r_options, forced, call_hint); + if (owner_node) { + memdelete(owner_node); + } } } diff --git a/modules/gdscript/language_server/gdscript_workspace.h b/modules/gdscript/language_server/gdscript_workspace.h index 146a5cb7c9..8b46d345d9 100644 --- a/modules/gdscript/language_server/gdscript_workspace.h +++ b/modules/gdscript/language_server/gdscript_workspace.h @@ -33,12 +33,17 @@ #include "../gdscript_parser.h" #include "core/variant.h" +#include "editor/editor_file_system.h" #include "gdscript_extend_parser.h" #include "lsp.hpp" class GDScriptWorkspace : public Reference { GDCLASS(GDScriptWorkspace, Reference); +private: + void _get_owners(EditorFileSystemDirectory *efsd, String p_path, List<String> &owners); + Node *_get_owner_node(String p_path); + protected: static void _bind_methods(); void remove_cache_parser(const String &p_path); diff --git a/platform/iphone/game_center.mm b/platform/iphone/game_center.mm index 14f4b00ea6..99d539d4ff 100644 --- a/platform/iphone/game_center.mm +++ b/platform/iphone/game_center.mm @@ -202,7 +202,7 @@ void GameCenter::request_achievement_descriptions() { PackedStringArray titles; PackedStringArray unachieved_descriptions; PackedStringArray achieved_descriptions; - PackedIntArray maximum_points; + PackedInt32Array maximum_points; Array hidden; Array replayable; @@ -254,7 +254,7 @@ void GameCenter::request_achievements() { if (error == nil) { ret["result"] = "ok"; PackedStringArray names; - PackedRealArray percentages; + PackedFloat32Array percentages; for (int i = 0; i < [achievements count]; i++) { diff --git a/platform/iphone/in_app_store.mm b/platform/iphone/in_app_store.mm index 842bc44c01..a8a887824f 100644 --- a/platform/iphone/in_app_store.mm +++ b/platform/iphone/in_app_store.mm @@ -87,7 +87,7 @@ void InAppStore::_bind_methods() { ret["result"] = "ok"; PackedStringArray titles; PackedStringArray descriptions; - PackedRealArray prices; + PackedFloat32Array prices; PackedStringArray ids; PackedStringArray localized_prices; PackedStringArray currency_codes; diff --git a/scene/2d/navigation_2d.cpp b/scene/2d/navigation_2d.cpp index e91560a7e0..bbabfa16c7 100644 --- a/scene/2d/navigation_2d.cpp +++ b/scene/2d/navigation_2d.cpp @@ -88,3 +88,7 @@ Navigation2D::Navigation2D() { set_cell_size(10); // Ten pixels set_edge_connection_margin(100); } + +Navigation2D::~Navigation2D() { + Navigation2DServer::get_singleton()->free(map); +} diff --git a/scene/2d/navigation_2d.h b/scene/2d/navigation_2d.h index 16e20d8f9b..5520f5006e 100644 --- a/scene/2d/navigation_2d.h +++ b/scene/2d/navigation_2d.h @@ -66,6 +66,7 @@ public: RID get_closest_point_owner(const Vector2 &p_point) const; Navigation2D(); + ~Navigation2D(); }; #endif // NAVIGATION_2D_H diff --git a/scene/debugger/scene_debugger.cpp b/scene/debugger/scene_debugger.cpp index 9b9f0455a1..22ff0611a7 100644 --- a/scene/debugger/scene_debugger.cpp +++ b/scene/debugger/scene_debugger.cpp @@ -347,13 +347,17 @@ void SceneDebuggerObject::serialize(Array &r_arr, int p_max_size) { const PropertyInfo &pi = properties[i].first; Variant &var = properties[i].second; - WeakRef *ref = Object::cast_to<WeakRef>(var); - if (ref) { - var = ref->get_ref(); - } - RES res = var; + if (var.get_type() == Variant::OBJECT && var.is_ref()) { + REF r = var; + if (r.is_valid()) { + res = *r; + } else { + res = RES(); + } + } + Array prop; prop.push_back(pi.name); prop.push_back(pi.type); diff --git a/servers/navigation_server.cpp b/servers/navigation_server.cpp index f31795fb35..f2b727ac47 100644 --- a/servers/navigation_server.cpp +++ b/servers/navigation_server.cpp @@ -75,7 +75,7 @@ void NavigationServer::_bind_methods() { ClassDB::bind_method(D_METHOD("free", "object"), &NavigationServer::free); ClassDB::bind_method(D_METHOD("set_active", "active"), &NavigationServer::set_active); - ClassDB::bind_method(D_METHOD("step", "delta_time"), &NavigationServer::step); + ClassDB::bind_method(D_METHOD("process", "delta_time"), &NavigationServer::process); } const NavigationServer *NavigationServer::get_singleton() { diff --git a/servers/navigation_server.h b/servers/navigation_server.h index d4d95d72d4..2587e53ab2 100644 --- a/servers/navigation_server.h +++ b/servers/navigation_server.h @@ -175,9 +175,11 @@ public: /// Control activation of this server. virtual void set_active(bool p_active) const = 0; - /// Step the server - /// NOTE: This function is not Threadsafe and MUST be called in single thread. - virtual void step(real_t delta_time) = 0; + /// Process the collision avoidance agents. + /// The result of this process is needed by the physics server, + /// so this must be called in the main thread. + /// Note: This function is not thread safe. + virtual void process(real_t delta_time) = 0; NavigationServer(); virtual ~NavigationServer(); |