public void CallDelegateItemRaycast(Item item, System.Action<Item> action)
 {
     action(item);
     ItemDrop itemDrop = item.GetComponent<ItemDrop>();
     if (itemDrop != null)
     {
         for (int i = 0; i < itemDrop.ChildItemDragList.Count; ++i)
         {
             CallDelegateItemRaycast(itemDrop.ChildItemDragList[i].GetComponent<Item>(), action);
         }
     }
 }
 public override Ray Snap(Item item, PointerEventData data)
 {
     ItemDrag dragItem = item.GetComponent<ItemDrag>();
     if (dragItem.AttachPointArray != null && dragItem.AttachPointArray.Length > 0)
     {
         for (int i = 0; i < dragItem.AttachPointArray.Length; ++i)
         {
             if (ItemUtility.TestTagArrays(dragItem.AttachPointArray[i].TagArray, ChildTagArray))
             {
                 return new Ray(transform.position - dragItem.AttachPointArray[i].transform.localPosition, -transform.forward);
             }
         }
         return new Ray(transform.position, -transform.forward);
     }
     else
     {
         return new Ray(this.transform.position, -transform.forward);
     }
 }
 private void RemoveUniqueTickRecursive(Item item)
 {
     Root.UniqueTickDictionary.Remove(item.UniqueTick);
     ItemDrop item_Drop = item.GetComponent<ItemDrop>();
     if (item_Drop != null)
     {
         for (int i = 0; i < item_Drop.ItemSnapArray.Length; ++i)
         {
             Root.UniqueTickDictionary.Remove(item_Drop.ItemSnapArray[i].UniqueTick);
         }
     }
     ItemDrop itemDrop = item.GetComponent<ItemDrop>();//TODO WHY IS THIS TWICE??
     if (itemDrop != null)
     {
         for (int i = 0; i < itemDrop.ChildItemDragList.Count; ++i)
         {
             RemoveUniqueTickRecursive(itemDrop.ChildItemDragList[i].GetComponent<Item>());
         }
     }
 }
 private int CallDelegateTagFilterItemRaycast(Item item, System.Func<Item,bool> filterAction, System.Action<Item> trueAction, System.Action<Item> falseAction)
 {
     int trueCount = 0;
     if (filterAction(item))
     {
         trueAction(item);
         trueCount = 1;
     }
     else if (falseAction != null)
     {
         falseAction(item);
     }
     ItemDrop itemDrop = item.GetComponent<ItemDrop>();
     if (itemDrop != null)
     {
         for (int i = 0; i < itemDrop.ChildItemDragList.Count; ++i)
         {
             trueCount += CallDelegateTagFilterItemRaycast(itemDrop.ChildItemDragList[i].GetComponent<Item>(), filterAction, trueAction, falseAction);
         }
     }
     return trueCount;
 }