init
This commit is contained in:
156
addons/AsepriteWizard/plugin.gd
Normal file
156
addons/AsepriteWizard/plugin.gd
Normal file
@@ -0,0 +1,156 @@
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
# importers
|
||||
const NoopImportPlugin = preload("importers/noop_import_plugin.gd")
|
||||
const SpriteFramesImportPlugin = preload("importers/sprite_frames_import_plugin.gd")
|
||||
const TilesetTextureImportPlugin = preload("importers/tileset_texture_import_plugin.gd")
|
||||
const TextureImportPlugin = preload("importers/static_texture_import_plugin.gd")
|
||||
|
||||
# export
|
||||
const ExportPlugin = preload("export/metadata_export_plugin.gd")
|
||||
# interface
|
||||
const ConfigDialog = preload('config/config_dialog.tscn')
|
||||
const WizardWindow = preload("interface/docks/wizard/as_wizard_dock_container.tscn")
|
||||
const AnimatedSpriteInspectorPlugin = preload("interface/docks/animated_sprite/inspector_plugin.gd")
|
||||
const SpriteInspectorPlugin = preload("interface/docks/sprite/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: TabContainer
|
||||
var config_window: PopupPanel
|
||||
var export_plugin : EditorExportPlugin
|
||||
var sprite_inspector_plugin: EditorInspectorPlugin
|
||||
var animated_sprite_inspector_plugin: EditorInspectorPlugin
|
||||
|
||||
var _exporter_enabled = false
|
||||
|
||||
var _importers = []
|
||||
|
||||
func _enter_tree():
|
||||
_load_config()
|
||||
_setup_menu_entries()
|
||||
_setup_importer()
|
||||
_setup_exporter()
|
||||
_setup_animated_sprite_inspector_plugin()
|
||||
_setup_sprite_inspector_plugin()
|
||||
|
||||
|
||||
func _disable_plugin():
|
||||
_remove_menu_entries()
|
||||
_remove_importer()
|
||||
_remove_exporter()
|
||||
_remove_wizard_dock()
|
||||
_remove_inspector_plugins()
|
||||
config.clear_project_settings()
|
||||
config.set_icons({})
|
||||
|
||||
|
||||
func _load_config():
|
||||
var editor_gui = get_editor_interface().get_base_control()
|
||||
config._editor_settings = get_editor_interface().get_editor_settings()
|
||||
config.set_icons({
|
||||
"collapsed": editor_gui.get_theme_icon("GuiTreeArrowRight", "EditorIcons"),
|
||||
"expanded": editor_gui.get_theme_icon("GuiTreeArrowDown", "EditorIcons"),
|
||||
})
|
||||
config.initialize_project_settings()
|
||||
|
||||
|
||||
func _setup_menu_entries():
|
||||
add_tool_menu_item(menu_item_name, _open_window)
|
||||
add_tool_menu_item(config_menu_item_name, _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():
|
||||
_importers = [
|
||||
NoopImportPlugin.new(),
|
||||
SpriteFramesImportPlugin.new(),
|
||||
TilesetTextureImportPlugin.new(),
|
||||
TextureImportPlugin.new(),
|
||||
]
|
||||
|
||||
for i in _importers:
|
||||
if not i is NoopImportPlugin:
|
||||
i.file_system = get_editor_interface().get_resource_filesystem()
|
||||
i.config = config
|
||||
add_import_plugin(i)
|
||||
|
||||
|
||||
func _remove_importer():
|
||||
for i in _importers:
|
||||
remove_import_plugin(i)
|
||||
|
||||
|
||||
func _setup_exporter():
|
||||
if config.is_exporter_enabled():
|
||||
export_plugin = ExportPlugin.new()
|
||||
add_export_plugin(export_plugin)
|
||||
_exporter_enabled = true
|
||||
|
||||
|
||||
func _remove_exporter():
|
||||
if _exporter_enabled:
|
||||
remove_export_plugin(export_plugin)
|
||||
_exporter_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():
|
||||
if window:
|
||||
make_bottom_panel_item_visible(window)
|
||||
return
|
||||
|
||||
window = WizardWindow.instantiate()
|
||||
window.init(config, get_editor_interface().get_resource_filesystem())
|
||||
window.connect("close_requested",Callable(self,"_on_window_closed"))
|
||||
add_control_to_bottom_panel(window, "Aseprite Wizard")
|
||||
make_bottom_panel_item_visible(window)
|
||||
|
||||
|
||||
func _open_config_dialog():
|
||||
if is_instance_valid(config_window):
|
||||
config_window.queue_free()
|
||||
|
||||
config_window = ConfigDialog.instantiate()
|
||||
config_window.init(config)
|
||||
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
|
||||
Reference in New Issue
Block a user