namespace MultiWheelC.TrajectoryPlanning.EMPlanner;

public sealed class SchedulingConfiguration
{
    public double ReplanPeriodSeconds { get; set; }
    public double TimeHorizonSeconds { get; set; }
    public double DistanceHorizonMeters { get; set; }
    public double OutputTimeStepSeconds { get; set; }
    public double SolverTimeoutSeconds { get; set; }
    public double HandoffLookaheadSeconds { get; set; }
    public double MaximumVehicleStateAgeSeconds { get; set; }

    internal SchedulingConfiguration Copy()
    {
        return new SchedulingConfiguration
        {
            ReplanPeriodSeconds = ReplanPeriodSeconds,
            TimeHorizonSeconds = TimeHorizonSeconds,
            DistanceHorizonMeters = DistanceHorizonMeters,
            OutputTimeStepSeconds = OutputTimeStepSeconds,
            SolverTimeoutSeconds = SolverTimeoutSeconds,
            HandoffLookaheadSeconds = HandoffLookaheadSeconds,
            MaximumVehicleStateAgeSeconds = MaximumVehicleStateAgeSeconds,
        };
    }
}
