コード例 #1
0
ファイル: QuadTree.cs プロジェクト: Guardian820/OpenMOBA
        private void InsertToNode(Node node, ItemAndRect itemAndRect)
        {
            if (!node.Rect.IntersectsWith(itemAndRect.Rect))
            {
                return;
            }

            //         Console.WriteLine("Insert into " + node.Rect + " " + itemAndRect.Rect);

            if (node.TopLeft == null)
            {
                node.ItemAndRects.Add(itemAndRect);
                if (node.ItemAndRects.Count >= subdivisionItemCountThreshold)
                {
                    Subdivide(node);
                }
            }
            else
            {
                InsertToNode(node.TopLeft, itemAndRect);
                InsertToNode(node.TopRight, itemAndRect);
                InsertToNode(node.BottomLeft, itemAndRect);
                InsertToNode(node.BottomRight, itemAndRect);
            }
        }
コード例 #2
0
ファイル: QuadTree.cs プロジェクト: Guardian820/OpenMOBA
        public void Insert(T item, IntRect2 regionRect)
        {
            var itemAndRect = new ItemAndRect {
                Item = item, Rect = regionRect
            };

            InsertToNode(Root, itemAndRect);
        }