|  |  |  | extends Object | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const PLUGIN_BUNDLE_NAME: StringName = "aseprite_importers" | 
					
						
							|  |  |  | const ASEPRITE_EXECUTABLE_PATH_SETTING_NAME: StringName = PLUGIN_BUNDLE_NAME + "/aseprite_executable_path" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum CompressMode { | 
					
						
							|  |  |  |     LOSSLESS = 0, | 
					
						
							|  |  |  |     LOSSY = 1, | 
					
						
							|  |  |  |     VRAM_COMPRESSED = 2, | 
					
						
							|  |  |  |     VRAM_UNCOMPRESSED = 3, | 
					
						
							|  |  |  |     BASIS_UNIVERSAL = 4, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const COMPRESS_MODES_NAMES: PackedStringArray = [ | 
					
						
							|  |  |  |     "Lossless", | 
					
						
							|  |  |  |     "Lossy", | 
					
						
							|  |  |  |     "VRAM Compressed", | 
					
						
							|  |  |  |     "VRAM Uncompressed", | 
					
						
							|  |  |  |     "Basis Universal", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # ONLY FOR VRAM_COMPRESSED | 
					
						
							|  |  |  | enum HdrCompression { | 
					
						
							|  |  |  |     DISABLED = 0, | 
					
						
							|  |  |  |     OPAQUE_ONLY = 1, | 
					
						
							|  |  |  |     ALWAYS = 2, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const HDR_COMPRESSION_NAMES: PackedStringArray = [ | 
					
						
							|  |  |  |     "Disabled", | 
					
						
							|  |  |  |     "Opaque Only", | 
					
						
							|  |  |  |     "Always", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # EXCEPT LOSSLESS | 
					
						
							|  |  |  | enum NormalMap { | 
					
						
							|  |  |  |     DETECT = 0, | 
					
						
							|  |  |  |     ENABLE = 1, | 
					
						
							|  |  |  |     DISABLED = 2, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const NORMAL_MAP_NAMES: PackedStringArray = [ | 
					
						
							|  |  |  |     "Detect", | 
					
						
							|  |  |  |     "Enable", | 
					
						
							|  |  |  |     "Disabled", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum ChannelPack { | 
					
						
							|  |  |  |     SRGB_FRIENDLY = 0, | 
					
						
							|  |  |  |     OPTIMIZED = 1, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const CHANNEL_PACK_NAMES: PackedStringArray = [ | 
					
						
							|  |  |  |     "sRGB Friendly", | 
					
						
							|  |  |  |     "Optimized", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum Roughness { | 
					
						
							|  |  |  |     DETECT = 0, | 
					
						
							|  |  |  |     DISABLED = 1, | 
					
						
							|  |  |  |     RED = 2, | 
					
						
							|  |  |  |     GREEN = 3, | 
					
						
							|  |  |  |     BLUE = 4, | 
					
						
							|  |  |  |     ALPHA = 5, | 
					
						
							|  |  |  |     GRAY = 6, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const ROUGHNESS_NAMES: PackedStringArray = [ | 
					
						
							|  |  |  |     "Detect", | 
					
						
							|  |  |  |     "Disabled", | 
					
						
							|  |  |  |     "Red", | 
					
						
							|  |  |  |     "Green", | 
					
						
							|  |  |  |     "Blue", | 
					
						
							|  |  |  |     "Alpha", | 
					
						
							|  |  |  |     "Gray", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum CompressMode3D { | 
					
						
							|  |  |  |     DISABLED = 0, | 
					
						
							|  |  |  |     VRAM_COMPRESSED = 1, | 
					
						
							|  |  |  |     BASIS_UNIVERSAL = 2, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const COMPRESS_MODE_3D_NAMES: PackedStringArray = [ | 
					
						
							|  |  |  |     "Disabled", | 
					
						
							|  |  |  |     "VRAM Compressed", | 
					
						
							|  |  |  |     "Basis Universal", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const EMPTY_CALLABLE: Callable = Callable() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static func create_option( | 
					
						
							|  |  |  |     name: String, | 
					
						
							|  |  |  |     default_value: Variant, | 
					
						
							|  |  |  |     property_hint: PropertyHint = PROPERTY_HINT_NONE, | 
					
						
							|  |  |  |     hint_string: String = "", | 
					
						
							|  |  |  |     usage: PropertyUsageFlags = PROPERTY_USAGE_NONE, | 
					
						
							|  |  |  |     get_is_visible: Callable = EMPTY_CALLABLE | 
					
						
							|  |  |  |     ) -> Dictionary: | 
					
						
							|  |  |  |     var option_data: Dictionary = { | 
					
						
							|  |  |  |         name = name, | 
					
						
							|  |  |  |         default_value = default_value, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if hint_string: option_data["hint_string"] = hint_string | 
					
						
							|  |  |  |     if property_hint: option_data["property_hint"] = property_hint | 
					
						
							|  |  |  |     if usage: option_data["usage"] = usage | 
					
						
							|  |  |  |     if get_is_visible != EMPTY_CALLABLE: option_data["get_is_visible"] = get_is_visible | 
					
						
							|  |  |  |     return option_data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum BorderType { | 
					
						
							|  |  |  |     None = 0, | 
					
						
							|  |  |  |     Transparent = 1, | 
					
						
							|  |  |  |     Extruded = 2, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const SPRITESHEET_BORDER_TYPES: PackedStringArray = [ | 
					
						
							|  |  |  |     "None", | 
					
						
							|  |  |  |     "Transparent", | 
					
						
							|  |  |  |     "Extruded", | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum AnimationDirection { | 
					
						
							|  |  |  |     FORWARD = 0, | 
					
						
							|  |  |  |     REVERSE = 1, | 
					
						
							|  |  |  |     PING_PONG = 2, | 
					
						
							|  |  |  |     PING_PONG_REVERSE = 3, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const ASEPRITE_OUTPUT_ANIMATION_DIRECTIONS: PackedStringArray = [ | 
					
						
							|  |  |  |     "forward", "reverse", "pingpong", "pingpong_reverse" ] | 
					
						
							|  |  |  | const PRESET_OPTIONS_ANIMATION_DIRECTIONS: PackedStringArray = [ | 
					
						
							|  |  |  |     "Forward", "Reverse", "Ping-pong", "Ping-pong reverse" ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum SpritesheetLayout { | 
					
						
							|  |  |  |     PACKED = 0, | 
					
						
							|  |  |  |     BY_ROWS = 1, | 
					
						
							|  |  |  |     BY_COLUMNS = 2, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | const SPRITESHEET_LAYOUTS: PackedStringArray = ["Packed", "By rows", "By columns"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const OPTION_SPRITESHEET_BORDER_TYPE: String = "spritesheet/border_type" | 
					
						
							|  |  |  | const OPTION_SPRITESHEET_TRIM: String = "spritesheet/trim" | 
					
						
							|  |  |  | const OPTION_SPRITESHEET_IGNORE_EMPTY: String = "spritesheet/ignore_empty" | 
					
						
							|  |  |  | const OPTION_SPRITESHEET_MERGE_DUPLICATES: String = "spritesheet/merge_duplicates" | 
					
						
							|  |  |  | const OPTION_SPRITESHEET_LAYOUT: String = "spritesheet/layout" | 
					
						
							|  |  |  | const OPTION_ANIMATION_DEFAULT_NAME: String = "animation/default/name" | 
					
						
							|  |  |  | const OPTION_ANIMATION_DEFAULT_DIRECTION: String = "animation/default/direction" | 
					
						
							|  |  |  | const OPTION_ANIMATION_DEFAULT_REPEAT_COUNT: String = "animation/default/repeat_count" | 
					
						
							|  |  |  | const OPTION_ANIMATION_AUTOPLAY_NAME: String = "animation/autoplay" | 
					
						
							|  |  |  | const OPTION_ANIMATION_STRATEGY: String = "animation/strategy" | 
					
						
							|  |  |  | const OPTION_LAYERS_INCLUDE_REG_EX: String = "layers/include_reg_ex" | 
					
						
							|  |  |  | const OPTION_LAYERS_EXCLUDE_REG_EX: String = "layers/exclude_reg_ex" | 
					
						
							|  |  |  | const OPTION_TAGS_INCLUDE_REG_EX: String = "tags/include_reg_ex" | 
					
						
							|  |  |  | const OPTION_TAGS_EXCLUDE_REG_EX: String = "tags/exclude_reg_ex" | 
					
						
							|  |  |  | const SPRITESHEET_FIXED_ROWS_COUNT: String = "spritesheet/fixed_rows_count" | 
					
						
							|  |  |  | const SPRITESHEET_FIXED_COLUMNS_COUNT: String = "spritesheet/fixed_columns_count" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ParsedAnimationOptions: | 
					
						
							|  |  |  |     var border_type: BorderType | 
					
						
							|  |  |  |     var trim: bool | 
					
						
							|  |  |  |     var ignore_empty: bool | 
					
						
							|  |  |  |     var merge_duplicates: bool | 
					
						
							|  |  |  |     var spritesheet_layout: SpritesheetLayout | 
					
						
							|  |  |  |     var spritesheet_fixed_rows_count: int | 
					
						
							|  |  |  |     var spritesheet_fixed_columns_count: int | 
					
						
							|  |  |  |     var default_animation_name: String | 
					
						
							|  |  |  |     var default_animation_direction: AnimationDirection | 
					
						
							|  |  |  |     var default_animation_repeat_count: int | 
					
						
							|  |  |  |     var animation_autoplay_name: String | 
					
						
							|  |  |  |     func _init(options: Dictionary) -> void: | 
					
						
							|  |  |  |         border_type = options[OPTION_SPRITESHEET_BORDER_TYPE] | 
					
						
							|  |  |  |         trim = options[OPTION_SPRITESHEET_TRIM] | 
					
						
							|  |  |  |         ignore_empty = options[OPTION_SPRITESHEET_IGNORE_EMPTY] | 
					
						
							|  |  |  |         merge_duplicates = options[OPTION_SPRITESHEET_MERGE_DUPLICATES] | 
					
						
							|  |  |  |         spritesheet_layout = options[OPTION_SPRITESHEET_LAYOUT] | 
					
						
							|  |  |  |         spritesheet_fixed_rows_count = options[SPRITESHEET_FIXED_ROWS_COUNT] | 
					
						
							|  |  |  |         spritesheet_fixed_columns_count = options[SPRITESHEET_FIXED_COLUMNS_COUNT] | 
					
						
							|  |  |  |         default_animation_name = options[OPTION_ANIMATION_DEFAULT_NAME].strip_edges().strip_escapes() | 
					
						
							|  |  |  |         if default_animation_name.is_empty(): default_animation_name = "default" | 
					
						
							|  |  |  |         default_animation_direction = options[OPTION_ANIMATION_DEFAULT_DIRECTION] | 
					
						
							|  |  |  |         default_animation_repeat_count = options[OPTION_ANIMATION_DEFAULT_REPEAT_COUNT] | 
					
						
							|  |  |  |         animation_autoplay_name = options[OPTION_ANIMATION_AUTOPLAY_NAME].strip_edges().strip_escapes() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static func create_common_animation_options() -> Array[Dictionary]: | 
					
						
							|  |  |  |     return [ | 
					
						
							|  |  |  |         create_option(OPTION_SPRITESHEET_LAYOUT, SpritesheetLayout.PACKED, PROPERTY_HINT_ENUM, ",".join(SPRITESHEET_LAYOUTS), PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED ), | 
					
						
							|  |  |  |         create_option(SPRITESHEET_FIXED_ROWS_COUNT, 1, PROPERTY_HINT_RANGE, "1,32,1,or_greater", PROPERTY_USAGE_EDITOR, | 
					
						
							|  |  |  |             func(options): return options[OPTION_SPRITESHEET_LAYOUT] == SpritesheetLayout.BY_COLUMNS), | 
					
						
							|  |  |  |         create_option(SPRITESHEET_FIXED_COLUMNS_COUNT, 1, PROPERTY_HINT_RANGE, "1,32,1,or_greater", PROPERTY_USAGE_EDITOR, | 
					
						
							|  |  |  |             func(options): return options[OPTION_SPRITESHEET_LAYOUT] == SpritesheetLayout.BY_ROWS), | 
					
						
							|  |  |  |         create_option(OPTION_SPRITESHEET_BORDER_TYPE, BorderType.None, PROPERTY_HINT_ENUM, ",".join(SPRITESHEET_BORDER_TYPES), PROPERTY_USAGE_EDITOR), | 
					
						
							|  |  |  |         create_option(OPTION_SPRITESHEET_TRIM, false, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR, | 
					
						
							|  |  |  |             func(options): return options[OPTION_SPRITESHEET_LAYOUT] != SpritesheetLayout.PACKED), | 
					
						
							|  |  |  |         create_option(OPTION_SPRITESHEET_IGNORE_EMPTY, false, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), | 
					
						
							|  |  |  |         create_option(OPTION_SPRITESHEET_MERGE_DUPLICATES, false, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), | 
					
						
							|  |  |  |         create_option(OPTION_ANIMATION_DEFAULT_NAME, "default", PROPERTY_HINT_PLACEHOLDER_TEXT, "default", PROPERTY_USAGE_EDITOR), | 
					
						
							|  |  |  |         create_option(OPTION_ANIMATION_DEFAULT_DIRECTION, AnimationDirection.FORWARD, PROPERTY_HINT_ENUM, ",".join(PRESET_OPTIONS_ANIMATION_DIRECTIONS), PROPERTY_USAGE_EDITOR), | 
					
						
							|  |  |  |         create_option(OPTION_ANIMATION_DEFAULT_REPEAT_COUNT, 0, PROPERTY_HINT_RANGE, "0,32,1,or_greater", PROPERTY_USAGE_EDITOR), | 
					
						
							|  |  |  |         create_option(OPTION_ANIMATION_AUTOPLAY_NAME, "", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), | 
					
						
							|  |  |  |     ] |