namespace MultiWheelC.TrajectoryPlanning.EMPlanner;

public sealed class LateralConfiguration
{
    public double MaximumLateralStepPerIterationMeters { get; set; }
    public double MaximumLateralSlope { get; set; }
    public double MaximumLateralSecondDerivativePerMeter { get; set; }
    public double MaximumLateralThirdDerivativePerSquareMeter { get; set; }
    public LateralWeights Weights { get; set; }

    internal LateralConfiguration Copy()
    {
        return new LateralConfiguration
        {
            MaximumLateralStepPerIterationMeters = MaximumLateralStepPerIterationMeters,
            MaximumLateralSlope = MaximumLateralSlope,
            MaximumLateralSecondDerivativePerMeter = MaximumLateralSecondDerivativePerMeter,
            MaximumLateralThirdDerivativePerSquareMeter = MaximumLateralThirdDerivativePerSquareMeter,
            Weights = Weights == null ? null : Weights.Copy(),
        };
    }
}
