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}";
}
}
}