cirnogodot/addons/gdai-mcp-plugin-godot/gdai_mcp_plugin.gd
2026-01-31 08:32:10 +01:00

63 lines
1.9 KiB
GDScript

# Copyright 2025-present Delano Lourenco
# License: See LICENSE.md
# Website: https://gdaimcp.com
@tool
extends EditorPlugin
func _enable_plugin() -> void:
if Engine.is_editor_hint():
add_autoload_singleton("GDAIMCPRuntime", "res://addons/gdai-mcp-plugin-godot/gdai_mcp_runtime.gd")
func _disable_plugin() -> void:
if Engine.is_editor_hint():
remove_autoload_singleton("GDAIMCPRuntime")
func _enter_tree():
var os = OS.get_name().to_lower()
var arch = Engine.get_architecture_name().to_lower()
const ALLOWED_OS = ["macos", "windows", "linux"]
if os not in ALLOWED_OS:
_print_err("GDAI MCP plugin does not support this Operating System (%s)!" % os)
return
const ALLOWED_ARCH = ["arm64", "x86_64"]
if arch not in ALLOWED_ARCH:
_print_err("GDAI MCP plugin does not support this CPU architecture (%s)!" % arch)
return
var shared_lib_path = _get_shared_lib_path(os, arch)
if not FileAccess.file_exists(shared_lib_path) and not _is_debug():
_print_err("Binary files for GDAI MCP plugin are missing, so the plugin wont be loaded. Please re-install the plugin from [url=https://gdaimcp.com]https://gdaimcp.com[/url] or disable the plugin in Project Settings.")
return
func _get_shared_lib_path(p_os, p_arch):
const BIN_PATH = "res://addons/gdai-mcp-plugin-godot/bin"
var shared_lib_path = "%s/%s/libgdai-mcp-plugin-godot.%s.template_release.%s.%s" % [BIN_PATH, p_os, p_os, _get_suffix(p_os, p_arch), _get_ext(p_os)]
return shared_lib_path.replace(".universal", "")
func _get_suffix(p_os, p_arch):
if p_os == "macos":
return "universal"
return p_arch
func _get_ext(p_os: String):
if p_os == "macos":
return "dylib"
if p_os == "linux":
return "so"
return "dll"
func _is_debug() -> bool:
return DirAccess.dir_exists_absolute(ProjectSettings.globalize_path("res://addons/gdai-mcp-testsuite"))
func _print_err(p_bbcode: String):
print_rich("[color=TOMATO][b]GDAIMCP::ERROR::[/b] " + p_bbcode + "[/color]")