92 lines
3.4 KiB
C#
92 lines
3.4 KiB
C#
using ActiveProtect.Models;
|
||
|
||
namespace ActiveProtect.SimulationEnvironment
|
||
{
|
||
public class SimulationConfig
|
||
{
|
||
public List<TankConfig> TankConfigs { get; set; }
|
||
public List<MissileConfig> MissileConfigs { get; set; }
|
||
public List<LaserDesignatorConfig> LaserDesignatorConfigs { get; set; }
|
||
public double SimulationTimeStep { get; set; }
|
||
|
||
public SimulationConfig()
|
||
{
|
||
TankConfigs = [];
|
||
MissileConfigs = [];
|
||
LaserDesignatorConfigs = [];
|
||
SimulationTimeStep = 0.1; // 默认时间步长为0.1秒
|
||
}
|
||
}
|
||
|
||
public class TankConfig
|
||
{
|
||
public Vector3D InitialPosition { get; set; }
|
||
public Orientation InitialOrientation { get; set; }
|
||
public double InitialSpeed { get; set; }
|
||
public double MaxSpeed { get; set; }
|
||
public double MaxArmor { get; set; }
|
||
|
||
public TankConfig()
|
||
{
|
||
InitialPosition = new Vector3D(0, 0, 0);
|
||
InitialOrientation = new Orientation(0, 0, 0);
|
||
}
|
||
}
|
||
|
||
public class MissileConfig
|
||
{
|
||
public Vector3D InitialPosition { get; set; }
|
||
public Orientation InitialOrientation { get; set; }
|
||
public double InitialSpeed { get; set; }
|
||
public double MaxSpeed { get; set; }
|
||
public int TargetIndex { get; set; }
|
||
public double MaxFlightTime { get; set; }
|
||
public double MaxFlightDistance { get; set; }
|
||
public double MaxAcceleration { get; set; }
|
||
public double ProportionalNavigationCoefficient { get; set; }
|
||
public Missile.FlightStageConfig StageConfig { get; set; }
|
||
public MissileDistanceParams DistanceParams { get; set; }
|
||
public double ThrustAcceleration { get; set; }
|
||
public double MaxEngineBurnTime { get; set; }
|
||
public MissileType Type { get; set; }
|
||
|
||
|
||
public MissileConfig()
|
||
{
|
||
InitialPosition = new Vector3D(0, 0, 0); // 初始位<E5A78B><E4BD8D>
|
||
InitialOrientation = new Orientation(0, 0, 0); // 初始方向
|
||
InitialSpeed = 0; // 初始速度
|
||
MaxSpeed = 0; // 最大速度
|
||
TargetIndex = 0; // 目标索引
|
||
MaxFlightTime = 0; // 最大飞行时间
|
||
MaxFlightDistance = 0; // 最大飞行距离
|
||
StageConfig = Missile.FlightStageConfig.StandardMissile; // 飞行阶段配置
|
||
ThrustAcceleration = 0; // 推力加速度
|
||
MaxEngineBurnTime = 0; // 最大发动机燃烧时间
|
||
MaxAcceleration = 0; // 最大加速度
|
||
DistanceParams = new MissileDistanceParams(0, 0, 0); // 距离参数
|
||
ProportionalNavigationCoefficient = 0; // 比例导引系数
|
||
Type = MissileType.StandardMissile; // 导弹类型
|
||
}
|
||
}
|
||
|
||
public class LaserDesignatorConfig
|
||
{
|
||
public Vector3D InitialPosition { get; set; }
|
||
public string TargetId { get; set; }
|
||
|
||
public LaserDesignatorConfig()
|
||
{
|
||
InitialPosition = new Vector3D(0, 0, 0);
|
||
TargetId = "";
|
||
}
|
||
}
|
||
|
||
public struct MissileDistanceParams(double terminalGuidanceDistance, double attackDistance, double explosionDistance)
|
||
{
|
||
public double TerminalGuidanceDistance { get; set; } = terminalGuidanceDistance;
|
||
public double AttackDistance { get; set; } = attackDistance;
|
||
public double ExplosionDistance { get; set; } = explosionDistance;
|
||
}
|
||
}
|