예제 #1
0
    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);
    }
예제 #2
0
 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));
     }
 }
예제 #3
0
 public static void AddToPool(LootItemHolder lootItemHolder)
 {
     lootItemHolder.gameObject.SetActive(false);
     _lootItemHolders.Enqueue(lootItemHolder);
 }
예제 #4
0
 private static void AssignLootItemHolder(LootItemHolder lootItemHolder, Item item, Transform droppingTransform)
 {
     lootItemHolder.SetItem(item);
     lootItemHolder.transform.position = GetRandomPosition(droppingTransform);
 }