From f76b7ed5fc8e881e419ca297acdad69684659ca2 Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Tue, 28 May 2024 22:38:09 -0400 Subject: [PATCH] Expose `get_cached_ref` from `ResourceCache` --- core/core_bind.cpp | 6 ++++++ core/core_bind.h | 1 + doc/classes/ResourceLoader.xml | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/core/core_bind.cpp b/core/core_bind.cpp index 0996db9d890..8c0f8ffdb11 100644 --- a/core/core_bind.cpp +++ b/core/core_bind.cpp @@ -114,6 +114,11 @@ bool ResourceLoader::has_cached(const String &p_path) { return ResourceCache::has(local_path); } +Ref ResourceLoader::get_cached_ref(const String &p_path) { + String local_path = ProjectSettings::get_singleton()->localize_path(p_path); + return ResourceCache::get_ref(local_path); +} + bool ResourceLoader::exists(const String &p_path, const String &p_type_hint) { return ::ResourceLoader::exists(p_path, p_type_hint); } @@ -134,6 +139,7 @@ void ResourceLoader::_bind_methods() { ClassDB::bind_method(D_METHOD("set_abort_on_missing_resources", "abort"), &ResourceLoader::set_abort_on_missing_resources); ClassDB::bind_method(D_METHOD("get_dependencies", "path"), &ResourceLoader::get_dependencies); ClassDB::bind_method(D_METHOD("has_cached", "path"), &ResourceLoader::has_cached); + ClassDB::bind_method(D_METHOD("get_cached_ref", "path"), &ResourceLoader::get_cached_ref); ClassDB::bind_method(D_METHOD("exists", "path", "type_hint"), &ResourceLoader::exists, DEFVAL("")); ClassDB::bind_method(D_METHOD("get_resource_uid", "path"), &ResourceLoader::get_resource_uid); diff --git a/core/core_bind.h b/core/core_bind.h index 148e0ad83e4..61d68a35489 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -83,6 +83,7 @@ public: void set_abort_on_missing_resources(bool p_abort); PackedStringArray get_dependencies(const String &p_path); bool has_cached(const String &p_path); + Ref get_cached_ref(const String &p_path); bool exists(const String &p_path, const String &p_type_hint = ""); ResourceUID::ID get_resource_uid(const String &p_path); diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml index 1961ca2b0e2..ce41c4fd4cc 100644 --- a/doc/classes/ResourceLoader.xml +++ b/doc/classes/ResourceLoader.xml @@ -31,6 +31,14 @@ [b]Note:[/b] If you use [method Resource.take_over_path], this method will return [code]true[/code] for the taken path even if the resource wasn't saved (i.e. exists only in resource cache). + + + + + Returns the cached resource reference for the given [param path]. + [b]Note:[/b] If the resource is not cached, the returned [Resource] will be invalid. + +