feat: updated engine version to 4.4-rc1
This commit is contained in:
parent
ee00efde1f
commit
21ba8e33af
5459 changed files with 1128836 additions and 198305 deletions
|
|
@ -32,8 +32,9 @@
|
|||
|
||||
#include "core/config/engine.h"
|
||||
#include "core/extension/gdextension.h"
|
||||
#include "core/extension/gdextension_compat_hashes.h"
|
||||
#include "core/extension/gdextension_special_compat_hashes.h"
|
||||
#include "core/io/file_access.h"
|
||||
#include "core/io/image.h"
|
||||
#include "core/io/xml_parser.h"
|
||||
#include "core/object/class_db.h"
|
||||
#include "core/object/script_language_extension.h"
|
||||
|
|
@ -507,6 +508,14 @@ static GDExtensionBool gdextension_variant_has_key(GDExtensionConstVariantPtr p_
|
|||
return ret;
|
||||
}
|
||||
|
||||
static GDObjectInstanceID gdextension_variant_get_object_instance_id(GDExtensionConstVariantPtr p_self) {
|
||||
const Variant *self = (const Variant *)p_self;
|
||||
if (likely(self->get_type() == Variant::OBJECT)) {
|
||||
return self->operator ObjectID();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void gdextension_variant_get_type_name(GDExtensionVariantType p_type, GDExtensionUninitializedVariantPtr r_ret) {
|
||||
String name = Variant::get_type_name((Variant::Type)p_type);
|
||||
memnew_placement(r_ret, String(name));
|
||||
|
|
@ -691,6 +700,91 @@ static GDExtensionTypeFromVariantConstructorFunc gdextension_get_variant_to_type
|
|||
ERR_FAIL_V_MSG(nullptr, "Getting Variant conversion function with invalid type");
|
||||
}
|
||||
|
||||
static GDExtensionVariantGetInternalPtrFunc gdextension_variant_get_ptr_internal_getter(GDExtensionVariantType p_type) {
|
||||
switch (p_type) {
|
||||
case GDEXTENSION_VARIANT_TYPE_BOOL:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<bool *(*)(Variant *)>(VariantInternal::get_bool));
|
||||
case GDEXTENSION_VARIANT_TYPE_INT:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<int64_t *(*)(Variant *)>(VariantInternal::get_int));
|
||||
case GDEXTENSION_VARIANT_TYPE_FLOAT:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<double *(*)(Variant *)>(VariantInternal::get_float));
|
||||
case GDEXTENSION_VARIANT_TYPE_STRING:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<String *(*)(Variant *)>(VariantInternal::get_string));
|
||||
case GDEXTENSION_VARIANT_TYPE_VECTOR2:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Vector2 *(*)(Variant *)>(VariantInternal::get_vector2));
|
||||
case GDEXTENSION_VARIANT_TYPE_VECTOR2I:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Vector2i *(*)(Variant *)>(VariantInternal::get_vector2i));
|
||||
case GDEXTENSION_VARIANT_TYPE_RECT2:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Rect2 *(*)(Variant *)>(VariantInternal::get_rect2));
|
||||
case GDEXTENSION_VARIANT_TYPE_RECT2I:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Rect2i *(*)(Variant *)>(VariantInternal::get_rect2i));
|
||||
case GDEXTENSION_VARIANT_TYPE_VECTOR3:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Vector3 *(*)(Variant *)>(VariantInternal::get_vector3));
|
||||
case GDEXTENSION_VARIANT_TYPE_VECTOR3I:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Vector3i *(*)(Variant *)>(VariantInternal::get_vector3i));
|
||||
case GDEXTENSION_VARIANT_TYPE_TRANSFORM2D:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Transform2D *(*)(Variant *)>(VariantInternal::get_transform2d));
|
||||
case GDEXTENSION_VARIANT_TYPE_VECTOR4:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Vector4 *(*)(Variant *)>(VariantInternal::get_vector4));
|
||||
case GDEXTENSION_VARIANT_TYPE_VECTOR4I:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Vector4i *(*)(Variant *)>(VariantInternal::get_vector4i));
|
||||
case GDEXTENSION_VARIANT_TYPE_PLANE:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Plane *(*)(Variant *)>(VariantInternal::get_plane));
|
||||
case GDEXTENSION_VARIANT_TYPE_QUATERNION:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Quaternion *(*)(Variant *)>(VariantInternal::get_quaternion));
|
||||
case GDEXTENSION_VARIANT_TYPE_AABB:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<AABB *(*)(Variant *)>(VariantInternal::get_aabb));
|
||||
case GDEXTENSION_VARIANT_TYPE_BASIS:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Basis *(*)(Variant *)>(VariantInternal::get_basis));
|
||||
case GDEXTENSION_VARIANT_TYPE_TRANSFORM3D:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Transform3D *(*)(Variant *)>(VariantInternal::get_transform));
|
||||
case GDEXTENSION_VARIANT_TYPE_PROJECTION:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Projection *(*)(Variant *)>(VariantInternal::get_projection));
|
||||
case GDEXTENSION_VARIANT_TYPE_COLOR:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Color *(*)(Variant *)>(VariantInternal::get_color));
|
||||
case GDEXTENSION_VARIANT_TYPE_STRING_NAME:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<StringName *(*)(Variant *)>(VariantInternal::get_string_name));
|
||||
case GDEXTENSION_VARIANT_TYPE_NODE_PATH:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<NodePath *(*)(Variant *)>(VariantInternal::get_node_path));
|
||||
case GDEXTENSION_VARIANT_TYPE_RID:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<RID *(*)(Variant *)>(VariantInternal::get_rid));
|
||||
case GDEXTENSION_VARIANT_TYPE_OBJECT:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Object **(*)(Variant *)>(VariantInternal::get_object));
|
||||
case GDEXTENSION_VARIANT_TYPE_CALLABLE:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Callable *(*)(Variant *)>(VariantInternal::get_callable));
|
||||
case GDEXTENSION_VARIANT_TYPE_SIGNAL:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Signal *(*)(Variant *)>(VariantInternal::get_signal));
|
||||
case GDEXTENSION_VARIANT_TYPE_DICTIONARY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Dictionary *(*)(Variant *)>(VariantInternal::get_dictionary));
|
||||
case GDEXTENSION_VARIANT_TYPE_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<Array *(*)(Variant *)>(VariantInternal::get_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_BYTE_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedByteArray *(*)(Variant *)>(VariantInternal::get_byte_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_INT32_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedInt32Array *(*)(Variant *)>(VariantInternal::get_int32_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_INT64_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedInt64Array *(*)(Variant *)>(VariantInternal::get_int64_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT32_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedFloat32Array *(*)(Variant *)>(VariantInternal::get_float32_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_FLOAT64_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedFloat64Array *(*)(Variant *)>(VariantInternal::get_float64_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_STRING_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedStringArray *(*)(Variant *)>(VariantInternal::get_string_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR2_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedVector2Array *(*)(Variant *)>(VariantInternal::get_vector2_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR3_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedVector3Array *(*)(Variant *)>(VariantInternal::get_vector3_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_COLOR_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedColorArray *(*)(Variant *)>(VariantInternal::get_color_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_PACKED_VECTOR4_ARRAY:
|
||||
return reinterpret_cast<GDExtensionVariantGetInternalPtrFunc>(static_cast<PackedVector4Array *(*)(Variant *)>(VariantInternal::get_vector4_array));
|
||||
case GDEXTENSION_VARIANT_TYPE_NIL:
|
||||
case GDEXTENSION_VARIANT_TYPE_VARIANT_MAX:
|
||||
ERR_FAIL_V_MSG(nullptr, "Getting Variant get internal pointer function with invalid type.");
|
||||
}
|
||||
ERR_FAIL_V_MSG(nullptr, "Getting Variant get internal pointer function with invalid type.");
|
||||
}
|
||||
|
||||
// ptrcalls
|
||||
static GDExtensionPtrOperatorEvaluator gdextension_variant_get_ptr_operator_evaluator(GDExtensionVariantOperator p_operator, GDExtensionVariantType p_type_a, GDExtensionVariantType p_type_b) {
|
||||
return (GDExtensionPtrOperatorEvaluator)Variant::get_ptr_operator_evaluator(Variant::Operator(p_operator), Variant::Type(p_type_a), Variant::Type(p_type_b));
|
||||
|
|
@ -1199,6 +1293,15 @@ static GDExtensionVariantPtr gdextension_dictionary_operator_index_const(GDExten
|
|||
return (GDExtensionVariantPtr)&self->operator[](*(const Variant *)p_key);
|
||||
}
|
||||
|
||||
void gdextension_dictionary_set_typed(GDExtensionTypePtr p_self, GDExtensionVariantType p_key_type, GDExtensionConstStringNamePtr p_key_class_name, GDExtensionConstVariantPtr p_key_script, GDExtensionVariantType p_value_type, GDExtensionConstStringNamePtr p_value_class_name, GDExtensionConstVariantPtr p_value_script) {
|
||||
Dictionary *self = reinterpret_cast<Dictionary *>(p_self);
|
||||
const StringName *key_class_name = reinterpret_cast<const StringName *>(p_key_class_name);
|
||||
const Variant *key_script = reinterpret_cast<const Variant *>(p_key_script);
|
||||
const StringName *value_class_name = reinterpret_cast<const StringName *>(p_value_class_name);
|
||||
const Variant *value_script = reinterpret_cast<const Variant *>(p_value_script);
|
||||
self->set_typed((uint32_t)p_key_type, *key_class_name, *key_script, (uint32_t)p_value_type, *value_class_name, *value_script);
|
||||
}
|
||||
|
||||
/* OBJECT API */
|
||||
|
||||
static void gdextension_object_method_bind_call(GDExtensionMethodBindPtr p_method_bind, GDExtensionObjectPtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_arg_count, GDExtensionUninitializedVariantPtr r_return, GDExtensionCallError *r_error) {
|
||||
|
|
@ -1299,7 +1402,7 @@ static void gdextension_object_call_script_method(GDExtensionObjectPtr p_object,
|
|||
const StringName method = *reinterpret_cast<const StringName *>(p_method);
|
||||
const Variant **args = (const Variant **)p_args;
|
||||
|
||||
Callable::CallError error;
|
||||
Callable::CallError error; // TODO: Check `error`?
|
||||
memnew_placement(r_return, Variant);
|
||||
*(Variant *)r_return = o->callp(method, args, p_argument_count, error);
|
||||
|
||||
|
|
@ -1501,24 +1604,31 @@ static GDExtensionMethodBindPtr gdextension_classdb_get_method_bind(GDExtensionC
|
|||
// If lookup failed, see if this is one of the broken hashes from issue #81386.
|
||||
if (!mb && exists) {
|
||||
uint32_t mapped_hash;
|
||||
if (GDExtensionCompatHashes::lookup_current_hash(classname, methodname, p_hash, &mapped_hash)) {
|
||||
if (GDExtensionSpecialCompatHashes::lookup_current_hash(classname, methodname, p_hash, &mapped_hash)) {
|
||||
mb = ClassDB::get_method_with_compatibility(classname, methodname, mapped_hash, &exists);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!mb && exists) {
|
||||
ERR_PRINT("Method '" + classname + "." + methodname + "' has changed and no compatibility fallback has been provided. Please open an issue.");
|
||||
ERR_PRINT(vformat("Method '%s.%s' has changed and no compatibility fallback has been provided. Please open an issue.", classname, methodname));
|
||||
return nullptr;
|
||||
}
|
||||
ERR_FAIL_NULL_V(mb, nullptr);
|
||||
return (GDExtensionMethodBindPtr)mb;
|
||||
}
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
static GDExtensionObjectPtr gdextension_classdb_construct_object(GDExtensionConstStringNamePtr p_classname) {
|
||||
const StringName classname = *reinterpret_cast<const StringName *>(p_classname);
|
||||
return (GDExtensionObjectPtr)ClassDB::instantiate_no_placeholders(classname);
|
||||
}
|
||||
#endif
|
||||
|
||||
static GDExtensionObjectPtr gdextension_classdb_construct_object2(GDExtensionConstStringNamePtr p_classname) {
|
||||
const StringName classname = *reinterpret_cast<const StringName *>(p_classname);
|
||||
return (GDExtensionObjectPtr)ClassDB::instantiate_without_postinitialization(classname);
|
||||
}
|
||||
|
||||
static void *gdextension_classdb_get_class_tag(GDExtensionConstStringNamePtr p_classname) {
|
||||
const StringName classname = *reinterpret_cast<const StringName *>(p_classname);
|
||||
|
|
@ -1594,11 +1704,13 @@ void gdextension_setup_interface() {
|
|||
REGISTER_INTERFACE_FUNC(variant_has_method);
|
||||
REGISTER_INTERFACE_FUNC(variant_has_member);
|
||||
REGISTER_INTERFACE_FUNC(variant_has_key);
|
||||
REGISTER_INTERFACE_FUNC(variant_get_object_instance_id);
|
||||
REGISTER_INTERFACE_FUNC(variant_get_type_name);
|
||||
REGISTER_INTERFACE_FUNC(variant_can_convert);
|
||||
REGISTER_INTERFACE_FUNC(variant_can_convert_strict);
|
||||
REGISTER_INTERFACE_FUNC(get_variant_from_type_constructor);
|
||||
REGISTER_INTERFACE_FUNC(get_variant_to_type_constructor);
|
||||
REGISTER_INTERFACE_FUNC(variant_get_ptr_internal_getter);
|
||||
REGISTER_INTERFACE_FUNC(variant_get_ptr_operator_evaluator);
|
||||
REGISTER_INTERFACE_FUNC(variant_get_ptr_builtin_method);
|
||||
REGISTER_INTERFACE_FUNC(variant_get_ptr_constructor);
|
||||
|
|
@ -1672,6 +1784,7 @@ void gdextension_setup_interface() {
|
|||
REGISTER_INTERFACE_FUNC(array_set_typed);
|
||||
REGISTER_INTERFACE_FUNC(dictionary_operator_index);
|
||||
REGISTER_INTERFACE_FUNC(dictionary_operator_index_const);
|
||||
REGISTER_INTERFACE_FUNC(dictionary_set_typed);
|
||||
REGISTER_INTERFACE_FUNC(object_method_bind_call);
|
||||
REGISTER_INTERFACE_FUNC(object_method_bind_ptrcall);
|
||||
REGISTER_INTERFACE_FUNC(object_destroy);
|
||||
|
|
@ -1701,7 +1814,10 @@ void gdextension_setup_interface() {
|
|||
#endif // DISABLE_DEPRECATED
|
||||
REGISTER_INTERFACE_FUNC(callable_custom_create2);
|
||||
REGISTER_INTERFACE_FUNC(callable_custom_get_userdata);
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
REGISTER_INTERFACE_FUNC(classdb_construct_object);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
REGISTER_INTERFACE_FUNC(classdb_construct_object2);
|
||||
REGISTER_INTERFACE_FUNC(classdb_get_method_bind);
|
||||
REGISTER_INTERFACE_FUNC(classdb_get_class_tag);
|
||||
REGISTER_INTERFACE_FUNC(editor_add_plugin);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue