void SpawnIcon()
    {
        if (!searching && IconPool.PoolAvailable())
        {
            StartCoroutine(FindSpawnPoint());
        }

        if (pickedSpawnPosition != Vector3.zero && IconPool.PoolAvailable())
        {
            GameObject icon = IconPool.GetAvailableObject();
            icon.GetComponent <InteractableIcon>().Reset();

            icon.transform.position = pickedSpawnPosition;

            IconSnapToGrid iconSnap = icon.GetComponent <IconSnapToGrid>();
            iconSnap.Init();
            if (!iconSnap.TrySnapIcon())
            {
                IconPool.ReturnGameObjectToPool(iconSnap.gameObject);
            }

            icon = null;
            StopAllCoroutines();
            searching           = false;
            pickedSpawnPosition = Vector3.zero;
        }
    }