98 lines
3.9 KiB
GDScript
98 lines
3.9 KiB
GDScript
@tool
|
|
extends EditorPlugin
|
|
|
|
static var _log : TwitchLogger = TwitchLogger.new("Twitcher Plugin")
|
|
|
|
const REGENERATE_API_LABEL: String = "Regenerate Twitch Api"
|
|
const OPEN_SETUP_LABEL: String = "Twitcher Setup"
|
|
|
|
# oOuch imports
|
|
const OauthSettingInspector = preload("res://addons/twitcher/lib/oOuch/oauth_setting_inspector.gd")
|
|
const TokenInspector = preload("res://addons/twitcher/lib/oOuch/oauth_token_inspector.gd")
|
|
|
|
# Twitcher imports
|
|
const TwitchScopeInspectorPlugin = preload("res://addons/twitcher/editor/inspector/twitch_scope_inspector.gd")
|
|
const TwitchEventsubInspectorPlugin = preload("res://addons/twitcher/editor/inspector/twitch_eventsub_inspector.gd")
|
|
const TwitchEventsubConfigInspectorPlugin = preload("res://addons/twitcher/editor/inspector/twitch_eventsub_config_inspector.gd")
|
|
const TwitchMediaLoaderInspector = preload("res://addons/twitcher/editor/inspector/twitch_media_loader_inspector.gd")
|
|
const TwitchEditorSettings = preload("res://addons/twitcher/editor/twitch_editor_settings.gd")
|
|
const TwitchUserInspector = preload("res://addons/twitcher/editor/inspector/twitch_user_inspector.gd")
|
|
|
|
var generator: TwitchAPIGenerator
|
|
var parser: TwitchAPIParser
|
|
|
|
var gif_importer_imagemagick: GifImporterImagemagick = GifImporterImagemagick.new()
|
|
var gif_importer_native: GifImporterNative = GifImporterNative.new()
|
|
var eventsub_config_inspector: TwitchEventsubConfigInspectorPlugin = TwitchEventsubConfigInspectorPlugin.new()
|
|
var eventsub_inspector: TwitchEventsubInspectorPlugin = TwitchEventsubInspectorPlugin.new()
|
|
var scope_inspector: TwitchScopeInspectorPlugin = TwitchScopeInspectorPlugin.new()
|
|
var oauth_setting_inspector: OauthSettingInspector = OauthSettingInspector.new()
|
|
var token_inspector: TokenInspector = TokenInspector.new()
|
|
var media_loader_inspector: TwitchMediaLoaderInspector = TwitchMediaLoaderInspector.new()
|
|
var user_inspector: TwitchUserInspector = TwitchUserInspector.new()
|
|
var settings: TwitchEditorSettings = TwitchEditorSettings.new()
|
|
var current_setup_window: Node
|
|
|
|
func _enter_tree():
|
|
_log.i("Start Twitcher loading...")
|
|
TwitchEditorSettings.setup()
|
|
|
|
token_inspector.token_info_scene = preload("res://addons/twitcher/editor/inspector/twitch_token_info.tscn")
|
|
|
|
add_tool_menu_item(REGENERATE_API_LABEL, generate_api)
|
|
add_tool_menu_item(OPEN_SETUP_LABEL, open_setup)
|
|
|
|
add_inspector_plugin(eventsub_config_inspector)
|
|
add_inspector_plugin(eventsub_inspector)
|
|
add_inspector_plugin(scope_inspector)
|
|
add_inspector_plugin(oauth_setting_inspector)
|
|
add_inspector_plugin(token_inspector)
|
|
add_inspector_plugin(media_loader_inspector)
|
|
add_inspector_plugin(user_inspector)
|
|
add_import_plugin(gif_importer_native)
|
|
if is_magick_available():
|
|
add_import_plugin(gif_importer_imagemagick)
|
|
|
|
if TwitchEditorSettings.show_setup_on_startup: open_setup()
|
|
_log.i("Twitcher loading ended")
|
|
|
|
|
|
func _exit_tree():
|
|
remove_import_plugin(gif_importer_native)
|
|
if is_magick_available():
|
|
remove_import_plugin(gif_importer_imagemagick)
|
|
|
|
remove_inspector_plugin(eventsub_config_inspector)
|
|
remove_inspector_plugin(eventsub_inspector)
|
|
remove_inspector_plugin(scope_inspector)
|
|
remove_inspector_plugin(oauth_setting_inspector)
|
|
remove_inspector_plugin(token_inspector)
|
|
remove_inspector_plugin(media_loader_inspector)
|
|
remove_inspector_plugin(user_inspector)
|
|
if Engine.is_editor_hint():
|
|
remove_tool_menu_item(REGENERATE_API_LABEL)
|
|
|
|
_log.i("Twitcher Unloaded")
|
|
|
|
|
|
func open_setup() -> void:
|
|
if is_instance_valid(current_setup_window): return
|
|
|
|
current_setup_window = load("res://addons/twitcher/editor/setup/setup.tscn").instantiate()
|
|
add_child(current_setup_window)
|
|
|
|
|
|
func generate_api() -> void:
|
|
generator = TwitchAPIGenerator.new()
|
|
parser = TwitchAPIParser.new()
|
|
generator.parser = parser
|
|
add_child(generator)
|
|
add_child(parser)
|
|
await parser.parse_api()
|
|
generator.generate_api()
|
|
remove_child(generator)
|
|
remove_child(parser)
|
|
|
|
func is_magick_available() -> bool:
|
|
var transformer = MagicImageTransformer.new()
|
|
return transformer.is_supported()
|