54 lines
1.3 KiB
GDScript3
54 lines
1.3 KiB
GDScript3
|
|
# Derived from https://github.com/jegor377/godot-gdgifexporter
|
||
|
|
|
||
|
|
@tool
|
||
|
|
extends EditorImportPlugin
|
||
|
|
|
||
|
|
class_name GifImporterNative
|
||
|
|
|
||
|
|
enum Presets { DEFAULT }
|
||
|
|
|
||
|
|
func _get_importer_name() -> String:
|
||
|
|
return "gif.animated.texture.plugin"
|
||
|
|
|
||
|
|
func _get_visible_name() -> String:
|
||
|
|
return "Sprite Frames (Native)"
|
||
|
|
|
||
|
|
func _get_recognized_extensions() -> PackedStringArray:
|
||
|
|
return ["gif"]
|
||
|
|
|
||
|
|
func _get_save_extension() -> String:
|
||
|
|
return "res"
|
||
|
|
|
||
|
|
func _get_resource_type() -> String:
|
||
|
|
return "SpriteFrames"
|
||
|
|
|
||
|
|
func _get_priority() -> float:
|
||
|
|
return 90.0;
|
||
|
|
|
||
|
|
func _get_preset_count() -> int:
|
||
|
|
return Presets.size()
|
||
|
|
|
||
|
|
func _get_preset_name(preset_index: int) -> String:
|
||
|
|
return "Default"
|
||
|
|
|
||
|
|
func _get_import_options(path: String, preset_index: int) -> Array[Dictionary]:
|
||
|
|
return []
|
||
|
|
|
||
|
|
func _get_import_order() -> int:
|
||
|
|
return 0
|
||
|
|
|
||
|
|
func _get_option_visibility(path: String, option_name: StringName, options: Dictionary) -> bool:
|
||
|
|
return true
|
||
|
|
|
||
|
|
func _import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) -> Error:
|
||
|
|
var reader = GifReader.new()
|
||
|
|
var tex = reader.read(source_file)
|
||
|
|
if tex == null:
|
||
|
|
return FAILED
|
||
|
|
var filename = save_path + "." + _get_save_extension()
|
||
|
|
return ResourceSaver.save(
|
||
|
|
tex,
|
||
|
|
"%s.%s" % [save_path, _get_save_extension()],
|
||
|
|
ResourceSaver.SaverFlags.FLAG_COMPRESS
|
||
|
|
)
|