Exemple #1
0
        ///// Methods /////

        public void AddBody(IQuadTreeBody body)
        {
            if (_childA != null)
            {
                var child = GetQuadrant(body.Position);
                child.AddBody(body);
            }
            else
            {
                _bodies.Add(body);
                if (_bodies.Count > _maxBodiesPerNode && _curLevel < _maxLevel)
                {
                    Split();
                }
            }
        }
Exemple #2
0
 public void AddBody(IQuadTreeBody body)
 {
     if (this.childA != null)
     {
         var child = GetQuadrant(body.Position);
         child.AddBody(body);
     }
     else
     {
         this.bodies.Add(body);
         if (this.bodies.Count > this.maxBodiesPerNode && this.curLevel < this.maxLevel)
         {
             Split();
         }
     }
 }
        ///// Methods /////

        public void AddBody(IQuadTreeBody body)
        {
            if (_childA != null)
            {
                //如果有子节点,获取在哪个子节点(象限),并在加在其子节点上
                var child = GetQuadrant(body.Position);
                child.AddBody(body);
            }
            else
            {
                //如果没有子节点,根据条件判断是否需要分割成子节点
                //如果判定需要分割成子节点,那么对象都要添加到子节点上,父节点不再保留
                _bodies.Add(body);
                body.quadTree = this;
                if (_bodies.Count > _maxBodiesPerNode && _curLevel < _maxLevel)
                {
                    Split();
                }
            }
        }
 public void AddBodyToRoot(IQuadTreeBody body)
 {
     root.AddBody(body);
 }