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.
191 lines
7.3 KiB
GDScript
191 lines
7.3 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),
|
|
]
|