private IEnumerator UpdateTransformDimensions(VRTK_InteractableObject ioCheck, Vector3 endPosition, Quaternion endRotation, Vector3 endScale, float duration)
        {
            var elapsedTime          = 0f;
            var ioTransform          = ioCheck.transform;
            var startPosition        = ioTransform.position;
            var startRotation        = ioTransform.rotation;
            var startScale           = ioTransform.localScale;
            var storedKinematicState = ioCheck.IsKinematic();

            ioCheck.ToggleKinematic(true);

            while (elapsedTime <= duration)
            {
                elapsedTime           += Time.deltaTime;
                ioTransform.position   = Vector3.Lerp(startPosition, endPosition, (elapsedTime / duration));
                ioTransform.rotation   = Quaternion.Lerp(startRotation, endRotation, (elapsedTime / duration));
                ioTransform.localScale = Vector3.Lerp(startScale, endScale, (elapsedTime / duration));
                yield return(null);
            }

            //Force all to the last setting in case anything has moved during the transition
            ioTransform.position   = endPosition;
            ioTransform.rotation   = endRotation;
            ioTransform.localScale = endScale;

            ioCheck.ToggleKinematic(storedKinematicState);
            SetDropSnapType(ioCheck);
        }