@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()