private IEnumerator DropAsync(Item item, Transform droppingTransform) { AsyncOperationHandle <GameObject> operation = _lootItemHolderPrefab.InstantiateAsync(); yield return(operation); LootItemHolder lootItemHolder = operation.Result.GetComponent <LootItemHolder>();; AssignLootItemHolder(lootItemHolder, item, droppingTransform); }
public static void Drop(Item item, Transform droppingTransform) { // If we have LootItemHolders in our Object Pool if (_lootItemHolders.Any()) { Debug.Log("Dequeuing a LootItemHolder"); // Grab a reference to one LootItemHolder lootItemHolder = _lootItemHolders.Dequeue(); // Reactivate itB lootItemHolder.gameObject.SetActive(true); // Setup this reused LootItemHolder AssignLootItemHolder(lootItemHolder, item, droppingTransform); } else { Debug.Log("Instantiating a LootItemHolder"); _instance.StartCoroutine(_instance.DropAsync(item, droppingTransform)); } }
public static void AddToPool(LootItemHolder lootItemHolder) { lootItemHolder.gameObject.SetActive(false); _lootItemHolders.Enqueue(lootItemHolder); }
private static void AssignLootItemHolder(LootItemHolder lootItemHolder, Item item, Transform droppingTransform) { lootItemHolder.SetItem(item); lootItemHolder.transform.position = GetRandomPosition(droppingTransform); }