Example #1
0
        public bool Insert(QuadTreeItem <T> item)
        {
            if (UseFuzzyBoundaries)
            {
                if (!Bounds.Intersects(item.Bounds))
                {
                    return(false);
                }
            }
            else
            {
                if (!Bounds.Contains(item.Bounds))
                {
                    return(false);
                }
            }

            if (Items.Count >= Threshold)
            {
                if (!IsDivided)
                {
                    Subdivide();
                }

                if (TopLeft.Insert(item) ||
                    TopRight.Insert(item) ||
                    BottomLeft.Insert(item) ||
                    BottomRight.Insert(item))
                {
                    return(true);
                }
            }
            else
            {
                Items.Add(item);
                return(true);
            }

            if (AllowOverflow)
            {
                Items.Add(item);
                return(true);
            }

            return(false);
        }