using System.Text.Json.Serialization; using RobotNet.VDA5050.Type; namespace RobotNet10.MapEditor.Shared.DTOs.Edge; /// /// Edge vehicle property data transfer object /// public class EdgeVehiclePropertyDto { public Guid Id { get; set; } public Guid EdgeId { get; set; } public Guid VehicleTypeId { get; set; } /// /// Vehicle type identifier (for reference) /// public string? VehicleTypeIdString { get; set; } public double? VehicleOrientation { get; set; } [JsonConverter(typeof(JsonStringEnumConverter))] public OrientationType? OrientationType { get; set; } public bool? RotationAllowed { get; set; } [JsonConverter(typeof(JsonStringEnumConverter))] public RotationDirection? RotationAtStartNodeAllowed { get; set; } [JsonConverter(typeof(JsonStringEnumConverter))] public RotationDirection? RotationAtEndNodeAllowed { get; set; } public double? MaxSpeed { get; set; } public double? MaxRotationSpeed { get; set; } public double? MinHeight { get; set; } public double? MaxHeight { get; set; } /// /// Load restriction for this edge (VDMA LIF: loadRestriction) /// public LoadRestrictionDto? LoadRestriction { get; set; } /// /// Trajectory degree (NURBS curve degree) - Optional /// Values: 1 (linear), 2 (quadratic), 3 (cubic) /// public int? TrajectoryDegree { get; set; } /// /// Trajectory control point 1 X coordinate (meters) - Optional /// Used for degree 2 and 3 curves /// public double? TrajectoryControlPoint1X { get; set; } /// /// Trajectory control point 1 Y coordinate (meters) - Optional /// Used for degree 2 and 3 curves /// public double? TrajectoryControlPoint1Y { get; set; } /// /// Trajectory control point 2 X coordinate (meters) - Optional /// Used for degree 3 curves only /// public double? TrajectoryControlPoint2X { get; set; } /// /// Trajectory control point 2 Y coordinate (meters) - Optional /// Used for degree 3 curves only /// public double? TrajectoryControlPoint2Y { get; set; } /// /// Actions as JSON array (VDMA LIF format) /// public string? Actions { get; set; } /// /// Corridor left width (meters) - Optional /// Defines the width of the corridor to the left related to the trajectory /// public double? CorridorLeftWidth { get; set; } /// /// Corridor right width (meters) - Optional /// Defines the width of the corridor to the right related to the trajectory /// public double? CorridorRightWidth { get; set; } /// /// Corridor reference point (VDA5050: corridorRefPoint) - Optional /// Defines whether the boundaries are valid for the kinematic center or the contour of the vehicle /// Values: KINEMATICCENTER, CONTOUR /// [JsonConverter(typeof(JsonStringEnumConverter))] public CorridorRefPoint? CorridorRefPoint { get; set; } }