62 lines
1.3 KiB
TypeScript
62 lines
1.3 KiB
TypeScript
|
|
import { Component, ECSComponent, Serializable, Serialize } from '@esengine/ecs-framework';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 资产元数据组件
|
|||
|
|
*
|
|||
|
|
* 附加到从资产实例化的行为树根节点上,
|
|||
|
|
* 用于标记资产ID和版本信息,便于循环引用检测和调试。
|
|||
|
|
*
|
|||
|
|
* @example
|
|||
|
|
* ```typescript
|
|||
|
|
* const rootEntity = BehaviorTreeAssetLoader.instantiate(asset, scene);
|
|||
|
|
*
|
|||
|
|
* // 添加元数据
|
|||
|
|
* const metadata = rootEntity.addComponent(new BehaviorTreeAssetMetadata());
|
|||
|
|
* metadata.assetId = 'patrol';
|
|||
|
|
* metadata.assetVersion = '1.0.0';
|
|||
|
|
* ```
|
|||
|
|
*/
|
|||
|
|
@ECSComponent('BehaviorTreeAssetMetadata')
|
|||
|
|
@Serializable({ version: 1 })
|
|||
|
|
export class BehaviorTreeAssetMetadata extends Component {
|
|||
|
|
/**
|
|||
|
|
* 资产ID
|
|||
|
|
*/
|
|||
|
|
@Serialize()
|
|||
|
|
assetId: string = '';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 资产版本
|
|||
|
|
*/
|
|||
|
|
@Serialize()
|
|||
|
|
assetVersion: string = '';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 资产名称
|
|||
|
|
*/
|
|||
|
|
@Serialize()
|
|||
|
|
assetName: string = '';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 加载时间
|
|||
|
|
*/
|
|||
|
|
@Serialize()
|
|||
|
|
loadedAt: number = 0;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 资产描述
|
|||
|
|
*/
|
|||
|
|
@Serialize()
|
|||
|
|
description: string = '';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 初始化
|
|||
|
|
*/
|
|||
|
|
initialize(assetId: string, assetVersion: string, assetName?: string): void {
|
|||
|
|
this.assetId = assetId;
|
|||
|
|
this.assetVersion = assetVersion;
|
|||
|
|
this.assetName = assetName || assetId;
|
|||
|
|
this.loadedAt = Date.now();
|
|||
|
|
}
|
|||
|
|
}
|