From 88b3090745c75c73605df0539377f7320ba9fa44 Mon Sep 17 00:00:00 2001 From: kobewi Date: Tue, 12 Nov 2024 19:37:51 +0100 Subject: [PATCH] Handle scene UIDs in MultiplayerSpawner --- modules/multiplayer/multiplayer_spawner.cpp | 10 ++++++++-- modules/multiplayer/multiplayer_spawner.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/multiplayer/multiplayer_spawner.cpp b/modules/multiplayer/multiplayer_spawner.cpp index 682d20022ff..69a7545e510 100644 --- a/modules/multiplayer/multiplayer_spawner.cpp +++ b/modules/multiplayer/multiplayer_spawner.cpp @@ -97,7 +97,13 @@ PackedStringArray MultiplayerSpawner::get_configuration_warnings() const { void MultiplayerSpawner::add_spawnable_scene(const String &p_path) { SpawnableScene sc; - sc.path = p_path; + if (p_path.begins_with("uid://")) { + sc.uid = p_path; + sc.path = ResourceUID::uid_to_path(p_path); + } else { + sc.uid = ResourceUID::path_to_uid(p_path); + sc.path = p_path; + } if (Engine::get_singleton()->is_editor_hint()) { ERR_FAIL_COND(!ResourceLoader::exists(p_path)); } @@ -139,7 +145,7 @@ Vector MultiplayerSpawner::_get_spawnable_scenes() const { Vector ss; ss.resize(spawnable_scenes.size()); for (int i = 0; i < ss.size(); i++) { - ss.write[i] = spawnable_scenes[i].path; + ss.write[i] = spawnable_scenes[i].uid; } return ss; } diff --git a/modules/multiplayer/multiplayer_spawner.h b/modules/multiplayer/multiplayer_spawner.h index 0e94b781eaa..868efb9e0b2 100644 --- a/modules/multiplayer/multiplayer_spawner.h +++ b/modules/multiplayer/multiplayer_spawner.h @@ -49,6 +49,7 @@ public: private: struct SpawnableScene { String path; + String uid; Ref cache; };