Deprecate ScriptLanguage::instance_has

This commit is contained in:
HolonProduction
2026-04-05 14:10:48 +02:00
parent 1aabcb9e9b
commit 97091c639b
11 changed files with 38 additions and 23 deletions
+8 -1
View File
@@ -163,7 +163,6 @@ PropertyInfo Script::get_class_category() const {
void Script::_bind_methods() {
ClassDB::bind_method(D_METHOD("can_instantiate"), &Script::can_instantiate);
//ClassDB::bind_method(D_METHOD("instance_create","base_object"),&Script::instance_create);
ClassDB::bind_method(D_METHOD("instance_has", "base_object"), &Script::instance_has);
ClassDB::bind_method(D_METHOD("has_source_code"), &Script::has_source_code);
ClassDB::bind_method(D_METHOD("get_source_code"), &Script::get_source_code);
ClassDB::bind_method(D_METHOD("set_source_code", "source"), &Script::set_source_code);
@@ -187,6 +186,14 @@ void Script::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_rpc_config"), &Script::_get_rpc_config_bind);
#ifndef DISABLE_DEPRECATED
GODOT_PUSH_IGNORE_DEPRECATION();
ClassDB::bind_method(D_METHOD("instance_has", "base_object"), &Script::instance_has);
GODOT_POP_IGNORE_DEPRECATION();
#endif // !DISABLE_DEPRECATED
ADD_PROPERTY(PropertyInfo(Variant::STRING, "source_code", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "set_source_code", "get_source_code");
}
+4 -1
View File
@@ -151,7 +151,6 @@ public:
virtual StringName get_instance_base_type() const = 0; // this may not work in all scripts, will return empty if so
virtual ScriptInstance *instance_create(Object *p_this) = 0;
virtual PlaceHolderScriptInstance *placeholder_instance_create(Object *p_this) { return nullptr; }
virtual bool instance_has(const Object *p_this) const = 0;
virtual bool has_source_code() const = 0;
virtual String get_source_code() const = 0;
@@ -200,6 +199,10 @@ public:
Script() {
_define_ancestry(AncestralClass::SCRIPT);
}
#ifndef DISABLE_DEPRECATED
[[deprecated("Use Object::get_script instead.")]] bool instance_has(const Object *p_this) const { return p_this != nullptr && Object::cast_to<Script>(p_this->get_script()) == this; }
#endif // !DISABLE_DEPRECATED
};
class ScriptLanguage : public Object {
+4 -2
View File
@@ -45,8 +45,6 @@ void ScriptExtension::_bind_methods() {
GDVIRTUAL_BIND(_instance_create, "for_object");
GDVIRTUAL_BIND(_placeholder_instance_create, "for_object");
GDVIRTUAL_BIND(_instance_has, "object");
GDVIRTUAL_BIND(_has_source_code);
GDVIRTUAL_BIND(_get_source_code);
@@ -86,6 +84,10 @@ void ScriptExtension::_bind_methods() {
GDVIRTUAL_BIND(_is_placeholder_fallback_enabled);
GDVIRTUAL_BIND(_get_rpc_config);
#ifndef DISABLE_DEPRECATED
GDVIRTUAL_BIND(_instance_has, "object");
#endif // !DISABLE_DEPRECATED
}
void ScriptLanguageExtension::_bind_methods() {
+4 -1
View File
@@ -69,7 +69,6 @@ public:
return reinterpret_cast<PlaceHolderScriptInstance *>(ret.operator void *());
}
EXBIND1RC(bool, instance_has, const Object *)
EXBIND0RC(bool, has_source_code)
EXBIND0RC(String, get_source_code)
EXBIND1(set_source_code, const String &)
@@ -214,6 +213,10 @@ public:
GDVIRTUAL_CALL(_get_rpc_config, ret);
return ret;
}
#ifndef DISABLE_DEPRECATED
GDVIRTUAL1RC(bool, _instance_has, const Object *)
#endif // !DISABLE_DEPRECATED
};
typedef ScriptLanguage::ProfilingInfo ScriptLanguageExtensionProfilingInfo;
+16
View File
@@ -309,6 +309,22 @@ inline constexpr bool is_zero_constructible_v = is_zero_constructible<T>::value;
#define GODOT_MSVC_WARNING_PUSH_AND_IGNORE(m_warning)
#endif
// Deprecation warning suppression helper macros.
#if defined(__clang__)
#define GODOT_PUSH_IGNORE_DEPRECATION() GODOT_CLANG_WARNING_PUSH_AND_IGNORE("-Wdeprecated-declarations")
#define GODOT_POP_IGNORE_DEPRECATION() GODOT_CLANG_WARNING_POP
#endif
#if defined(__GNUC__) && !defined(__clang__)
#define GODOT_PUSH_IGNORE_DEPRECATION() GODOT_GCC_WARNING_PUSH_AND_IGNORE("-Wdeprecated-declarations")
#define GODOT_POP_IGNORE_DEPRECATION() GODOT_GCC_WARNING_POP
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#define GODOT_PUSH_IGNORE_DEPRECATION() GODOT_MSVC_WARNING_PUSH_AND_IGNORE(4996)
#define GODOT_POP_IGNORE_DEPRECATION() GODOT_MSVC_WARNING_POP
#endif
template <typename T, typename = void>
struct is_fully_defined : std::false_type {};
+1 -1
View File
@@ -112,7 +112,7 @@
[b]Note:[/b] If a script does not have source code, this does not mean that it is invalid or unusable. For example, a [GDScript] that was exported with binary tokenization has no source code, but still behaves as expected and could be instantiated. This can be checked with [method can_instantiate].
</description>
</method>
<method name="instance_has" qualifiers="const">
<method name="instance_has" qualifiers="const" deprecated="Compare this script with [method Object.get_script] instead.">
<return type="bool" />
<param index="0" name="base_object" type="Object" />
<description>
+1 -1
View File
@@ -153,7 +153,7 @@
<description>
</description>
</method>
<method name="_instance_has" qualifiers="virtual required const">
<method name="_instance_has" qualifiers="virtual const" deprecated="This method is not called by the engine.">
<return type="bool" />
<param index="0" name="object" type="Object" />
<description>
-9
View File
@@ -435,15 +435,6 @@ PlaceHolderScriptInstance *GDScript::placeholder_instance_create(Object *p_this)
#endif
}
bool GDScript::instance_has(const Object *p_this) const {
GDScriptInstance *instance = dynamic_cast<GDScriptInstance *>(p_this->get_script_instance());
if (instance == nullptr) {
return false;
}
return instance->script.ptr() == this;
}
bool GDScript::has_source_code() const {
return !source.is_empty();
}
-1
View File
@@ -285,7 +285,6 @@ public:
virtual StringName get_instance_base_type() const override; // this may not work in all scripts, will return empty if so
virtual ScriptInstance *instance_create(Object *p_this) override;
virtual PlaceHolderScriptInstance *placeholder_instance_create(Object *p_this) override;
virtual bool instance_has(const Object *p_this) const override;
virtual bool has_source_code() const override;
virtual String get_source_code() const override;
-5
View File
@@ -2488,11 +2488,6 @@ PlaceHolderScriptInstance *CSharpScript::placeholder_instance_create(Object *p_t
#endif
}
bool CSharpScript::instance_has(const Object *p_this) const {
MutexLock lock(CSharpLanguage::get_singleton()->script_instances_mutex);
return instances.has((Object *)p_this);
}
bool CSharpScript::has_source_code() const {
return !source.is_empty();
}
-1
View File
@@ -234,7 +234,6 @@ public:
StringName get_instance_base_type() const override;
ScriptInstance *instance_create(Object *p_this) override;
PlaceHolderScriptInstance *placeholder_instance_create(Object *p_this) override;
bool instance_has(const Object *p_this) const override;
bool has_source_code() const override;
String get_source_code() const override;