public DamagerMono TakePooledDamager(DamagerMono damager)
    {
        for (int i = 0; i < PooledDamagers.Count; i++)
        {
            DamagerMono dam = PooledDamagers[i];
            if (dam.GetType() == damager.GetType())
            {
                PooledDamagers.RemoveAt(i);
                return(dam);
            }
        }

        return(null);
    }
    private void DropWeapon()
    {
        if (Weapon != null)
        {
            Pickup pToMatch = Weapon.damagerSO.pickup.GetComponent <Pickup>();
            Pickup p        = pToMatch.pool.TakePooledPickup(pToMatch);
            if (p)
            {
                p.transform.position = DropPos;
            }
            else
            {
                GameObject.Instantiate(Weapon.damagerSO.pickup, DropPos, Quaternion.identity);
            }

            Weapon.gameObject.SetActive(false);
        }
        Weapon = null;
    }
 private void InteractChecks()
 {
     if (ShouldInteract)
     {
         IInteractable inter = Tracker.GetNearestInteractable();
         if (inter != null)
         {
             inter.Interact();
         }
         else if (PickupInRange)
         {
             DamagerMono damager = PickupInRange.GetPickup().GetComponent <DamagerMono>();
             if (damager != null)
             {
                 PickupWeapon(damager);
             }
         }
         else if (PickupInRange == false && Weapon)
         {
             DropWeapon();
         }
     }
 }
 public void AddPooledDamager(DamagerMono damager)
 {
     damager.gameObject.SetActive(false);
     PooledDamagers.Add(damager);
 }
 private void PickupWeapon(DamagerMono damager)
 {
     DropWeapon();
     Weapon = GameObject.Instantiate(damager, DominantHand.transform);
 }