Add load_any_supported for arbitrary file extensions
This commit is contained in:
parent
02f5c8fa55
commit
54ed370d87
18
vfs.gd
18
vfs.gd
@ -101,6 +101,24 @@ func load_supported(path:String, ext_override:String = "")->Variant:
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
## Like load_supported, but expects [param path] to not have an extension.
|
||||||
|
## Instead, [param extensions] can contain multiple extensions, which will be
|
||||||
|
## appended and checked to exist. This allows for prioritizing one format
|
||||||
|
## over another or loosely defining a file id and allowing the engine to
|
||||||
|
## find a first match.
|
||||||
|
func load_any_supported(base_path:String, extensions:Array[String] = [])->Variant:
|
||||||
|
var _append_ext := func _append_ext(ext:String)->String:
|
||||||
|
return (base_path + ext) \
|
||||||
|
if ext.begins_with(".") \
|
||||||
|
else (base_path + "." + ext)
|
||||||
|
var try_paths:Array = extensions.map(_append_ext)
|
||||||
|
for path:String in try_paths:
|
||||||
|
if not file_exists(path): continue
|
||||||
|
return load_supported(path)
|
||||||
|
push_error("Could not find any file for '%s'.%s!" % [base_path, extensions])
|
||||||
|
return null
|
||||||
|
|
||||||
|
|
||||||
## [param parse] Callable(buffer:PackedByteArray)->Variant
|
## [param parse] Callable(buffer:PackedByteArray)->Variant
|
||||||
func load_and_parse(path:String, parse:Callable)->Variant:
|
func load_and_parse(path:String, parse:Callable)->Variant:
|
||||||
var abs_path:String = get_absolute_path(path)
|
var abs_path:String = get_absolute_path(path)
|
||||||
|
Loading…
Reference in New Issue
Block a user