using System; namespace AGVNavigationCore.PathFinding { /// /// 경로 탐색 옵션 설정 /// public class PathfindingOptions { /// /// 회전 가능 노드 회피 여부 (기본값: false - 회전 허용) /// public bool AvoidRotationNodes { get; set; } = false; /// /// 회전 회피 시 추가 비용 가중치 (회전 노드를 완전 차단하지 않고 높은 비용으로 설정) /// public float RotationAvoidanceCost { get; set; } = 1000.0f; /// /// 회전 비용 가중치 (기존 회전 비용) /// public float RotationCostWeight { get; set; } = 50.0f; /// /// 도킹 접근 거리 /// public float DockingApproachDistance { get; set; } = 100.0f; /// /// 기본 옵션 생성 /// public static PathfindingOptions Default => new PathfindingOptions(); /// /// 회전 회피 옵션 생성 /// public static PathfindingOptions AvoidRotation => new PathfindingOptions { AvoidRotationNodes = true }; /// /// 옵션 복사 /// public PathfindingOptions Clone() { return new PathfindingOptions { AvoidRotationNodes = this.AvoidRotationNodes, RotationAvoidanceCost = this.RotationAvoidanceCost, RotationCostWeight = this.RotationCostWeight, DockingApproachDistance = this.DockingApproachDistance }; } /// /// 설정 정보 문자열 /// public override string ToString() { return $"회전회피: {(AvoidRotationNodes ? "ON" : "OFF")}, " + $"회전비용: {RotationCostWeight}, " + $"회피비용: {RotationAvoidanceCost}"; } } }