Files
Brachistochrone/addons/cgheven/cgheven_plugin.gd
T
scorpion21211-cmd e24bbbda5d Initial commit
2026-10-03 23:29:41 -04:00

67 lines
1.7 KiB
GDScript

@tool
extends EditorPlugin
## CGHEVEN Asset Library — Godot editor plugin entry point.
## Adds an After-Effects-styled dock that browses/downloads/imports CGHEVEN
## assets from api.cgheven.com, reusing the existing backend and gating.
var _dock: CghMainDock
var _api: CghApiClient
var _auth: CghAuth
var _downloader: CghDownloader
var _analytics: CghAnalytics
var _updater: CghUpdater
var _theme: Theme
var _heartbeat: Timer
func _enter_tree() -> void:
_theme = CghTheme.build()
# core services (must be in the editor tree for HTTPRequest to work)
_api = CghApiClient.new()
_auth = CghAuth.new()
_downloader = CghDownloader.new()
_analytics = CghAnalytics.new()
_updater = CghUpdater.new()
_dock = CghMainDock.new()
_dock.name = "CGHEVEN"
_dock.theme = _theme
_dock.api = _api
_dock.auth = _auth
_dock.downloader = _downloader
_dock.analytics = _analytics
_dock.updater = _updater
# services live under the dock so they are inside the tree
_dock.add_child(_api)
_dock.add_child(_auth)
_dock.add_child(_downloader)
_dock.add_child(_analytics)
_dock.add_child(_updater)
add_control_to_dock(DOCK_SLOT_RIGHT_UL, _dock)
# defer boot one frame so all children are ready
_dock.call_deferred("boot")
# heartbeat: live plan refresh (Free -> Pro without re-login)
_heartbeat = Timer.new()
_heartbeat.wait_time = 120.0
_heartbeat.autostart = true
_heartbeat.timeout.connect(func():
if _auth and _auth.is_logged_in():
_auth.heartbeat())
_dock.add_child(_heartbeat)
func _exit_tree() -> void:
if _dock:
remove_control_from_docks(_dock)
_dock.queue_free()
_dock = null
func _has_main_screen() -> bool:
return false
func _get_plugin_name() -> String:
return "CGHEVEN Asset Library"