Пример #1
0
        public void ReturnToPool(ItemBehaviour inObject)
        {
            ItemBehaviour item = inObject.GetComponent <ItemBehaviour>();

            if (item == null)
            {
                throw new UnityException(string.Format("GameObject {0} is not recognised as an Item and cannot be returned to a pool!", inObject.name));
            }

            ItemDefinition definition = item.ItemDefinition;

            if (definition == null)
            {
                throw new UnityException(string.Format("Item component on GameObject {0} does not have a valid ItemDefinition!", inObject.name));
            }

            assertKeyExists(definition.itemName);

            // Debug.Log("returned to pool", inObject.gameObject);

            inObject.SetSpriteLayerOrder(0);
            inObject.transform.SetParent(poolRoot);
            inObject.transform.localPosition = Vector3.zero;
            inObject.transform.localRotation = Quaternion.identity;
            inObject.gameObject.SetActive(false);
            objectPools[definition.itemName].Enqueue(inObject);
        }
Пример #2
0
 public bool PushItemStack(ItemBehaviour item)
 {
     if (itemStack.Count >= playerSettings.holdStackLimit)
     {
         return(false);
     }
     item.SetSpriteLayer(Settings.Constant.heldSortingLayer);
     item.SetSpriteLayerOrder(itemStack.Count + 1);
     item.transform.parent        = stackHoldRoot;
     item.transform.localPosition = GetNextStackPosition();// item.ItemDefinition.GenerateItemStackPosition(itemStack.Count, true);
     item.transform.localRotation = item.ItemDefinition.GenerateItemStackRotation(true);
     itemStack.Push(item);
     return(true);
 }