Merge pull request #73161 from Faless/mp/4.x_fix_spawner_connect

[MP] Fix MultiplayerSpawner not connecting to child_entered_tree.
This commit is contained in:
Fabio Alessandrelli 2023-02-12 16:38:07 +01:00 committed by GitHub
commit 27fb53024b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -103,6 +103,15 @@ void MultiplayerSpawner::add_spawnable_scene(const String &p_path) {
ERR_FAIL_COND(!FileAccess::exists(p_path));
}
spawnable_scenes.push_back(sc);
#ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) {
return;
}
#endif
Node *node = get_spawn_node();
if (spawnable_scenes.size() == 1 && node && !node->is_connected("child_entered_tree", callable_mp(this, &MultiplayerSpawner::_node_added))) {
node->connect("child_entered_tree", callable_mp(this, &MultiplayerSpawner::_node_added));
}
}
int MultiplayerSpawner::get_spawnable_scene_count() const {
@ -116,6 +125,15 @@ String MultiplayerSpawner::get_spawnable_scene(int p_idx) const {
void MultiplayerSpawner::clear_spawnable_scenes() {
spawnable_scenes.clear();
#ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) {
return;
}
#endif
Node *node = get_spawn_node();
if (node && node->is_connected("child_entered_tree", callable_mp(this, &MultiplayerSpawner::_node_added))) {
node->disconnect("child_entered_tree", callable_mp(this, &MultiplayerSpawner::_node_added));
}
}
Vector<String> MultiplayerSpawner::_get_spawnable_scenes() const {