Feature/ecs behavior tree (#188)

* feat(behavior-tree): 完全 ECS 化的行为树系统

* feat(editor-app): 添加行为树可视化编辑器

* chore: 移除 Cocos Creator 扩展目录

* feat(editor-app): 行为树编辑器功能增强

* fix(editor-app): 修复 TypeScript 类型错误

* feat(editor-app): 使用 FlexLayout 重构面板系统并优化资产浏览器

* feat(editor-app): 改进编辑器UI样式并修复行为树执行顺序

* feat(behavior-tree,editor-app): 添加装饰器系统并优化编辑器性能

* feat(behavior-tree,editor-app): 添加属性绑定系统

* feat(editor-app,behavior-tree): 优化编辑器UI并改进行为树功能

* feat(editor-app,behavior-tree): 添加全局黑板系统并增强资产浏览器功能

* feat(behavior-tree,editor-app): 添加运行时资产导出系统

* feat(behavior-tree,editor-app): 添加SubTree系统和资产选择器

* feat(behavior-tree,editor-app): 优化系统架构并改进编辑器文件管理

* fix(behavior-tree,editor-app): 修复SubTree节点错误显示空节点警告

* fix(editor-app): 修复局部黑板类型定义文件扩展名错误
This commit is contained in:
YHH
2025-10-27 09:29:11 +08:00
committed by GitHub
parent 0cd99209c4
commit 009f8af4e1
234 changed files with 21824 additions and 15295 deletions

View File

@@ -0,0 +1,44 @@
import { Component, ECSComponent } from '@esengine/ecs-framework';
import { Serializable, Serialize, IgnoreSerialization } from '@esengine/ecs-framework';
import { TaskStatus, NodeType } from '../Types/TaskStatus';
/**
* 行为树节点基础组件
*
* 所有行为树节点都必须包含此组件
*/
@ECSComponent('BehaviorTreeNode')
@Serializable({ version: 1 })
export class BehaviorTreeNode extends Component {
/** 节点类型 */
@Serialize()
nodeType: NodeType = NodeType.Action;
/** 节点名称(用于调试) */
@Serialize()
nodeName: string = 'Node';
/** 当前执行状态 */
@IgnoreSerialization()
status: TaskStatus = TaskStatus.Invalid;
/** 当前执行的子节点索引(用于复合节点) */
@IgnoreSerialization()
currentChildIndex: number = 0;
/**
* 重置节点状态
*/
reset(): void {
this.status = TaskStatus.Invalid;
this.currentChildIndex = 0;
}
/**
* 标记节点为失效(递归重置子节点)
* 注意:此方法只重置当前节点,子节点需要在 System 中处理
*/
invalidate(): void {
this.reset();
}
}