refactor: Convert AGVPathResult.Path from List<string> to List<MapNode>
## Summary - Changed Path property type from List<string> to List<MapNode> for better type safety - Eliminated O(n) node lookups throughout pathfinding system - Added DirectionalHelper with motor direction consistency bonus/penalty - Updated all path processing to work with MapNode objects directly ## Files Modified - AGVPathResult.cs: Path property and CreateSuccess() method signature - AStarPathfinder.cs: Path generation and node lookup optimization - AGVPathfinder.cs: Path processing with MapNode objects - DirectionChangePlanner.cs: Direction change planning with MapNode paths - DockingValidator.cs: Docking validation with direct node access - UnifiedAGVCanvas.Events.cs: Path visualization with MapNode iteration - UnifiedAGVCanvas.cs: Destination node access - VirtualAGV.cs: Path conversion to string IDs for storage - DirectionalHelper.cs: Enhanced with motor direction awareness - NodeMotorInfo.cs: Updated for new path structure ## Benefits - Performance: Eliminated O(n) lookup searches - Type Safety: Compile-time checking for node properties - Code Quality: Direct property access instead of repeated lookups - Maintainability: Single source of truth for node data ## Build Status ✅ AGVNavigationCore: Build successful (0 errors, 2 warnings) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -300,13 +300,19 @@ namespace AGVSimulator.Forms
|
||||
|
||||
// 현재 AGV 방향 가져오기
|
||||
var selectedAGV = _agvListCombo.SelectedItem as VirtualAGV;
|
||||
var currentDirection = selectedAGV?.CurrentDirection ?? AgvDirection.Forward;
|
||||
if(selectedAGV == null)
|
||||
{
|
||||
MessageBox.Show("Virtual AGV 가 없습니다", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
var currentDirection = selectedAGV.CurrentDirection;
|
||||
|
||||
// AGV의 이전 위치에서 가장 가까운 노드 찾기
|
||||
var prevNode = selectedAGV?.PrevNode;
|
||||
var prevNode = selectedAGV.PrevNode;
|
||||
var prevDir = selectedAGV.PrevDirection;
|
||||
|
||||
// 고급 경로 계획 사용 (노드 객체 직접 전달)
|
||||
var advancedResult = _advancedPathfinder.FindPath_test(startNode, targetNode, prevNode, currentDirection);
|
||||
var advancedResult = _advancedPathfinder.FindPath_test(startNode, targetNode, prevNode, prevDir, currentDirection);
|
||||
|
||||
if (advancedResult.Success)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user