You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			195 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			195 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			GDScript
		
	
| 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),
 | |
|     ]
 |