# 仿真器实体与事件映射

## 实体总览

| 实体 | 类 | 生命周期 | 主要属性 |
|------|------|------|------|
| 无人机 | `DroneEntity` | 仿真全程 | Pos, Hp, Status, Route, ExposureTime |
| 发射平台 | `PlatformEntity` | 仿真全程 | Pos, PlatformType, State（Idle/FlyingToTarget/ReadyToRelease）, AerosolType, MunitionCount, Cooldown, CruiseSpeed, MuzzleVelocity, CurrentVelocity |
| 飞行弹药 | `MunitionEntity` | 发射→到达释放高度 | Pos, LaunchMode（AirDrop/GroundArtillery）, Target, HasArrived, 空基载机速度矢量 |
| 气溶胶云团 | `CloudEntity` | 弹药到达→消散 | Center, Radius, CoreDensity, IsDissipated |
| 管控区域 | `ControlZoneEntity` | 仿真全程 | Vertices, Min/MaxAltitude |

## 事件一览

| 事件 | 触发条件 | 参数 | Unity 典型响应 |
|------|------|------|------|
| `OnMunitionLaunched` | 发射计划时间到达 + 平台就绪 | `MunitionEntity` | 生成炮弹模型，播放发射动画 |
| `OnCloudGenerated` | 弹药到达释放高度 | `CloudEntity` | 生成粒子系统，初始半径+颜色 |
| `OnDroneDestroyed` | 毁伤判定 HP ≤ 0 | `DroneEntity` | 播放爆炸/坠毁动画 |
| `OnDroneReachedTarget` | 到达最后航路点 | `DroneEntity` | 显示"目标抵达"提示 |
| `OnZoneIntruded` | 无人机进入管控区 | `DroneEntity`, `ControlZoneEntity` | 红色警报 |
| `OnSimulationEnded` | 所有无人机状态 ≠ Flying | 无 | 显示结果面板，触发报告生成 |

## 实体 × 事件 矩阵

|  | MunitionLaunched | CloudGenerated | DroneDestroyed | ReachedTarget | ZoneIntruded | SimEnded |
|------|:---:|:---:|:---:|:---:|:---:|:---:|
| DroneEntity | | | ✅ | ✅ | ✅ | |
| PlatformEntity | ✅ | | | | | |
| MunitionEntity | ✅ | | | | | |
| CloudEntity | | ✅ | | | | |
| ControlZoneEntity | | | | | ✅ | |
| 全局 | | | | | | ✅ |

## 数据流

```
想定配置（EquipmentDeployment + TargetConfig + RoutePlan + CombatScene）
    │
    ▼
SimulationEngine.Initialize()
    │
    ├─ BuildFireUnits() → List<FireUnit>
    ├─ BuildDroneGroups() → List<DroneGroup>
    │
    ▼
IDefensePlanner.Plan(fireUnits, threats, scene)
    │
    ├─ 五步流水线 → FireSchedule（发射计划）
    │
    ▼
SimulationEngine.Tick()
    │
    ├─ 【地基】时间到达 → PlatformEntity.Release() → MunitionEntity 创建
    │   └─ OnMunitionLaunched ──→ Unity: 炮弹 3D 模型
    │
    ├─ 【空基】时间到达 → PlatformEntity.CommandFlyTo() → 飞行中 → CanRelease
    │   └─ Release() → MunitionEntity(AirDrop, 载机速度) → OnMunitionLaunched
    │       └─ OnMunitionLaunched ──→ Unity: 空基投放
    │
    ├─ MunitionEntity 飞行 → 到达释放高度
    │   ├─ 地基：抛物线弹道（Kinematics.ParabolicPosition）
    │   └─ 空基：载机速度 + 重力（Kinematics.AirDropPosition）
    │       │
    │       ├─ CloudEntity 创建
    │       ├─ OnCloudGenerated ──→ Unity: 粒子系统
    │       └─ 扩散 → 毁伤判定
    │           ├─ DroneEntity.Hp -= dmg
    │           └─ HP≤0 → OnDroneDestroyed ──→ Unity: 爆炸动画
    │
    ├─ DroneEntity.Update() → 到达终点
    │   └─ OnDroneReachedTarget ──→ Unity: 抵达提示
    │
    ├─ ControlZone.ContainsPoint()
    │   └─ OnZoneIntruded ──→ Unity: 红色警报
    │
    └─ All drones done
        └─ OnSimulationEnded ──→ Unity: 结果面板 + 报告生成
```
