public RegionWaypointPoint GiveNeighborWaypointInNeighborRegion (Guid sourceRegionID, Guid sourceWaypointID, Guid sinkRegionID) { RegionWaypointPoint regionWaypointPoint = new RegionWaypointPoint(); ConnectionType[] emptyAvoid = new ConnectionType[0]; RegionEdge regionEdge = GetRegionEdgeMostNearSourceWaypoint(sourceRegionID, sourceWaypointID, sinkRegionID, emptyAvoid); regionWaypointPoint._waypointID = regionEdge._waypoint2; regionWaypointPoint._regionID = regionEdge._region2; return(regionWaypointPoint); }
public int GetDistanceOfLongHallway(RegionWaypointPoint currentGuid, int nextStep, List <RegionWaypointPoint> allRoute, ConnectionType[] avoidConnectionType) { int distance = 0; if (nextStep <= 0) { nextStep = 1; } for (int i = nextStep - 1; i < allRoute.Count(); i++) { if (allRoute[i]._regionID != allRoute[i + 1]._regionID) { if (_regions[allRoute[i]._regionID]._floor == _regions[allRoute[i + 1]._regionID]._floor) { RegionEdge regionEdge = GetRegionEdgeMostNearSourceWaypoint (allRoute[i]. _regionID, allRoute[i]. _waypointID, allRoute[i + 1]. _regionID, avoidConnectionType); distance = System.Convert.ToInt32(regionEdge._distance); } else { break; } } else { WaypointEdge waypointEdge = GetWaypointEdgeInRegion(allRoute[i]._regionID, allRoute[i]._waypointID, allRoute[i + 1]._waypointID, avoidConnectionType); distance = distance + System.Convert.ToInt32(waypointEdge._distance); if (i + 2 >= allRoute.Count()) { break; } else { WaypointEdge currentWaypointEdge = GetWaypointEdgeInRegion(allRoute[i]._regionID, allRoute[i]._waypointID, allRoute[i + 1]._waypointID, avoidConnectionType); WaypointEdge nextWaypointEdge = GetWaypointEdgeInRegion(allRoute[i + 1]._regionID, allRoute[i + 1]._waypointID, allRoute[i + 2]._waypointID, avoidConnectionType); if (currentWaypointEdge._direction != nextWaypointEdge._direction) { break; } } } } return(distance); }