Example #1
0
 public bool Update(T item)
 {
     if (ArrayEx.Contains(m_items, m_items_size, item))
     {
         if (Bound.Contains(item.Position))
         {
             return(true);
         }
         return(ArrayEx.Remove(m_items, ref m_items_size, item) && (Parent?.Add(item) ?? false));
     }
     return(Add(item));
 }
Example #2
0
 public bool Remove(T item)
 {
     if (Bound.Contains(item.Position))
     {
         if (m_childs.Length == 0 && ArrayEx.Remove(m_items, ref m_items_size, item))
         {
             item.Node = null;
             return(true);
         }
         for (int index = 0; index < m_childs.Length; index++)
         {
             if (m_childs[index].Remove(item))
             {
                 return(true);
             }
         }
     }
     return(Parent?.Remove(item) ?? false);
 }