private void ProcessRingInTheAirSelected(GameObject ring)
    {
        IRingMovementBondaryCalculationStrategy boundaryCalculator;

        ring.SendMessage("SetCurrentStateActive");
        boundaryCalculator = new OverPinMovementBoundaryCalculator(_verticalCrossedLimit);
        _RingMovementController.StartObjectMovementHandling(ring, boundaryCalculator);
    }
 /// <summary>
 /// Vertcial movement boundary crossing handler
 /// </summary>
 /// <param name="ring">Active ring</param>
 /// <param name="verticalCrossedLimit">Crossed vertical limit value</param>
 public void RingVerticalMovementLimitCrossedHandler(GameObject ring, float verticalCrossedLimit)
 {
     if (false == IsActiveRingInTheAir())
     {
         _verticalCrossedLimit = verticalCrossedLimit;
         OverPinMovementBoundaryCalculator movementStrategy = new OverPinMovementBoundaryCalculator(verticalCrossedLimit);
         _RingMovementController.SetBoundaryCalculator(movementStrategy);
         Transform holderPin = _PinController.GetPinIfRingOnTop(ring);
         holderPin.SendMessage("RemoveTopRing");
         _ActiveRingInTheAir       = ring;
         _PinController.ActiveRing = ring;
         _PinController.enabled    = true;
     }
 }