Rescue Smoke 1.0.1 — 橙色求救烟雾（v12 破碎湍流羽流）
=======================================================

功能
- 出舱（EVA）后右键小绿人，在 PAW 菜单点「开启求救烟雾」。
- 右键按钮与屏幕提示跟随游戏语言：中文环境显示中文，其它语言显示英文
  （由 GameData\RescueSmoke\Localization\en-us.cfg / zh-cn.cfg 提供）。
- 烟柱锚定在小绿人的背包上（从背包位置喷出），小绿人移动时跟随（0.12 s 平滑）；
  静止时跳过锚点/盒体更新以节省 CPU，材质里的噪声流动动画仍照常播放。
- 再点「关闭求救烟雾」停止跟随，烟柱留在原地并在 fadeOut（默认 15 秒）内自然淡出。
- 真实橙色信号烟观感（v12）：羽流包络 × 3D 噪声团块 × 涡旋位移的体积场
  （9 次 noise3/样本，48 步）。v12 在 v7 基础上去掉圆润块团：边缘出现细碎
  缺口、内部有竖直拉丝与卷曲暗纹；源点最浓（≤1.7×），向尾部逐渐变薄变透
  （尾部 -55%），顶部从 72% 高度柔和消散；不再是固定半径的锥体/圆柱。
  颜色：深核 = 主体色×0.82 / 主体 #FF5A00（1,0.35,0）/ 亮边 = 主体向白插值 35%，
  加轻微暖色自发光，密集区不再发黑。
  （烟柱默认底部 0.35 m、顶部 9 m、高 30 m。）
  风让整根烟柱绕底部锚点朝下风方向倾斜/躺倒（倾角 = 风速 × 1.5°，上限默认 45°），
  不累积横向位移；90° 时烟柱可被吹到水平。最大倾斜角可在难度选项里调到 0–90°（0 = 不倾斜）。
  风源优先级（软依赖，取第一个非零；均不叠加）：
  1) WindUnifier（统一风，推荐一起装）→ 2) Keystone/NaturalWeather → 3) FAR 风槽
  → 4) KWP 气候（climate_api，Kerbin）→ 5) NaturalWeather Bridge
  → 6) VEFX Sources.Wind → 7) 默认轻风 (0.4, 0, 0.25) m/s。
  Nature's Fury 的龙卷风/风暴局部风单独比较：比上面基础风更强时覆盖，否则不参与。
  装了任意一个就有真实风；都没装也能正常用（只是倾斜不明显）。
  风速上限 80 m/s；倾角 = clamp(风速(m/s) × 1.5°, 0, windLeanDegMax)，默认上限 45°。
  「垂直方向」指当地地表法线（由 FlightGlobals.getUpAxis 求得），不是 KSP 飞行场景的世界 y 轴。
- 同一小绿人可反复开关；同时最多 8 团（全局上限）；只在有大气的地方可用。
- 支持白天/夜晚光照：朝阳面亮、背阳面暗，夜里烟会变暗。
- 难度选项：KSP「设置 → 难度选项 → 求救烟雾」里可调烟柱高度（10–60 m，默认 30 m）
  与最大倾斜角（0–90°，默认 45°）；难度选项优先于全局 cfg 与 MM patch。

安装
- 把 RescueSmoke 文件夹放到 <KSP>\GameData\ 下。
- 需要 ModuleManager（本机已装；其它环境需自备）。

配置
- 优先级：难度选项（高度 / 最大倾斜角）最高；其次是
  GameData\RescueSmoke\PluginData\RescueSmoke.cfg（全局 cfg），存在且含 RESCUE_SMOKE
  节点时，StartSmoke 一律使用全局 cfg，覆盖 PartModule 的 [KSPField]；只有全局 cfg
  缺失或解析失败时，才回落到 Patches\RescueSmoke_EVA.cfg 里的 MM patch 字段。
- 难度选项：设置 → 难度选项 → 求救烟雾，height（烟柱高度 10–60 m）与
  windLeanDeg（最大倾斜角 0–90°，默认 45°）；每次 StartSmoke 都按当前存档的难度选项覆盖最终值。
- GameData\RescueSmoke\PluginData\RescueSmoke.cfg：
  colorR/colorG/colorB（0..1，默认 1/0.35/0，即主体 #FF5A00）、
  bottomWidth/topWidth（底部/顶部直径，米）、
  height（米）、windLeanDegMax（最大倾斜角 0..90°，默认 45；旧键 windLeanMax 已废弃，按 2°/m 折算）、
  fadeOut（关闭淡出秒数 3..60）、
  steps（步进数：32/48/64 对应低/中/高）、maxSmokes（1..16）。
  followPlayer 为旧键，v3 固定跟随 EVA，保留仅为兼容旧配置。
- Patches\RescueSmoke_EVA.cfg 里的 MM 字段（同名同义）只在没有全局 cfg 时生效。
- 全局 cfg 仅在插件启动时读取一次：修改后需重启 KSP（下次进入场景）才生效。
- 旧键 width 仍可作为 topWidth 的别名读取（同时存在时 topWidth 优先）。

性能
- 目标是单团占屏 1/4 时 GPU 帧时间增量 ≤ 2 ms、8 团同屏 ≤ 6 ms；该数字尚未在
  8 团场景实测，实际以游戏内帧率为准（设计取舍为观感优先）。
- 质量档（按同屏烟源数自动降档）：1 团用配置值 48 步/5 octave；2–3 团 40/4；
  4–6 团 32/4；7 团以上 24/3。

回滚
- 删除 GameData\RescueSmoke 整个文件夹即可，不改动任何其它文件。

已知限制
- 体积渲染依赖本 mod 自带的 shader bundle；加载失败时回退为简单半透明盒。
- 未做 FloatingOrigin 重锚的极端长距离场景（飞离 10 km 以上再回来）可能有位置漂移。
- 小绿人被回收时烟柱在原地淡出；场景切换时由插件立即清空烟源，不会跨场景跟随。
