Appearance
环境菜单层级系统
系统概览
环境菜单层级系统(Schema 驱动)。环境弹窗的各级面板(云、雾、地面、天空、水面、风力等), 每个面板为独立的 PopupLevel,由 MenuNode[] schema 定义 UI 控件,通过 bind 属性数据绑定到 envState。 env-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.ts的renderMenu函数。 - 菜单引擎:
menu.ts的SlideMenu。 - 环境实现:
../scene/env/env-impl.ts。 - Schema 类型:
menu-schema.ts的MenuNode。
不变量
- Schema 驱动 UI:所有控件定义在
MenuNode[]中,不硬编码 DOM。 bind属性指向envState路径,实现双向数据绑定。- 菜单实例注册表在
env-menu.ts初始化时注册。