private void HandleLooping()
 {
     if (levelCompleted)
     {
         levelCompleted = false;
         currentCursor.DestroyCursor();
         currentState = State.AWAIT_INPUT;
     }
     // black event triggered or cursor out of bounds.
     else if (blackEventTriggered || currentCursor.IsOutOfBounds())
     {
         blackEventTriggered = false;
         currentCursor.DestroyCursor();
         EventManager.CallLevelRestart();
         currentState = State.AWAIT_INPUT;
     }
     // screen touched while looping.
     else if (Input.GetMouseButtonDown(0))
     {
         EventManager.CallLevelRestart();
         currentCursor.DestroyCursor();
         EventManager.CallFirstTouch();
         // register first touch position
         firstTouchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
         currentState  = State.FIRST_TOUCH;
     }
 }