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

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),
]