ThreatSourceLibaray/ThreatSource/src/Jammer/MillimeterWaveJammer.cs

73 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using ThreatSource.Simulation;
using ThreatSource.Utils;
namespace ThreatSource.Jammer
{
/// <summary>
/// 毫米波干扰器实现
/// </summary>
public class MillimeterWaveJammer : BaseJammer
{
/// <summary>
/// 支持的干扰类型
/// </summary>
protected override JammingType JammingType => JammingType.MillimeterWave;
/// <summary>
/// 毫米波干扰器配置
/// </summary>
public readonly MillimeterWaveJammerConfig config;
/// <summary>
/// 初始化毫米波干扰器的新实例
/// </summary>
/// <param name="id">干扰器ID</param>
/// <param name="config">毫米波干扰器配置</param>
/// <param name="motionParameters">初始运动参数</param>
/// <param name="manager">仿真管理器实例</param>
public MillimeterWaveJammer(string id, MillimeterWaveJammerConfig config, KinematicState motionParameters, ISimulationManager manager)
: base(id, motionParameters, manager)
{
this.config = config;
}
/// <summary>
/// 创建干扰参数
/// </summary>
protected override JammingParameters CreateJammingParameters()
{
return new JammingParameters
{
Type = JammingType.MillimeterWave,
JammerId = Id,
Power = config.Power,
Wavelength = config.Wavelength,
Direction = KState.Orientation.ToVector(),
AngleRange = config.AngleRange,
SourcePosition = KState.Position,
Mode = config.Mode,
Duration = config.Duration,
StartTime = DateTime.UtcNow
};
}
/// <summary>
/// 更新干扰效果
/// </summary>
protected override void UpdateJamming(double deltaTime)
{
base.UpdateJamming(deltaTime);
// 更新位置
KState.Position += KState.Velocity * deltaTime;
// 更新干扰事件
if (CurrentParameters != null)
{
PublishJammingEvent(CurrentParameters);
}
}
}
}