| 2914 | ///// NEW FUNCTIONS ////// |
| 2915 | |
| 2916 | Ref<Resource> ResourceFormatLoaderCompatBinary::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) { |
| 2917 | if (r_error) { |
| 2918 | *r_error = ERR_CANT_OPEN; |
| 2919 | } |
| 2920 | |
| 2921 | Error err; |
| 2922 | |
| 2923 | Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err); |
| 2924 | |
| 2925 | ERR_FAIL_COND_V_MSG(err != OK, Ref<Resource>(), "Cannot open file '" + p_path + "'."); |
| 2926 | |
| 2927 | ResourceLoaderCompatBinary loader; |
| 2928 | loader.load_type = p_load_type; |
| 2929 | switch (p_load_type) { |
| 2930 | case ResourceInfo::FAKE_LOAD: |
| 2931 | case ResourceInfo::NON_GLOBAL_LOAD: |
| 2932 | loader.cache_mode = ResourceFormatLoader::CACHE_MODE_IGNORE; |
| 2933 | loader.use_sub_threads = false; |
| 2934 | break; |
| 2935 | case ResourceInfo::GLTF_LOAD: |
| 2936 | case ResourceInfo::REAL_LOAD: |
| 2937 | default: |
| 2938 | switch (p_cache_mode) { |
| 2939 | case CACHE_MODE_IGNORE: |
| 2940 | case CACHE_MODE_REUSE: |
| 2941 | case CACHE_MODE_REPLACE: |
| 2942 | loader.cache_mode = p_cache_mode; |
| 2943 | loader.cache_mode_for_external = CACHE_MODE_REUSE; |
| 2944 | break; |
| 2945 | case CACHE_MODE_IGNORE_DEEP: |
| 2946 | loader.cache_mode = CACHE_MODE_IGNORE; |
| 2947 | loader.cache_mode_for_external = p_cache_mode; |
| 2948 | break; |
| 2949 | case CACHE_MODE_REPLACE_DEEP: |
| 2950 | loader.cache_mode = CACHE_MODE_REPLACE; |
| 2951 | loader.cache_mode_for_external = p_cache_mode; |
| 2952 | break; |
| 2953 | } |
| 2954 | |
| 2955 | loader.use_sub_threads = use_threads; |
| 2956 | break; |
| 2957 | } |
| 2958 | String path = !p_original_path.is_empty() ? p_original_path : p_path; |
| 2959 | loader.local_path = GDRESettings::get_singleton()->localize_path(path); |
| 2960 | loader.progress = nullptr; |
| 2961 | loader.res_path = loader.local_path; |
| 2962 | loader.open(f); |
| 2963 | err = loader.load(); |
| 2964 | if (r_error) { |
| 2965 | *r_error = err; |
| 2966 | } |
| 2967 | if (err == OK) { |
| 2968 | return loader.get_resource(); |
| 2969 | } else { |
| 2970 | return Ref<Resource>(); |
| 2971 | } |
| 2972 | } |
| 2973 |
nothing calls this directly
no test coverage detected