public bool findClosest(int c, int z, out WorldRenderSegment cSeg) { if (c >= 0 && c < cSegments.Length) { var segments = cSegments[c]; if (segments != null) { var cTest = new WorldRenderSegment(z, z); for (int i = segments.Count - 1; i >= 0; i--) { cSeg = segments[i]; if (cSeg.isOverlapping(cTest)) { return(true); } if (cSeg.max < z) { return(true); } } } } cSeg = new WorldRenderSegment(); return(false); }
public WorldRenderSegmentOverlap(int x, int y, int depth, WorldRenderSegment seg) { this.x = x; this.y = y; this.depth = depth; this.segment = seg; }
public WorldRenderSegment overlap(WorldRenderSegment other) { return(new WorldRenderSegment() { min = Utility.Max(min, other.min), max = Utility.Min(max, other.max) }); }
public void AddSegment(int c, WorldRenderSegment seg) { if (cSegments[c] == null) { cSegments[c] = new List <WorldRenderSegment>(); } cSegments[c].Add(seg); }
public IEnumerable <WorldRenderSegment> getOverlaps(int c, WorldRenderSegment seg) { if (c >= 0 && x < cSegments.Length) { var segments = cSegments[c]; foreach (var cSeg in segments) { if (cSeg.isOverlapping(seg)) { yield return(cSeg); } } } }
public bool getPartition(int c, int z, out WorldRenderSegment seg) { if (c >= 0 && c < height) { var segments = cSegments[c]; var test = new WorldRenderSegment(z, z); for (var i = 0; i < segments.Count; i++) { if (segments[i].isOverlapping(test)) { seg = segments[i]; return(true); } } } seg = new WorldRenderSegment(); return(false); }
public bool isOverlapping(WorldRenderSegment other) { return((other.min >= min && other.min <= max) || (other.max >= min && other.max <= max) || (min >= other.min && min <= other.max) || (max >= other.min && max <= other.max)); }