using System;
using MultiWheelC.TrajectoryPlanning.CoarsePath;

namespace MultiWheelC.TrajectoryPlanning.EMPlanner;

public sealed class VehicleMotionState
{
    public VehicleMotionState(
        Pose2D pose,
        double signedLongitudinalSpeedMetersPerSecond,
        double? longitudinalAccelerationMetersPerSecondSquared,
        DateTimeOffset capturedAtUtc,
        long sequenceId)
    {
        Pose = pose;
        SignedLongitudinalSpeedMetersPerSecond = signedLongitudinalSpeedMetersPerSecond;
        LongitudinalAccelerationMetersPerSecondSquared = longitudinalAccelerationMetersPerSecondSquared;
        CapturedAtUtc = capturedAtUtc;
        SequenceId = sequenceId;
    }

    public Pose2D Pose { get; }

    public double SignedLongitudinalSpeedMetersPerSecond { get; }

    public double? LongitudinalAccelerationMetersPerSecondSquared { get; }

    public DateTimeOffset CapturedAtUtc { get; }

    public long SequenceId { get; }
}
