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); }
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); }