130 lines
3.7 KiB
GDScript
130 lines
3.7 KiB
GDScript
tool
|
|
extends EditorPlugin
|
|
|
|
const ConfigDialog = preload('config/config_dialog.tscn')
|
|
const WizardWindow = preload("animated_sprite/ASWizardWindow.tscn")
|
|
const ImportPlugin = preload("animated_sprite/import_plugin.gd")
|
|
const AnimatedSpriteInspectorPlugin = preload("animated_sprite/inspector_plugin.gd")
|
|
const SpriteInspectorPlugin = preload("animation_player/inspector_plugin.gd")
|
|
const menu_item_name = "Aseprite Spritesheet Wizard"
|
|
const config_menu_item_name = "Aseprite Wizard Config"
|
|
|
|
var config = preload("config/config.gd").new()
|
|
var window: PanelContainer
|
|
var config_window: PopupPanel
|
|
var import_plugin : EditorImportPlugin
|
|
var sprite_inspector_plugin: EditorInspectorPlugin
|
|
var animated_sprite_inspector_plugin: EditorInspectorPlugin
|
|
|
|
var _importer_enabled = false
|
|
|
|
func _enter_tree():
|
|
_load_config()
|
|
_setup_menu_entries()
|
|
_setup_importer()
|
|
_setup_animated_sprite_inspector_plugin()
|
|
_setup_sprite_inspector_plugin()
|
|
|
|
|
|
func _exit_tree():
|
|
_remove_menu_entries()
|
|
_remove_importer()
|
|
_remove_wizard_dock()
|
|
_remove_inspector_plugins()
|
|
|
|
|
|
func _load_config():
|
|
var editor_gui = get_editor_interface().get_base_control()
|
|
config.load_config()
|
|
config.set_icon_arrow_down(editor_gui.get_icon("GuiTreeArrowDown", "EditorIcons"))
|
|
config.set_icon_arrow_right(editor_gui.get_icon("GuiTreeArrowRight", "EditorIcons"))
|
|
|
|
|
|
func _setup_menu_entries():
|
|
add_tool_menu_item(menu_item_name, self, "_open_window")
|
|
add_tool_menu_item(config_menu_item_name, self, "_open_config_dialog")
|
|
|
|
|
|
func _remove_menu_entries():
|
|
remove_tool_menu_item(menu_item_name)
|
|
remove_tool_menu_item(config_menu_item_name)
|
|
|
|
|
|
func _setup_importer():
|
|
if (config.is_importer_enabled()):
|
|
import_plugin = ImportPlugin.new()
|
|
add_import_plugin(import_plugin)
|
|
_importer_enabled = true
|
|
|
|
|
|
func _remove_importer():
|
|
if _importer_enabled:
|
|
remove_import_plugin(import_plugin)
|
|
_importer_enabled = false
|
|
|
|
|
|
func _setup_sprite_inspector_plugin():
|
|
sprite_inspector_plugin = SpriteInspectorPlugin.new()
|
|
sprite_inspector_plugin.file_system = get_editor_interface().get_resource_filesystem()
|
|
sprite_inspector_plugin.config = config
|
|
add_inspector_plugin(sprite_inspector_plugin)
|
|
|
|
|
|
func _setup_animated_sprite_inspector_plugin():
|
|
animated_sprite_inspector_plugin = AnimatedSpriteInspectorPlugin.new()
|
|
animated_sprite_inspector_plugin.file_system = get_editor_interface().get_resource_filesystem()
|
|
animated_sprite_inspector_plugin.config = config
|
|
add_inspector_plugin(animated_sprite_inspector_plugin)
|
|
|
|
|
|
func _remove_inspector_plugins():
|
|
remove_inspector_plugin(sprite_inspector_plugin)
|
|
remove_inspector_plugin(animated_sprite_inspector_plugin)
|
|
|
|
|
|
func _remove_wizard_dock():
|
|
if window:
|
|
remove_control_from_bottom_panel(window)
|
|
window.queue_free()
|
|
window = null
|
|
|
|
|
|
func _open_window(_ud):
|
|
if window:
|
|
make_bottom_panel_item_visible(window)
|
|
return
|
|
|
|
window = WizardWindow.instance()
|
|
window.init(config, get_editor_interface().get_resource_filesystem())
|
|
window.connect("close_requested", self, "_on_window_closed")
|
|
add_control_to_bottom_panel(window, "Aseprite Wizard")
|
|
make_bottom_panel_item_visible(window)
|
|
|
|
|
|
func _open_config_dialog(_ud):
|
|
if is_instance_valid(config_window):
|
|
config_window.queue_free()
|
|
|
|
config_window = ConfigDialog.instance()
|
|
config_window.init(config)
|
|
config_window.connect("importer_state_changed", self, "_on_importer_state_changed")
|
|
get_editor_interface().get_base_control().add_child(config_window)
|
|
config_window.popup_centered()
|
|
|
|
|
|
func _on_window_closed():
|
|
if window:
|
|
remove_control_from_bottom_panel(window)
|
|
window.queue_free()
|
|
window = null
|
|
|
|
|
|
func _on_importer_state_changed():
|
|
if _importer_enabled:
|
|
remove_import_plugin(import_plugin)
|
|
_importer_enabled = false
|
|
else:
|
|
import_plugin = ImportPlugin.new()
|
|
add_import_plugin(import_plugin)
|
|
_importer_enabled = true
|