Appearance
环境碰撞控制
系统概览
Env Collision:从 env-gravity.ts 拆出的碰撞开关模块(ADR-212 命名 vs 功能审计)。控制 WASM Bullet 物理引擎的碰撞总开关、身体碰撞、地面碰撞三种独立开关。
核心职责
env-collision.ts— 碰撞总开关、身体碰撞开关、地面碰撞开关的 getter/setter,通过setEnvState单向写入状态。
对外 API(节选)
setCollisionEnabled(v: boolean)— 碰撞总开关getCollisionEnabled(): boolean— 读取碰撞总开关setBodyCollisionEnabled(v: boolean)— 身体碰撞开关getBodyCollisionEnabled(): boolean— 读取身体碰撞开关setGroundCollisionEnabled(v: boolean)— 地面碰撞开关(变化时调用applyGroundCollision())getGroundCollisionEnabled(): boolean— 读取地面碰撞开关
与其他子系统关系
- 依赖
env-bridge.setEnvState写入 EnvState - 依赖
physics/ground-collision.applyGroundCollision即时生效地面碰撞 - 被
scene.ts门面 re-export - 被
menus/scene-physics-levels.ts消费(UI 层级)
不变量
- 碰撞开关仅 WASM 路径生效,JS 版无物理引擎
- 每个 setter 后触发
triggerAutoSave()(持久化) setGroundCollisionEnabled在值变化时额外调用applyGroundCollision()即时生效
验证入口
- 命令:
cd frontend && npm run test