新增需求
需求:在 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 必须保持不变,除非后续确认存在真实的共享基础设施问题