void FallPiece(Point p) { List <FallingPiece> available = new List <FallingPiece>(); for (int i = 0; i < fallen.Count; i++) { if (!fallen[i].falling) { available.Add(fallen[i]); } } FallingPiece set = null; if (available.Count > 0) { set = available[0]; } else { GameObject fell = GameObject.Instantiate(fallenPiece, fallenBoard); FallingPiece fPiece = fell.GetComponent <FallingPiece>(); set = fPiece; fallen.Add(fPiece); } int val = getValueAtPoint(p) - 1; if (set != null && val >= 0 && val < pieces.Length) { set.Initialize(pieces[val], getPositionFromPoint(p)); } }