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