Skip to content

环境菜单层级系统

系统概览

环境菜单层级系统(Schema 驱动)。环境弹窗的各级面板(云、雾、地面、天空、水面、风力等), 每个面板为独立的 PopupLevel,由 MenuNode[] schema 定义 UI 控件,通过 bind 属性数据绑定到 envStateenv-level-helpers.ts 提供通用构建函数,env-menu-state.ts 维护菜单实例注册表。

核心职责

  • env-level-helpers.ts — 通用层级构建函数 _buildLevel
  • env-menu-state.ts — 菜单状态(EnvTextureBindingTarget)+ 菜单实例注册表。
  • env-*-levels.ts — 各环境子系统的菜单 schema 定义。

对外 API(节选)

  • interface PopupLevel — 弹窗层级描述(title、schema、actions)。
  • buildLevel(title, schemaFactory) — 构建环境层级。
  • getEnvMenu() / setEnvMenu(menu) — 取/设环境菜单实例。
  • getEnvTextureBindingTarget() / setEnvTextureBindingTarget(target) / clearEnvTextureBindingTarget() — 贴图绑定目标。

与其他子系统关系

  • 数据绑定:envState(各种环境参数)。
  • 渲染:render-menu.tsrenderMenu 函数。
  • 菜单引擎:menu.tsSlideMenu
  • 环境实现:../scene/env/env-impl.ts
  • Schema 类型:menu-schema.tsMenuNode

不变量

  • Schema 驱动 UI:所有控件定义在 MenuNode[] 中,不硬编码 DOM。
  • bind 属性指向 envState 路径,实现双向数据绑定。
  • 菜单实例注册表在 env-menu.ts 初始化时注册。