@@ -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-
10601050void 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
11101092Variant Object::get_script () const {
1111- return script ;
1093+ return script_instance ? Variant (script_instance-> get_script ()) : Variant () ;
11121094}
11131095
11141096bool 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
14671449bool 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 {
14861465void 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 ()));
0 commit comments