private TouchAnimationPresetSnapshot LerpAnimationSnapshotInformation(TouchAnimationPresetSnapshot target, TouchAnimationInformation to, float t)
        {
            target.color = Color.Lerp(target.color, to.transitionColor, t);

            target.texture = to.changeToTexture;

            target.size = Mathf.Lerp(target.size, to.changeToSize, t);

            return target;
        }
        public void UpdateAnimationSnapshots(bool isLatched, ref TouchAnimationPresetSnapshot baseSnapshot, ref TouchAnimationPresetSnapshot topSnapshot)
        {
            if (isLatched)
            {
                switch (latchedAnimationBase.transitionMethod)
                {
                    case TouchAnimationInformation.TransitionMethod.Snap:
                        baseSnapshot = LerpAnimationSnapshotInformation(baseSnapshot, latchedAnimationBase, 1);
                        break;
                    case TouchAnimationInformation.TransitionMethod.Smooth:
                        baseSnapshot = LerpAnimationSnapshotInformation(baseSnapshot, latchedAnimationBase, latchedAnimationBase.transitionMethodValue);
                        break;
                }

                switch (latchedAnimationTop.transitionMethod)
                {
                    case TouchAnimationInformation.TransitionMethod.Snap:
                        topSnapshot = LerpAnimationSnapshotInformation(topSnapshot, latchedAnimationTop, 1);
                        break;
                    case TouchAnimationInformation.TransitionMethod.Smooth:
                        topSnapshot = LerpAnimationSnapshotInformation(topSnapshot, latchedAnimationTop, latchedAnimationTop.transitionMethodValue);
                        break;
                }
            }
            else
            {
                switch (unlatchedAnimationBase.transitionMethod)
                {
                    case TouchAnimationInformation.TransitionMethod.Snap:
                        baseSnapshot = LerpAnimationSnapshotInformation(baseSnapshot, unlatchedAnimationBase, 1);
                        break;
                    case TouchAnimationInformation.TransitionMethod.Smooth:
                        baseSnapshot = LerpAnimationSnapshotInformation(baseSnapshot, unlatchedAnimationBase, unlatchedAnimationBase.transitionMethodValue);
                        break;
                }

                switch (unlatchedAnimationTop.transitionMethod)
                {
                    case TouchAnimationInformation.TransitionMethod.Snap:
                        topSnapshot = LerpAnimationSnapshotInformation(topSnapshot, unlatchedAnimationTop, 1);
                        break;
                    case TouchAnimationInformation.TransitionMethod.Smooth:
                        topSnapshot = LerpAnimationSnapshotInformation(topSnapshot, unlatchedAnimationTop, unlatchedAnimationTop.transitionMethodValue);
                        break;
                }
            }
        }