diff --git a/core/core_bind.cpp b/core/core_bind.cpp index e5363f9acc8d..d424f804f186 100644 --- a/core/core_bind.cpp +++ b/core/core_bind.cpp @@ -154,6 +154,10 @@ Error ResourceSaver::save(const Ref &p_resource, const String &p_path, return ::ResourceSaver::save(p_resource, p_path, p_flags); } +Error ResourceSaver::set_uid(const String &p_path, ResourceUID::ID p_uid) { + return ::ResourceSaver::set_uid(p_path, p_uid); +} + Vector ResourceSaver::get_recognized_extensions(const Ref &p_resource) { ERR_FAIL_COND_V_MSG(p_resource.is_null(), Vector(), "It's not a reference to a valid Resource object."); List exts; @@ -177,6 +181,7 @@ ResourceSaver *ResourceSaver::singleton = nullptr; void ResourceSaver::_bind_methods() { ClassDB::bind_method(D_METHOD("save", "resource", "path", "flags"), &ResourceSaver::save, DEFVAL(""), DEFVAL((uint32_t)FLAG_NONE)); + ClassDB::bind_method(D_METHOD("set_uid", "resource", "uid"), &ResourceSaver::set_uid); ClassDB::bind_method(D_METHOD("get_recognized_extensions", "type"), &ResourceSaver::get_recognized_extensions); ClassDB::bind_method(D_METHOD("add_resource_format_saver", "format_saver", "at_front"), &ResourceSaver::add_resource_format_saver, DEFVAL(false)); ClassDB::bind_method(D_METHOD("remove_resource_format_saver", "format_saver"), &ResourceSaver::remove_resource_format_saver); diff --git a/core/core_bind.h b/core/core_bind.h index 94d95f2ce987..063d7e997ef4 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -109,6 +109,7 @@ class ResourceSaver : public Object { static ResourceSaver *get_singleton() { return singleton; } Error save(const Ref &p_resource, const String &p_path, BitField p_flags); + Error set_uid(const String &p_path, ResourceUID::ID p_uid); Vector get_recognized_extensions(const Ref &p_resource); void add_resource_format_saver(Ref p_format_saver, bool p_at_front); void remove_resource_format_saver(Ref p_format_saver); diff --git a/doc/classes/ResourceSaver.xml b/doc/classes/ResourceSaver.xml index 42c9bd7a3c62..42e88cf7047e 100644 --- a/doc/classes/ResourceSaver.xml +++ b/doc/classes/ResourceSaver.xml @@ -45,6 +45,15 @@ [b]Note:[/b] When the project is running, any generated UID associated with the resource will not be saved as the required code is only executed in editor mode. + + + + + + Sets the UID of the given [param resource] path to [param uid]. You can generate a new UID using [method ResourceUID.create_id]. + Since resources will normally get a UID automatically, this method is only useful in very specific cases. + +