Files
XCEngine/docs/api/XCEngine/Core/Layer/Layer.md

2.7 KiB
Raw Blame History

Layer

命名空间: XCEngine::Core

类型: class

头文件: XCEngine/Core/Layer.h

描述: 一个轻量 Layer 基类,定义 attach、detach、update、event 和 ImGui 渲染钩子。

角色概述

Layer 代表一种经典应用框架式组织单元。它和 Unity 的 MonoBehaviour 或场景组件不是一回事,更像是:

  • 应用层 / 编辑器层 / overlay 层的逻辑片段
  • LayerStack 排序和驱动

这种模式在编辑器、工具程序和引擎壳层中很常见,因为它把“功能模块的生命周期”和“场景对象组件系统”分离开了。

当前实现行为

1. 这是一个纯虚拟钩子基类

除构造、析构和 getName() 外,所有行为方法都是默认 no-op

  • onAttach()
  • onDetach()
  • onUpdate(float dt)
  • onEvent(void* event)
  • onImGuiRender()

这说明它本质上是一个扩展接口,而不是自带逻辑的运行时类型。

2. 事件接口当前是弱类型

onEvent(void* event) 只接收 void*。这意味着:

  • 当前 Layer 系统没有自己的强类型事件层
  • 使用者需要自己知道传入的 event 指针语义

和现代商业引擎里更强类型的事件包装相比,这是一种更轻但也更脆弱的做法。

3. 命名风格有历史痕迹

这些接口使用的是 lowerCamelCase

  • onAttach
  • onDetach
  • onUpdate

而项目里很多别的模块更偏 PascalCase 风格。这通常意味着它来自更偏应用框架/编辑器壳层的一套约定,而不是当前全局统一风格的代表。

当前代码库中的使用情况

在当前取证范围内,没有看到 Layer / LayerStackengine/src 里形成大规模实际调用链。也就是说:

  • API 形状已经明确
  • 但它目前更像基础框架预留能力,而不是已广泛深入主运行时的核心机制

线程语义

  • 当前基类不提供线程安全保证。
  • 所有钩子的典型使用方式都应视为由外部主循环串行驱动。

当前实现限制

  • onEvent(void*) 是弱类型接口。
  • 基类不提供 enabled/disabled、priority 或 attach state 管理。
  • 没有看到直接测试覆盖。

相关方法

相关指南

相关文档