public IEnumerator onScreenObscured(TransitionKit transitionKit)
        {
            transitionKit.transitionKitCamera.clearFlags = CameraClearFlags.Nothing;

            // we dont transition back to the new scene unless it is loaded
            if (nextScene >= 0)
            {
                SceneManager.LoadSceneAsync(nextScene);
                yield return(transitionKit.StartCoroutine(transitionKit.waitForLevelToLoad(nextScene)));
            }

            var transitionDistance =
                transitionKit.GetComponent <Camera>().orthographicSize *
                2f; // 2x our camera.orthoSize so we move the slices off screen
            var elapsed = 0f;
            var mesh    = transitionKit.GetComponent <MeshFilter>().mesh;
            var verts   = mesh.vertices;

            while (elapsed < duration)
            {
                elapsed += transitionKit.deltaTime;
                var step   = Mathf.Pow(elapsed / duration, 2f);
                var offset = Mathf.Lerp(0, transitionDistance, step);

                // transition our QuadSlices
                for (var i = 0; i < _quadSlices.Length; i++)
                {
                    // odd ones move up, even down
                    var sign = (i % 2 == 0) ? 1f : -1f;
                    _quadSlices[i].shiftVerts(new Vector3(0, offset * sign), verts);
                }

                // reassign our verts
                mesh.vertices = verts;

                yield return(null);
            }
        }