thegates/app/scripts/loading/file_tools.gd
2025-07-10 05:33:28 +07:00

47 lines
1.3 KiB
GDScript

extends Node
class_name FileTools
static func remove_recursive(path: String) -> void:
if not DirAccess.dir_exists_absolute(path) and not FileAccess.file_exists(path): return
var dir = DirAccess.open(path)
if dir:
# List directory content
var err : Error
dir.list_dir_begin()
var file_name = dir.get_next()
while file_name != "":
if dir.current_is_dir():
remove_recursive(path + "/" + file_name)
else:
err = dir.remove(file_name)
if err != OK: Debug.logerr("Error removing: " + path + "/" + file_name)
file_name = dir.get_next()
# Remove current path
err = dir.remove(path)
if err != OK: Debug.logerr("Error removing: " + path)
else:
Debug.logerr("Error removing " + path)
static func load_external_tex(path: String) -> Texture2D:
if path.begins_with("res://"): return load(path)
if not FileAccess.file_exists(path): return null
var file = FileAccess.open(path, FileAccess.READ)
var bytes = file.get_buffer(file.get_length())
var image = Image.new()
match path.get_extension():
"png":
image.load_png_from_buffer(bytes)
"jpeg", "jpg":
image.load_jpg_from_buffer(bytes)
"webp":
image.load_webp_from_buffer(bytes)
"bmp":
image.load_bmp_from_buffer(bytes)
_:
return null
return ImageTexture.create_from_image(image) as Texture2D