## 新增需求 ### 需求:提供蓄力核心组件 系统必须提供一个 `chargeOrbGatherComponent`,用于在 TresJS canvas 中显示蓄力阶段的核心光球与向中心汇聚粒子。 #### 场景:默认预览模式下自动显示蓄力节奏 - **当** 用户以默认参数预览该组件 - **则** 组件必须在不依赖键盘输入的前提下自动循环显示 charge progress 带来的球体变大与粒子汇聚效果 #### 场景:业务模式下外部驱动蓄力进度 - **当** 外部将 `autoAnimate` 关闭并传入 `chargeProgress` - **则** 组件必须按传入的 0 到 1 进度更新球体大小、强度与粒子目标数量 ### 需求:提供释放圆环组件 系统必须提供一个 `chargedBlastRingsComponent`,用于显示释放后的两道扩散圆环光,并允许其沿指定方向前进。 #### 场景:默认预览模式下自动循环发射圆环 - **当** 用户以默认参数预览该组件 - **则** 组件必须自动循环生成一组沿发射方向前进的扩散圆环 #### 场景:业务模式下外部触发一次释放 - **当** 外部将 `autoPlay` 关闭并改变 `burstToken` - **则** 组件必须从当前位置生成一组新的扩散圆环,并按 `fireDirectionX/Y/Z` 与 `fireSpeed` 前进 ### 需求:提供释放炮弹组件 系统必须提供一个 `chargedBlastProjectileComponent`,用于显示释放后的炮弹主体与尾迹,并允许其沿指定方向前进。 #### 场景:默认预览模式下自动循环发射炮弹 - **当** 用户以默认参数预览该组件 - **则** 组件必须自动循环生成带尾迹的炮弹,并持续前进直到到达最大距离后重置 #### 场景:业务模式下外部触发一次炮弹发射 - **当** 外部将 `autoPlay` 关闭并改变 `shotToken` - **则** 组件必须生成一个新的炮弹实例,并按 `fireDirectionX/Y/Z` 与 `fireSpeed` 进行运动 #### 场景:配置面板手动触发一次炮弹发射 - **当** 用户在组件服务的配置面板点击“发射一次” - **则** `chargedBlastProjectileComponent` 必须立即触发一次新的炮弹发射,而不依赖等待自动循环 ### 需求:排除无关的 ready 与角色包装效果 三组件方案必须只覆盖用户指定的特效主体,不能把原项目中已排除的包装层继续迁入。 #### 场景:接入组件服务时不包含多余效果 - **当** 用户加载这三个组件 - **则** 不应出现人物模型、人物闪烁、ready sphere、上升圆环、ready 飘散粒子、后期处理或普通射击效果 ### 需求:提供释放组合组件 系统必须提供一个 `chargedBlastReleaseComponent`,将释放圆环与炮弹按参考项目的关系协同在一起,并提供更精简的统一参数集。 #### 场景:默认预览模式下协同发射 - **当** 用户以默认参数预览该组件 - **则** 组件必须同时触发释放圆环与炮弹,使两部分看起来来自同一次释放动作 #### 场景:外部触发一次组合释放 - **当** 外部将 `autoPlay` 关闭并改变 `shotToken` - **则** 组件必须用同一个触发源同时驱动圆环与炮弹,而不是让两者各自独立循环 #### 场景:配置面板手动触发一次组合释放 - **当** 用户在组件服务的配置面板点击“发射一次” - **则** `chargedBlastReleaseComponent` 必须立即触发一次新的组合释放,并保持圆环和炮弹同步 ### 需求:通过 dcsConfig 暴露默认值和参数面板 三个组件必须通过 `src/dcsConfig.ts` 完成注册,并对外暴露默认值与配置面板。 #### 场景:组件服务枚举组件时可见 - **当** 动态组件服务读取 `src/dcsConfig.ts` - **则** 必须能够发现这三个新组件并读取它们的默认值和参数 schema