Files
esengine/packages/editor-app/src/plugins/builtin/AssetMetaPlugin.ts
yhh 240b165970 chore: 更新仓库 URL (ecs-framework → esengine)
仓库已从 esengine/ecs-framework 重命名为 esengine/esengine
更新所有引用旧 URL 的文件
2025-12-08 21:23:37 +08:00

72 lines
2.2 KiB
TypeScript

/**
* Asset Meta Plugin
* 资产元数据插件
*
* Handles .meta file generation for project assets.
* 处理项目资产的 .meta 文件生成。
*/
import type { ServiceContainer } from '@esengine/esengine';
import { createLogger } from '@esengine/esengine';
import type { IPlugin, IEditorModuleLoader, ModuleManifest } from '@esengine/editor-core';
import { AssetRegistryService } from '@esengine/editor-core';
const logger = createLogger('AssetMetaPlugin');
/**
* Asset Meta Editor Module
* 资产元数据编辑器模块
*/
class AssetMetaEditorModule implements IEditorModuleLoader {
private _assetRegistry: AssetRegistryService | null = null;
async install(services: ServiceContainer): Promise<void> {
// 创建 AssetRegistryService 并初始化
// Create AssetRegistryService and initialize
this._assetRegistry = new AssetRegistryService();
// 注册到服务容器,以便其他地方可以访问
// Register to service container so other places can access it
services.registerInstance(AssetRegistryService, this._assetRegistry);
// 初始化服务(订阅 project:opened 事件)
// Initialize service (subscribes to project:opened event)
await this._assetRegistry.initialize();
logger.info('AssetRegistryService initialized and registered');
}
async uninstall(): Promise<void> {
if (this._assetRegistry) {
this._assetRegistry.unloadProject();
this._assetRegistry = null;
}
logger.info('Uninstalled');
}
async onEditorReady(): Promise<void> {
logger.info('Editor is ready');
}
}
const manifest: ModuleManifest = {
id: '@esengine/asset-meta',
name: '@esengine/asset-meta',
displayName: 'Asset Meta',
version: '1.0.0',
description: 'Generates .meta files for project assets | 为项目资产生成 .meta 文件',
category: 'Other',
icon: 'FileJson',
isCore: true,
defaultEnabled: true,
isEngineModule: false, // 不是引擎模块,不会被打包到 runtime
canContainContent: false,
dependencies: [],
exports: {}
};
export const AssetMetaPlugin: IPlugin = {
manifest,
editorModule: new AssetMetaEditorModule()
};