// Shuffling orbs
 public IEnumerator shuffleBoard(int numShuffles = 1, float delay = 0f)    // sum ugly ass code
 {
     for (int s = 0; s < numShuffles; s++)
     {
         for (int i = 0; i < ROWS * COLUMNS - 1; i++)
         {
             int        j     = RNG.Next(i, ROWS * COLUMNS);
             int        row_i = i / COLUMNS;
             int        col_i = i % COLUMNS;
             int        row_j = j / COLUMNS;
             int        col_j = j % COLUMNS;
             Orb        orb1  = orbArray[col_i][row_i];
             Orb        orb2  = orbArray[col_j][row_j];
             Vector2Int temp  = orb1.getGridPos();
             orb1.setGridPos(orb2.getGridPos());
             orb2.setGridPos(temp);
             orbArray[col_i][row_i] = orb2;
             orbArray[col_j][row_j] = orb1;
             orb1.getTrans().position = convertGridToWorldPos(orb1.getGridPos());
             orb2.getTrans().position = convertGridToWorldPos(orb2.getGridPos());
         }
         if (delay != 0)
         {
             yield return(new WaitForSeconds(delay));
         }
     }
 }
    private IEnumerator rmvOrb()
    {
        Orb rmvOrb = selectedOrbs.First();

        selectedOrbs.Remove(selectedOrbs.First());
        Vector2Int rmvPos = rmvOrb.getGridPos();

        orbArray[rmvPos.x][rmvPos.y].removeConnectorSprites();
        for (float disappearTimer = 0f; disappearTimer <= DISAPPEAR_DURATION; disappearTimer += Time.deltaTime)
        {
            orbArray[rmvPos.x][rmvPos.y].getWhiteRenderer().color = Color.Lerp(Color.clear, rmvOrb.sprWhiteColor, Mathf.SmoothStep(0f, 1f, disappearTimer / DISAPPEAR_DURATION));
            yield return(null);
        }
        OrbPool.Instance.ReturnToPool(orbArray[rmvPos.x][rmvPos.y].gameObject);
        orbArray[rmvPos.x][rmvPos.y] = null;
    }