Files
esengine/packages/editor-app/src/app/managers/PluginInstaller.ts
YHH 107439d70c Feature/runtime cdn and plugin loader (#240)
* feat(ui): 完善 UI 布局系统和编辑器可视化工具

* refactor: 移除 ModuleRegistry,统一使用 PluginManager 插件系统

* fix: 修复 CodeQL 警告并提升测试覆盖率

* refactor: 分离运行时入口点,解决 runtime bundle 包含 React 的问题

* fix(ci): 添加 editor-core 和 editor-runtime 到 CI 依赖构建步骤

* docs: 完善 ServiceContainer 文档,新增 Symbol.for 模式和 @InjectProperty 说明

* fix(ci): 修复 type-check 失败问题

* fix(ci): 修复类型检查失败问题

* fix(ci): 修复类型检查失败问题

* fix(ci): behavior-tree 构建添加 @tauri-apps 外部依赖

* fix(ci): behavior-tree 添加 @tauri-apps/plugin-fs 类型依赖

* fix(ci): platform-web 添加缺失的 behavior-tree 依赖

* fix(lint): 移除正则表达式中不必要的转义字符
2025-11-27 20:42:46 +08:00

70 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 插件安装器
* Plugin Installer
*/
import type { PluginManager } from '@esengine/editor-core';
// 内置插件
import { GizmoPlugin } from '../../plugins/builtin/GizmoPlugin';
import { SceneInspectorPlugin } from '../../plugins/builtin/SceneInspectorPlugin';
import { ProfilerPlugin } from '../../plugins/builtin/ProfilerPlugin';
import { EditorAppearancePlugin } from '../../plugins/builtin/EditorAppearancePlugin';
import { PluginConfigPlugin } from '../../plugins/builtin/PluginConfigPlugin';
import { ProjectSettingsPlugin } from '../../plugins/builtin/ProjectSettingsPlugin';
// 统一模块插件CSS 已内联到 JS 中,导入时自动注入)
import { TilemapPlugin } from '@esengine/tilemap';
import { UIPlugin } from '@esengine/ui';
import { BehaviorTreePlugin } from '@esengine/behavior-tree';
export class PluginInstaller {
/**
* 安装所有内置插件
*/
async installBuiltinPlugins(pluginManager: PluginManager): Promise<void> {
// 内置编辑器插件
const builtinPlugins = [
{ name: 'GizmoPlugin', plugin: GizmoPlugin },
{ name: 'SceneInspectorPlugin', plugin: SceneInspectorPlugin },
{ name: 'ProfilerPlugin', plugin: ProfilerPlugin },
{ name: 'EditorAppearancePlugin', plugin: EditorAppearancePlugin },
{ name: 'PluginConfigPlugin', plugin: PluginConfigPlugin },
{ name: 'ProjectSettingsPlugin', plugin: ProjectSettingsPlugin },
];
for (const { name, plugin } of builtinPlugins) {
if (!plugin || !plugin.descriptor) {
console.error(`[PluginInstaller] ${name} is invalid: missing descriptor`, plugin);
continue;
}
try {
pluginManager.register(plugin);
} catch (error) {
console.error(`[PluginInstaller] Failed to register ${name}:`, error);
}
}
// 统一模块插件runtime + editor
const modulePlugins = [
{ name: 'TilemapPlugin', plugin: TilemapPlugin },
{ name: 'UIPlugin', plugin: UIPlugin },
{ name: 'BehaviorTreePlugin', plugin: BehaviorTreePlugin },
];
for (const { name, plugin } of modulePlugins) {
if (!plugin || !plugin.descriptor) {
console.error(`[PluginInstaller] ${name} is invalid: missing descriptor`, plugin);
continue;
}
try {
pluginManager.register(plugin);
} catch (error) {
console.error(`[PluginInstaller] Failed to register ${name}:`, error);
}
}
// All builtin plugins registered
}
}