private void Reset()
        {
            // Apply default properties when created or reset in the editor.
            duration = 0.4f;
            curve    = new AnimationCurve(new Keyframe[]
            {
                new Keyframe(0f, 0f, 3.00052f, 3.00052f),
                new Keyframe(1f, 1f, 0.05463887f, 0.05463887f)
            });

            presentedCanvasOffScreenLocation = OffScreenLocation.Right;

            animatePresentingCanvas           = true;
            presentingCanvasOffScreenLocation = OffScreenLocation.Left;
            presentingCanvasParallaxScalar    = 0.4f;

            description = "The slide transition animation presents content by sliding it in " +
                          "from an off-screen location. It dismisses content by performing the reverse - " +
                          "sliding it to an off-screen location.\n\nIn addition to the presented canvas " +
                          "controller, the presenting canvas controller can also be animated to and from " +
                          "an off-screen location. This gives the appearance of the " +
                          "content sliding out as the presented content slides in.\n\nWith the " +
                          "'presentingCanvasParallaxScalar' property, you can scale the amount by which " +
                          "the presenter moves, creating parallax effects. A value of 1 will animate " +
                          "fully to the off-screen location (no parallax), whilst 0.5 would animate " +
                          "halfway to the off-screen location.A value of 0 has the same effect as " +
                          "disabling 'animatePresentingCanvas'.";
        }
        private Vector3 PositionForCanvasControllerAtLocation(CanvasController canvasController,
                                                              OffScreenLocation location)
        {
            Vector3 position = Vector3.zero;

            switch (location)
            {
            case OffScreenLocation.Left:
            {
                position = canvasController.OffScreenLeftContentPosition();
                break;
            }

            case OffScreenLocation.Top:
            {
                position = canvasController.OffScreenTopContentPosition();
                break;
            }

            case OffScreenLocation.Right:
            {
                position = canvasController.OffScreenRightContentPosition();
                break;
            }

            case OffScreenLocation.Bottom:
            {
                position = canvasController.OffScreenBottomContentPosition();
                break;
            }
            }

            return(position);
        }