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
		
	
	
		
			6.7 KiB
		
	
	
	
		
			GDScript
		
	
			
		
		
	
	
			195 lines
		
	
	
		
			6.7 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),
 | |
| 	]
 |