init
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
@tool
|
||||
extends Node
|
||||
|
||||
const wizard_meta = preload("../../../config/wizard_config.gd")
|
||||
const result_code = preload("../../../config/result_codes.gd")
|
||||
var _aseprite_file_exporter = preload("../../../aseprite/file_exporter.gd").new()
|
||||
var _sf_creator = preload("../../../creators/sprite_frames/sprite_frames_creator.gd").new()
|
||||
var _config = preload("../../../config/config.gd").new()
|
||||
|
||||
var _file_system: EditorFileSystem = EditorInterface.get_resource_filesystem()
|
||||
|
||||
|
||||
# fields
|
||||
# "split_layers"
|
||||
# "only_visible_layers"
|
||||
# "layer_exclusion_pattern"
|
||||
# "output_name"
|
||||
# "source_file"
|
||||
# "do_not_create_resource"
|
||||
# "output_location"
|
||||
func import_and_create_resources(aseprite_file: String, fields: Dictionary) -> int:
|
||||
var export_mode = _aseprite_file_exporter.LAYERS_EXPORT_MODE if fields.split_layers else _aseprite_file_exporter.FILE_EXPORT_MODE
|
||||
var options = {
|
||||
"export_mode": export_mode,
|
||||
"exception_pattern": fields.layer_exclusion_pattern,
|
||||
"only_visible_layers": fields.only_visible_layers,
|
||||
"output_filename": fields.output_name,
|
||||
"do_not_create_resource": fields.do_not_create_resource,
|
||||
"output_folder": fields.output_location,
|
||||
}
|
||||
|
||||
var aseprite_output = _aseprite_file_exporter.generate_aseprite_files(
|
||||
ProjectSettings.globalize_path(aseprite_file),
|
||||
options
|
||||
)
|
||||
|
||||
if not aseprite_output.is_ok:
|
||||
return aseprite_output.code
|
||||
|
||||
_file_system.scan()
|
||||
|
||||
await _file_system.filesystem_changed
|
||||
|
||||
var exit_code = OK
|
||||
|
||||
if !options.get("do_not_create_resource", false):
|
||||
var resources = _sf_creator.create_resources(aseprite_output.content)
|
||||
if resources.is_ok:
|
||||
_add_metadata(resources.content, aseprite_file, fields, options)
|
||||
exit_code = _sf_creator.save_resources(resources.content)
|
||||
|
||||
if _config.should_remove_source_files():
|
||||
_remove_source_files(aseprite_output.content)
|
||||
|
||||
return exit_code
|
||||
|
||||
|
||||
func _add_metadata(resources: Array, aseprite_file: String, fields: Dictionary, options: Dictionary) -> void:
|
||||
var source_hash = FileAccess.get_md5(aseprite_file)
|
||||
var group = str(ResourceUID.create_id()) if options.export_mode == _aseprite_file_exporter.LAYERS_EXPORT_MODE else ""
|
||||
|
||||
for r in resources:
|
||||
wizard_meta.set_source_hash(r.resource, source_hash)
|
||||
wizard_meta.save_config(r.resource, { "fields": fields, "group": group })
|
||||
|
||||
|
||||
func _remove_source_files(source_files: Array):
|
||||
for s in source_files:
|
||||
DirAccess.remove_absolute(s.data_file)
|
||||
Reference in New Issue
Block a user