namespace MultiWheelC.TrajectoryPlanning.EMPlanner;

public sealed class LateralWeights
{
    public double ReferenceOffset { get; set; }
    public double HeadingDeviation { get; set; }
    public double SecondDerivative { get; set; }
    public double ThirdDerivative { get; set; }
    public double Curvature { get; set; }
    public double CurvatureVariation { get; set; }
    public double PreviousTrajectory { get; set; }
    public double RollingTerminal { get; set; }

    internal LateralWeights Copy()
    {
        return new LateralWeights
        {
            ReferenceOffset = ReferenceOffset,
            HeadingDeviation = HeadingDeviation,
            SecondDerivative = SecondDerivative,
            ThirdDerivative = ThirdDerivative,
            Curvature = Curvature,
            CurvatureVariation = CurvatureVariation,
            PreviousTrajectory = PreviousTrajectory,
            RollingTerminal = RollingTerminal,
        };
    }
}
