コード例 #1
0
ファイル: QuadTreeNode.cs プロジェクト: Towanime/FeInwork
        public void GetCollidableObjects(XboxHashSet<CollisionBody> list, CollisionBody container, float minX, float minY, float maxX, float maxY)
        {
            if (children == null)
            {
                //if (this.containerList.Contains(container))
                //{
                /*foreach (CollisionBody bodyFromList in this.items)
                {
                    list.Add(bodyFromList);
                }*/
                list.MergeInto(this.items);
                //}
            }
            else
            {
                for (int i = 0; i < 4; i++)
                {
                    bool inside = true;
                    QuadTreeNode child = this.children[i];

                    if (child.x1 > maxX || child.x2 < minX || child.y1 > maxY || child.y2 < minY) inside = false;

                    if (inside)
                    {
                        if (child.children == null)
                        {
                            /*foreach (CollisionBody bodyFromList in child.items)
                            {
                                list.Add(bodyFromList);
                            }*/
                            list.MergeInto(child.items);
                        }
                        else
                        {
                            child.GetCollidableObjects(list, container);
                        }
                    }
                }
            }
        }