示例#1
0
 public bool Contains(IQtUserData userData)
 {
     if (_ownedObjects.Contains(userData))
         return true;
     if (_affectedObjects.Contains(userData))
         return true;
     return false;
 }
示例#2
0
 public bool Contains(IQtUserData userData)
 {
     if (_affectedObjects.Contains(userData))
     {
         return(true);
     }
     return(false);
 }
示例#3
0
 public void Destroy()
 {
     for (int i = 0; i < _affectedObjects.Count; i++)
     {
         IQtUserData data = _affectedObjects[i];
         data.Destroy();
     }
     _affectedObjects.Clear();
 }
示例#4
0
    public static bool Intersects(Rect nodeBound, IQtUserData userData)
    {
        Rect r = new Rect(
            userData.GetCenter().x - userData.GetExtends().x,
            userData.GetCenter().z - userData.GetExtends().z,
            userData.GetExtends().x * 2.0f,
            userData.GetExtends().z * 2.0f);

        return(nodeBound.Overlaps(r));
    }
示例#5
0
 private bool IsHoldingUserData(IQtUserData userData)
 {
     for (int i = 0; i < _holdingLeaves.Count; ++i)
     {
         if (_holdingLeaves[i].Contains(userData))
         {
             return(true);
         }
     }
     return(false);
 }
示例#6
0
 public virtual void Receive(IQtUserData userData)
 {
     if (!QtAlgo.Intersects(Bound, userData))
     {
         return;
     }
     for (int i = 0; i < SubNodes.Length; ++i)
     {
         SubNodes[i].Receive(userData);
     }
 }
示例#7
0
    private bool IsHoldingUserData(IQtUserData userData)
    {
        foreach (var hLeaf in _holdingLeaves)
        {
            if (hLeaf.Contains(userData))
            {
                return(true);
            }
        }

        return(false);
    }
示例#8
0
    public virtual void Receive(IQtUserData userData)
    {
        if (!UQtAlgo.Intersects(Bound, userData))
        {
            return;
        }

        foreach (var sub in SubNodes)
        {
            sub.Receive(userData);
        }
    }
示例#9
0
 public static bool Intersects(Rect nodeBound, IQtUserData userData)
 {
     //var center = userData.GetCenter();
     //var extend = userData.GetExtends();
     //Rect r = new Rect(
     //    center.x - extend.x,
     //    center.y - extend.y,
     //    extend.y * 2.0f,
     //    extend.y * 2.0f);
     //return nodeBound.Overlaps(r);
     return(userData.Intersects(nodeBound));
 }
示例#10
0
    public override void Receive(IQtUserData userData)
    {
        if (!UQtAlgo.Intersects(Bound, userData))
        {
            return;
        }

        if (Bound.Contains(new Vector2(userData.GetCenter().x, userData.GetCenter().z)))
        {
            _ownedObjects.Add(userData);
        }
        else
        {
            _affectedObjects.Add(userData);
        }
    }
示例#11
0
        public override void Receive(IQtUserData userData)
        {
            if (!QtAlgo.Intersects(Bound, userData))
            {
                return;
            }

            //if (Bound.Contains(userData.GetCenter()))
            //{
            //    _ownedObjects.Add(userData);
            //} else
            //{
            //    _affectedObjects.Add(userData);
            //}
            _affectedObjects.Add(userData);
        }
示例#12
0
        private void SwapOut(List <QtLeaf> outLeaves)
        {
            for (int i = 0; i < outLeaves.Count; ++i)
            {
                QtLeaf leaf = outLeaves[i];
                leaf.SwapOut();
                _holdingLeaves.Remove(leaf);

                List <IQtUserData> affected = leaf.AffectedObjects;
                for (int j = 0; j < affected.Count; j++)
                {
                    IQtUserData item = affected[j];
                    if (!IsHoldingUserData(item))
                    {
                        item.SwapOut();
                    }
                }
                _swapOutQueue.Add(leaf);
                //if (CellSwapOut != null)
                //    CellSwapOut(leaf);
            }
        }
示例#13
0
 public void Receive(IQtUserData qud)
 {
     _root.Receive(qud);
 }
示例#14
0
 public static bool Intersects(Rect nodeBound, IQtUserData userData)
 {
     Rect r = new Rect(
         userData.GetCenter().x - userData.GetExtends().x,
         userData.GetCenter().z - userData.GetExtends().z,
         userData.GetExtends().x * 2.0f,
         userData.GetExtends().z * 2.0f);
     return nodeBound.Overlaps(r);
 }
示例#15
0
    public override void Receive(IQtUserData userData)
    {
        if (!UQtAlgo.Intersects(Bound, userData))
            return;

        if (Bound.Contains(new Vector2(userData.GetCenter().x, userData.GetCenter().z)))
        {
            _ownedObjects.Add(userData);
        }
        else
        {
            _affectedObjects.Add(userData);
        }
    }
示例#16
0
    private bool IsHoldingUserData(IQtUserData userData)
    {
        foreach (var hLeaf in _holdingLeaves)
        {
            if (hLeaf.Contains(userData))
            {
                return true;
            }
        }

        return false;
    }
示例#17
0
 public void Receive(IQtUserData qud)
 {
     _root.Receive(qud);
 }
示例#18
0
    public virtual void Receive(IQtUserData userData)
    {
        if (!UQtAlgo.Intersects(Bound, userData))
        {
            return;
        }

        foreach (var sub in SubNodes)
        {
            sub.Receive(userData);
        }
    }