ActiveProtect/SimulationEnvironment/SimulationConfig.cs

92 lines
3.4 KiB
C#
Raw Blame History

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;
}
}