spec.md 4.4 KB

新增需求

需求:在 TresJS canvas 管线中渲染球形能量盾

系统必须提供一个 superEnergyShieldComponent,能够在当前仓库的 Vue 3 + TresJS canvas 渲染链路中显示一个可见的球形能量盾外壳。

场景:使用默认参数渲染护盾

  • 当 组件以默认参数渲染时
  • 则 必须显示一个可见、非零尺寸的球形护盾外壳,且不依赖任何外部场景辅助器或后期处理配置

场景:由宿主场景在外部调整护盾整体大小

  • 当 宿主场景或后续编辑器通过外部 Object3D 缩放调整护盾整体大小时
  • 则 组件不需要新增独立 radius 参数,护盾效果仍应沿用固定基准球体 + shader 的实现方式正常工作

需求:组件只暴露护盾自身参数

组件必须只暴露护盾自身配置项,不能把 transform 字段、外部场景控制项或后期处理设置作为组件自身契约的一部分。

场景:在配置面板中调整护盾外观

  • 当 用户打开组件配置面板时
  • 则 面板必须至少暴露基础颜色、透明度、六边形纹理、菲涅耳表现、动态流动、噪声边缘和冲击波相关参数

场景:组件 schema 中不包含 transform 控制

  • 当 组件在 src/dcsConfig.ts 中注册时
  • 则 其组件级配置 schema 不能新增 radius,也不能新增 position、rotation、scale 一类 transform 控件

场景:非法参数具备安全兜底

  • 当 开发者传入透明度或其他护盾参数的非法值或极端值时
  • 则 组件必须进行边界收敛或回退到安全默认值,并保持稳定渲染

需求:复现迁移后的 ForceShield 核心表面行为

组件必须保留从 ForceShield 核心迁移而来的关键护盾表面表现,包括六边形纹理、菲涅耳边缘响应、动态破碎感和表面流动效果。

场景:开关六边形纹理

  • 当 开发者切换 showHex 时
  • 则 护盾必须在不重新挂载组件的前提下开启或关闭六边形纹理显示

场景:调整动态流动表现

  • 当 开发者修改闪烁或流动相关参数时
  • 则 护盾表面动画必须原位连续更新,而不是依赖组件重建

场景:调整噪声边缘响应

  • 当 开发者修改噪声边缘相关参数时
  • 则 护盾的破碎边缘颜色和强度必须通过 shader 驱动的方式在 canvas 中产生对应变化

需求:支持可选命中冲击波,且不阻塞后续编辑器点选

组件必须保留命中冲击波视觉效果,但该能力不能强依赖组件内部强制指针捕获,从而保证未来编辑器场景级拾取仍可复用同一个护盾 mesh。

场景:默认模式下不启用组件自点击捕获

  • 当 组件以默认交互配置渲染时
  • 则 护盾本体必须能够正常显示,且不要求组件内部 click 处理器处于开启状态

场景:启用可选自点击命中模式

  • 当 预览或 demo 场景显式启用自点击命中模式,并点击护盾 mesh 时
  • 则 组件必须基于护盾表面的本地命中点生成一次命中冲击波

场景:保留编辑器事件接管路径

  • 当 未启用自点击命中模式时
  • 则 组件不能把内部事件捕获视为护盾正常工作的必要条件,从而保证后续场景级编辑器点选逻辑仍然可行

需求:护盾 shader 源码按组件目录拆分存放

护盾 shader 源码必须存放在 src/shader/superEnergyShieldComponent/ 目录下,并拆分为顶点和片元文件。

场景:组织 shader 文件

  • 当 组件引入自定义 shader 逻辑时
  • 则 shader 源码必须从组件专属的顶点文件和片元文件中加载,而不是内联写在 Vue 组件中

需求:通过服务配置完成组件注册和调参接入

组件必须通过 src/dcsConfig.ts 完成注册、默认值和配置面板接入,除非确认存在公共基础设施问题,否则不能修改通用预览视图文件。

场景:组件通过注册表被加载

  • 当 动态组件服务加载组件列表时
  • 则 超级能量盾组件必须能够通过 src/dcsConfig.ts 出现在组件列表中

场景:保持通用预览视图不变

  • 当 组件接入当前服务时
  • 则 src/views/previewEntry.vue 和 src/views/templateComponet.vue 必须保持不变,除非后续确认存在真实的共享基础设施问题