ICloudDispersionModel加Elapsed属性 + 帧数据输出云团存在时间

This commit is contained in:
tian 2026-06-12 14:25:23 +08:00
parent c3e1fc797e
commit 3e12dba143
4 changed files with 5 additions and 1 deletions

View File

@ -26,6 +26,7 @@ namespace CounterDrone.Core.Algorithms
public ParticleParams Particles { get; } = new();
public bool IsDissipated { get; private set; }
public int Phase => _inPhase3 ? 3 : (_elapsed < 0.01f ? 1 : 2);
public float Elapsed => _elapsed;
public void Initialize(AmmunitionSpec ammo, CombatScene env, Vector3 releasePos, float releaseTime)
{

View File

@ -15,5 +15,7 @@ namespace CounterDrone.Core.Algorithms
bool IsDissipated { get; }
/// <summary>当前扩散阶段1=爆轰膨胀, 2=湍流扩散, 3=高斯扩散</summary>
int Phase { get; }
/// <summary>云团已存在时间(秒)</summary>
float Elapsed { get; }
}
}

View File

@ -241,7 +241,7 @@ namespace CounterDrone.Core.Simulation
foreach (var d in _drones)
list.Add(new EntitySnapshot { EntityId = d.Id, EntityType = Models.EntityType.Drone, PosX = d.PosX, PosY = d.PosY, PosZ = d.PosZ, StateData = JsonSerializer.Serialize(new { damageStage = (int)_damageModel.GetDamageStage(1 - d.Hp), hp = d.Hp }) });
foreach (var c in _clouds)
list.Add(new EntitySnapshot { EntityId = c.Id, EntityType = Models.EntityType.Cloud, PosX = c.Dispersion.Center.X, PosY = c.Dispersion.Center.Y, PosZ = c.Dispersion.Center.Z, StateData = JsonSerializer.Serialize(new { radius = c.Dispersion.Radius, opacity = c.Dispersion.Particles.Opacity, phase = c.Dispersion.Phase }) });
list.Add(new EntitySnapshot { EntityId = c.Id, EntityType = Models.EntityType.Cloud, PosX = c.Dispersion.Center.X, PosY = c.Dispersion.Center.Y, PosZ = c.Dispersion.Center.Z, StateData = JsonSerializer.Serialize(new { radius = c.Dispersion.Radius, opacity = c.Dispersion.Particles.Opacity, phase = c.Dispersion.Phase, elapsed = c.Dispersion.Elapsed }) });
return list;
}
}

View File

@ -37,6 +37,7 @@ namespace CounterDrone.Core.Tests
public ParticleParams Particles => new();
public bool IsDissipated => false;
public int Phase => 2;
public float Elapsed => 10f;
public void Initialize(CounterDrone.Core.Models.AmmunitionSpec ammo,
CounterDrone.Core.Models.CombatScene env, Vector3 releasePos, float releaseTime)