1.8 KiB
1.8 KiB
ComponentCommands
命名空间: XCEngine::Editor::Commands
类型: header-helper
源文件: editor/src/Commands/ComponentCommands.h
描述: 封装组件添加与移除命令,并把这些操作统一纳入场景撤销系统。
概述
ComponentCommands 处理的是 Inspector 中最典型的一类结构性编辑操作:
- 给实体添加某种组件
- 从实体移除某个组件
它并不直接知道 Camera、Light、Transform 的具体字段,而是通过 IComponentEditor 提供的能力判断:
- 某个组件能否添加到该实体
- 某个组件能否被移除
当前实现
AddComponent会通过editor.AddTo(gameObject)完成真实创建RemoveComponent会调用gameObject->RemoveComponent(component)- 两类操作都会使用
UndoUtils::ExecuteSceneCommand包装 - 操作成功后会显式调用
SceneManager::MarkSceneDirty()
设计说明
这层命令抽象的意义,是把组件编辑器从“直接改场景结构”里解耦出来。
组件编辑器更适合回答“这个组件怎么画 UI、能不能加、能不能删”,而不适合自己关心:
- 如何录制撤销
- 如何标记场景 dirty
- 如何统一命令标签
这正是 ComponentCommands 应该做的事。
当前限制
- 组件依赖关系仍然很弱,没有自动补齐必需组件的机制
- 删除组件时没有跨组件引用检查
- 当前命令标签主要由组件显示名拼接,不支持更丰富的操作上下文