@@ -1019,18 +1019,8 @@ String Object::to_string() {
10191019 return " <" + get_class () + " #" + itos (get_instance_id ()) + " >" ;
10201020}
10211021
1022- void Object::set_script_and_instance (const Variant &p_script, ScriptInstance *p_instance) {
1023- // this function is not meant to be used in any of these ways
1024- ERR_FAIL_COND (p_script.is_null ());
1025- ERR_FAIL_NULL (p_instance);
1026- ERR_FAIL_COND (script_instance != nullptr || !script.is_null ());
1027-
1028- script = p_script;
1029- script_instance = p_instance;
1030- }
1031-
10321022void Object::set_script (const Variant &p_script) {
1033- if (script == p_script) {
1023+ if (get_script () == p_script) {
10341024 return ;
10351025 }
10361026
@@ -1040,8 +1030,6 @@ void Object::set_script(const Variant &p_script) {
10401030 ERR_FAIL_COND_MSG (s->is_abstract (), vformat (" Cannot set object script. Script '%s' should not be abstract." , s->get_path ()));
10411031 }
10421032
1043- script = p_script;
1044-
10451033 if (script_instance) {
10461034 memdelete (script_instance);
10471035 script_instance = nullptr ;
@@ -1071,16 +1059,10 @@ void Object::set_script_instance(ScriptInstance *p_instance) {
10711059 }
10721060
10731061 script_instance = p_instance;
1074-
1075- if (p_instance) {
1076- script = p_instance->get_script ();
1077- } else {
1078- script = Variant ();
1079- }
10801062}
10811063
10821064Variant Object::get_script () const {
1083- return script ;
1065+ return script_instance ? Variant (script_instance-> get_script ()) : Variant () ;
10841066}
10851067
10861068bool Object::has_meta (const StringName &p_name) const {
@@ -1263,7 +1245,7 @@ Error Object::emit_signalp(const StringName &p_name, const Variant **p_args, int
12631245#ifdef DEBUG_ENABLED
12641246 bool signal_is_valid = ClassDB::has_signal (get_class_name (), p_name);
12651247 // check in script
1266- 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));
1248+ 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));
12671249#endif
12681250 // not connected? just return
12691251 return ERR_UNAVAILABLE;
@@ -1333,7 +1315,7 @@ Error Object::emit_signalp(const StringName &p_name, const Variant **p_args, int
13331315
13341316 if (ce.error != Callable::CallError::CALL_OK) {
13351317#ifdef DEBUG_ENABLED
1336- if (flags & CONNECT_PERSIST && Engine::get_singleton ()->is_editor_hint () && (script. is_null () || !Ref<Script>(script )->is_tool ())) {
1318+ if (flags & CONNECT_PERSIST && Engine::get_singleton ()->is_editor_hint () && (!script_instance || !script_instance-> get_script ( )->is_tool ())) {
13371319 continue ;
13381320 }
13391321#endif
@@ -1437,11 +1419,8 @@ TypedArray<Dictionary> Object::_get_incoming_connections() const {
14371419}
14381420
14391421bool Object::has_signal (const StringName &p_name) const {
1440- if (!script.is_null ()) {
1441- Ref<Script> scr = script;
1442- if (scr.is_valid () && scr->has_script_signal (p_name)) {
1443- return true ;
1444- }
1422+ if (script_instance && script_instance->get_script ()->has_script_signal (p_name)) {
1423+ return true ;
14451424 }
14461425
14471426 if (ClassDB::has_signal (get_class_name (), p_name)) {
@@ -1458,11 +1437,8 @@ bool Object::has_signal(const StringName &p_name) const {
14581437void Object::get_signal_list (List<MethodInfo> *p_signals) const {
14591438 OBJ_SIGNAL_LOCK
14601439
1461- if (!script.is_null ()) {
1462- Ref<Script> scr = script;
1463- if (scr.is_valid ()) {
1464- scr->get_script_signal_list (p_signals);
1465- }
1440+ if (script_instance) {
1441+ script_instance->get_script ()->get_script_signal_list (p_signals);
14661442 }
14671443
14681444 ClassDB::get_signal_list (get_class_name (), p_signals);
@@ -1543,14 +1519,14 @@ Error Object::connect(const StringName &p_signal, const Callable &p_callable, ui
15431519 if (!s) {
15441520 bool signal_is_valid = ClassDB::has_signal (get_class_name (), p_signal);
15451521 // check in script
1546- if (!signal_is_valid && !script. is_null () ) {
1547- if (Ref<Script>(script )->has_script_signal (p_signal)) {
1522+ if (!signal_is_valid && script_instance ) {
1523+ if (script_instance-> get_script ( )->has_script_signal (p_signal)) {
15481524 signal_is_valid = true ;
15491525 }
15501526#ifdef TOOLS_ENABLED
15511527 else {
15521528 // allow connecting signals anyway if script is invalid, see issue #17070
1553- if (!Ref<Script>(script )->is_valid ()) {
1529+ if (!script_instance-> get_script ( )->is_valid ()) {
15541530 signal_is_valid = true ;
15551531 }
15561532 }
@@ -1606,7 +1582,7 @@ bool Object::is_connected(const StringName &p_signal, const Callable &p_callable
16061582 return false ;
16071583 }
16081584
1609- if (!script. is_null () && Ref<Script>(script )->has_script_signal (p_signal)) {
1585+ if (script_instance && script_instance-> get_script ( )->has_script_signal (p_signal)) {
16101586 return false ;
16111587 }
16121588
@@ -1626,7 +1602,7 @@ bool Object::has_connections(const StringName &p_signal) const {
16261602 return false ;
16271603 }
16281604
1629- if (!script. is_null () && Ref<Script>(script )->has_script_signal (p_signal)) {
1605+ if (script_instance && script_instance-> get_script ( )->has_script_signal (p_signal)) {
16301606 return false ;
16311607 }
16321608
@@ -1647,7 +1623,7 @@ bool Object::_disconnect(const StringName &p_signal, const Callable &p_callable,
16471623 SignalData *s = signal_map.getptr (p_signal);
16481624 if (!s) {
16491625 bool signal_is_valid = ClassDB::has_signal (get_class_name (), p_signal) ||
1650- (!script. is_null () && Ref<Script>(script )->has_script_signal (p_signal));
1626+ (script_instance && script_instance-> get_script ( )->has_script_signal (p_signal));
16511627 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));
16521628 }
16531629 ERR_FAIL_NULL_V_MSG (s, false , vformat (" Disconnecting nonexistent signal '%s' in '%s'." , p_signal, to_string ()));
0 commit comments