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);
        }
Example #2
0
 public WorldRenderSegmentOverlap(int x, int y, int depth, WorldRenderSegment seg)
 {
     this.x       = x;
     this.y       = y;
     this.depth   = depth;
     this.segment = seg;
 }
Example #3
0
 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);
        }
Example #7
0
 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));
 }