Files
XCEngine/docs/api/XCEngine/Editor/Commands/ComponentCommands/ComponentCommands.md

1.8 KiB
Raw Blame History

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 应该做的事。

当前限制

  • 组件依赖关系仍然很弱,没有自动补齐必需组件的机制
  • 删除组件时没有跨组件引用检查
  • 当前命令标签主要由组件显示名拼接,不支持更丰富的操作上下文

相关文档