MCPcopy Create free account
hub / github.com/GDRETools/gdsdecomp / custom_load

Method custom_load

compat/resource_compat_text.cpp:2880–2936  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2878}
2879
2880Ref<Resource> ResourceFormatLoaderCompatText::custom_load(const String &p_path, const String &p_original_path, ResourceInfo::LoadType p_load_type, Error *r_error, bool use_threads, ResourceFormatLoader::CacheMode p_cache_mode) {
2881 if (r_error) {
2882 *r_error = ERR_CANT_OPEN;
2883 }
2884
2885 Error err;
2886
2887 Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
2888
2889 ERR_FAIL_COND_V_MSG(err != OK, Ref<Resource>(), "Cannot open file '" + p_path + "'.");
2890
2891 ResourceLoaderCompatText loader;
2892 loader.load_type = p_load_type;
2893 switch (p_load_type) {
2894 // TODO: Figure out if we can do caching at all
2895 case ResourceInfo::FAKE_LOAD:
2896 case ResourceInfo::NON_GLOBAL_LOAD:
2897 loader.cache_mode = ResourceFormatLoader::CACHE_MODE_IGNORE;
2898 loader.use_sub_threads = false;
2899 break;
2900 case ResourceInfo::GLTF_LOAD:
2901 case ResourceInfo::REAL_LOAD:
2902 default:
2903 switch (p_cache_mode) {
2904 case CACHE_MODE_IGNORE:
2905 case CACHE_MODE_REUSE:
2906 case CACHE_MODE_REPLACE:
2907 loader.cache_mode = p_cache_mode;
2908 loader.cache_mode_for_external = CACHE_MODE_REUSE;
2909 break;
2910 case CACHE_MODE_IGNORE_DEEP:
2911 loader.cache_mode = CACHE_MODE_IGNORE;
2912 loader.cache_mode_for_external = p_cache_mode;
2913 break;
2914 case CACHE_MODE_REPLACE_DEEP:
2915 loader.cache_mode = CACHE_MODE_REPLACE;
2916 loader.cache_mode_for_external = p_cache_mode;
2917 break;
2918 }
2919 loader.use_sub_threads = use_threads;
2920 break;
2921 }
2922 String path = !p_original_path.is_empty() ? p_original_path : p_path;
2923 loader.local_path = GDRESettings::get_singleton()->localize_path(path);
2924 loader.progress = nullptr;
2925 loader.res_path = loader.local_path;
2926 loader.open(f);
2927 err = loader.load();
2928 if (r_error) {
2929 *r_error = err;
2930 }
2931 if (err == OK) {
2932 return loader.get_resource();
2933 } else {
2934 return Ref<Resource>();
2935 }
2936}
2937

Callers

nothing calls this directly

Calls 4

localize_pathMethod · 0.80
openMethod · 0.45
loadMethod · 0.45
get_resourceMethod · 0.45

Tested by

no test coverage detected