| 2878 | } |
| 2879 | |
| 2880 | Ref<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 |
nothing calls this directly
no test coverage detected