/// <summary> /// 获取到目标点的邻居节点; /// </summary> public IEnumerable <CoordPack <RectCoord, RecDirections> > GetNeighbours(RecDirections directions) { foreach (var direction in GetDirections(directions)) { yield return(new CoordPack <RectCoord, RecDirections>(GetDirection(direction), direction)); } }
/// <summary> /// 获取到方向集表示的所有方向; /// </summary> public static IEnumerable <RecDirections> GetDirections(RecDirections directions) { int mask = (int)directions; for (int intDirection = minDirectionMark; intDirection <= maxDirectionMark; intDirection <<= 1) { if ((intDirection & mask) == 1) { yield return((RecDirections)intDirection); } } }
/// <summary> /// 获取到方向偏移量; /// </summary> public static RectCoord GetDirectionOffset(RecDirections direction) { return(directionsVector[(int)direction]); }
/// <summary> /// 获取到这个方向的坐标; /// </summary> public RectCoord GetDirection(RecDirections direction) { return(this + GetDirectionOffset(direction)); }