/// <summary> /// Calculate the difference between two ranges, i.e. X - Y. /// </summary> /// <param name="x">The first range to subtract from.</param> /// <param name="y">The second range to subtract with.</param> /// <returns>Between 0 and 2 remaining ranges.</returns> public static FInt32Range[] Difference(FInt32Range x, FInt32Range y) { if (x.Overlaps(y)) { FInt32Range lowerRange = new FInt32Range(x.LowerBound, FInt32RangeBound.FlipInclusion(y.LowerBound)); FInt32Range upperRange = new FInt32Range(FInt32RangeBound.FlipInclusion(y.UpperBound), x.UpperBound); if (!lowerRange.IsEmpty()) { if (!upperRange.IsEmpty()) { return(new FInt32Range[] { lowerRange, upperRange }); } else { return(new FInt32Range[] { lowerRange }); } } if (!upperRange.IsEmpty()) { return(new FInt32Range[] { upperRange }); } return(new FInt32Range[0]); } else { return(new FInt32Range[] { x }); } }