73 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |