Dream/Godot/GodotImportLab/EditorImportPlugin.cs

89 lines
2.6 KiB
C#

using Godot;
using System;
/// <summary>
/// 简化的编辑器入口点
/// 直接在 Godot 编辑器工具栏添加按钮
/// </summary>
[Tool]
public partial class EditorImportPlugin : EditorPlugin
{
private Button _importButton;
private CrossEngineMigration.Godot.Editor.ImportWindow _importWindow;
public override void _EnterTree()
{
base._EnterTree();
GD.Print("[EditorImportPlugin] 初始化...");
// 创建工具栏按钮
_importButton = new Button();
_importButton.Text = "导入Unity场景";
_importButton.TooltipText = "导入Unity导出的.cebundle文件";
_importButton.Pressed += OnImportButtonPressed;
AddControlToContainer(CustomControlContainer.Toolbar, _importButton);
GD.Print("[EditorImportPlugin] 工具栏按钮已添加");
}
public override void _ExitTree()
{
base._ExitTree();
GD.Print("[EditorImportPlugin] 清理...");
// 移除工具栏按钮
if (_importButton != null)
{
RemoveControlFromContainer(CustomControlContainer.Toolbar, _importButton);
_importButton.QueueFree();
_importButton = null;
}
// 移除导入窗口
if (_importWindow != null)
{
RemoveControlFromBottomPanel(_importWindow);
_importWindow.QueueFree();
_importWindow = null;
}
GD.Print("[EditorImportPlugin] 清理完成");
}
private void OnImportButtonPressed()
{
GD.Print("[EditorImportPlugin] 导入按钮被点击");
// 创建或显示导入窗口
if (_importWindow == null)
{
_importWindow = new CrossEngineMigration.Godot.Editor.ImportWindow();
_importWindow.Name = "Unity场景导入器";
// 添加到底部面板
AddControlToBottomPanel(_importWindow, "Unity导入");
GD.Print("[EditorImportPlugin] 导入窗口已创建");
}
// 显示导入窗口
MakeBottomPanelItemVisible(_importWindow);
// 刷新窗口内容
_importWindow.Refresh();
}
/// <summary>
/// 快速导入场景(可以从其他脚本调用)
/// </summary>
public Node QuickImportScene(string filePath)
{
GD.Print($"[EditorImportPlugin] 快速导入:{filePath}");
// 使用现有的导入系统
return CrossEngineMigration.Godot.SceneImporter.ImportFromFile(filePath);
}
}