Skip to content

Commit e33f89f

Browse files
committed
Merge pull request #111323 from HolonProduction/rm-script
Remove `Object::script`
2 parents d10eca9 + 2adecff commit e33f89f

File tree

4 files changed

+16
-44
lines changed

4 files changed

+16
-44
lines changed

core/object/object.cpp

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,18 +1047,8 @@ String Object::to_string() {
10471047
return "<" + get_class() + "#" + itos(get_instance_id()) + ">";
10481048
}
10491049

1050-
void Object::set_script_and_instance(const Variant &p_script, ScriptInstance *p_instance) {
1051-
//this function is not meant to be used in any of these ways
1052-
ERR_FAIL_COND(p_script.is_null());
1053-
ERR_FAIL_NULL(p_instance);
1054-
ERR_FAIL_COND(script_instance != nullptr || !script.is_null());
1055-
1056-
script = p_script;
1057-
script_instance = p_instance;
1058-
}
1059-
10601050
void Object::set_script(const Variant &p_script) {
1061-
if (script == p_script) {
1051+
if (get_script() == p_script) {
10621052
return;
10631053
}
10641054

@@ -1068,8 +1058,6 @@ void Object::set_script(const Variant &p_script) {
10681058
ERR_FAIL_COND_MSG(s->is_abstract(), vformat("Cannot set object script. Script '%s' should not be abstract.", s->get_path()));
10691059
}
10701060

1071-
script = p_script;
1072-
10731061
if (script_instance) {
10741062
memdelete(script_instance);
10751063
script_instance = nullptr;
@@ -1099,16 +1087,10 @@ void Object::set_script_instance(ScriptInstance *p_instance) {
10991087
}
11001088

11011089
script_instance = p_instance;
1102-
1103-
if (p_instance) {
1104-
script = p_instance->get_script();
1105-
} else {
1106-
script = Variant();
1107-
}
11081090
}
11091091

11101092
Variant Object::get_script() const {
1111-
return script;
1093+
return script_instance ? Variant(script_instance->get_script()) : Variant();
11121094
}
11131095

11141096
bool Object::has_meta(const StringName &p_name) const {
@@ -1291,7 +1273,7 @@ Error Object::emit_signalp(const StringName &p_name, const Variant **p_args, int
12911273
#ifdef DEBUG_ENABLED
12921274
bool signal_is_valid = ClassDB::has_signal(get_class_name(), p_name);
12931275
//check in script
1294-
ERR_FAIL_COND_V_MSG(!signal_is_valid && !script.is_null() && !Ref<Script>(script)->has_script_signal(p_name), ERR_UNAVAILABLE, vformat("Can't emit non-existing signal \"%s\".", p_name));
1276+
ERR_FAIL_COND_V_MSG(!signal_is_valid && script_instance && !script_instance->get_script()->has_script_signal(p_name), ERR_UNAVAILABLE, vformat("Can't emit non-existing signal \"%s\".", p_name));
12951277
#endif
12961278
//not connected? just return
12971279
return ERR_UNAVAILABLE;
@@ -1361,7 +1343,7 @@ Error Object::emit_signalp(const StringName &p_name, const Variant **p_args, int
13611343

13621344
if (ce.error != Callable::CallError::CALL_OK) {
13631345
#ifdef DEBUG_ENABLED
1364-
if (flags & CONNECT_PERSIST && Engine::get_singleton()->is_editor_hint() && (script.is_null() || !Ref<Script>(script)->is_tool())) {
1346+
if (flags & CONNECT_PERSIST && Engine::get_singleton()->is_editor_hint() && (!script_instance || !script_instance->get_script()->is_tool())) {
13651347
continue;
13661348
}
13671349
#endif
@@ -1465,11 +1447,8 @@ TypedArray<Dictionary> Object::_get_incoming_connections() const {
14651447
}
14661448

14671449
bool Object::has_signal(const StringName &p_name) const {
1468-
if (!script.is_null()) {
1469-
Ref<Script> scr = script;
1470-
if (scr.is_valid() && scr->has_script_signal(p_name)) {
1471-
return true;
1472-
}
1450+
if (script_instance && script_instance->get_script()->has_script_signal(p_name)) {
1451+
return true;
14731452
}
14741453

14751454
if (ClassDB::has_signal(get_class_name(), p_name)) {
@@ -1486,11 +1465,8 @@ bool Object::has_signal(const StringName &p_name) const {
14861465
void Object::get_signal_list(List<MethodInfo> *p_signals) const {
14871466
OBJ_SIGNAL_LOCK
14881467

1489-
if (!script.is_null()) {
1490-
Ref<Script> scr = script;
1491-
if (scr.is_valid()) {
1492-
scr->get_script_signal_list(p_signals);
1493-
}
1468+
if (script_instance) {
1469+
script_instance->get_script()->get_script_signal_list(p_signals);
14941470
}
14951471

14961472
ClassDB::get_signal_list(get_class_name(), p_signals);
@@ -1571,14 +1547,14 @@ Error Object::connect(const StringName &p_signal, const Callable &p_callable, ui
15711547
if (!s) {
15721548
bool signal_is_valid = ClassDB::has_signal(get_class_name(), p_signal);
15731549
//check in script
1574-
if (!signal_is_valid && !script.is_null()) {
1575-
if (Ref<Script>(script)->has_script_signal(p_signal)) {
1550+
if (!signal_is_valid && script_instance) {
1551+
if (script_instance->get_script()->has_script_signal(p_signal)) {
15761552
signal_is_valid = true;
15771553
}
15781554
#ifdef TOOLS_ENABLED
15791555
else {
15801556
//allow connecting signals anyway if script is invalid, see issue #17070
1581-
if (!Ref<Script>(script)->is_valid()) {
1557+
if (!script_instance->get_script()->is_valid()) {
15821558
signal_is_valid = true;
15831559
}
15841560
}
@@ -1634,7 +1610,7 @@ bool Object::is_connected(const StringName &p_signal, const Callable &p_callable
16341610
return false;
16351611
}
16361612

1637-
if (!script.is_null() && Ref<Script>(script)->has_script_signal(p_signal)) {
1613+
if (script_instance && script_instance->get_script()->has_script_signal(p_signal)) {
16381614
return false;
16391615
}
16401616

@@ -1654,7 +1630,7 @@ bool Object::has_connections(const StringName &p_signal) const {
16541630
return false;
16551631
}
16561632

1657-
if (!script.is_null() && Ref<Script>(script)->has_script_signal(p_signal)) {
1633+
if (script_instance && script_instance->get_script()->has_script_signal(p_signal)) {
16581634
return false;
16591635
}
16601636

@@ -1675,7 +1651,7 @@ bool Object::_disconnect(const StringName &p_signal, const Callable &p_callable,
16751651
SignalData *s = signal_map.getptr(p_signal);
16761652
if (!s) {
16771653
bool signal_is_valid = ClassDB::has_signal(get_class_name(), p_signal) ||
1678-
(!script.is_null() && Ref<Script>(script)->has_script_signal(p_signal));
1654+
(script_instance && script_instance->get_script()->has_script_signal(p_signal));
16791655
ERR_FAIL_COND_V_MSG(signal_is_valid, false, vformat("Attempt to disconnect a nonexistent connection from '%s'. Signal: '%s', callable: '%s'.", to_string(), p_signal, p_callable));
16801656
}
16811657
ERR_FAIL_NULL_V_MSG(s, false, vformat("Disconnecting nonexistent signal '%s' in '%s'.", p_signal, to_string()));

core/object/object.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,6 @@ class Object {
670670
HashSet<String> editor_section_folding;
671671
#endif
672672
ScriptInstance *script_instance = nullptr;
673-
Variant script; // Reference does not exist yet, store it in a Variant.
674673
HashMap<StringName, Variant> metadata;
675674
HashMap<StringName, Variant *> metadata_properties;
676675
mutable const GDType *_gdtype_ptr = nullptr;
@@ -953,9 +952,6 @@ class Object {
953952
void set_script_instance(ScriptInstance *p_instance);
954953
_FORCE_INLINE_ ScriptInstance *get_script_instance() const { return script_instance; }
955954

956-
// Some script languages can't control instance creation, so this function eases the process.
957-
void set_script_and_instance(const Variant &p_script, ScriptInstance *p_instance);
958-
959955
void add_user_signal(const MethodInfo &p_signal);
960956

961957
template <typename... VarArgs>

modules/mono/csharp_script.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1432,7 +1432,7 @@ void CSharpLanguage::tie_user_managed_to_unmanaged(GCHandleIntPtr p_gchandle_int
14321432

14331433
CSharpInstance *csharp_instance = CSharpInstance::create_for_managed_type(p_unmanaged, script.ptr(), gchandle);
14341434

1435-
p_unmanaged->set_script_and_instance(script, csharp_instance);
1435+
p_unmanaged->set_script_instance(csharp_instance);
14361436

14371437
csharp_instance->connect_event_signals();
14381438
}

modules/objectdb_profiler/editor/snapshot_data.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ SnapshotDataObject::SnapshotDataObject(SceneDebuggerObject &p_obj, GameStateSnap
7979
if (scr.is_valid()) {
8080
ScriptInstance *scr_instance = scr->placeholder_instance_create(this);
8181
if (scr_instance) {
82-
set_script_and_instance(pvalue, scr_instance);
82+
set_script_instance(scr_instance);
8383
}
8484
}
8585
}

0 commit comments

Comments
 (0)