pokepurple/addons/twitcher/plugin.gd
Mario Steele c11a4ebbc2 Initial Commit
Initial commit of Code Base.
2025-06-12 14:31:14 -05:00

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