public override void OnStop(TextAnimation se, SE_Animation anim, int sequenceIndex)
        {
            if (!Application.isPlaying || !_OnFinish_SetAlphaToFinalValue)
            {
                return;
            }

            var currentAlpha = se.mWidgetColor.a;

            float t = anim._Backwards ? 0 : 1;

            var progress = _EasingCurve.Evaluate(t);

            //--[ From ]----------------------------
            float aFrom = _From * 255;

            if (_AnimBlend_From == eFloatAnimBlendMode.Offset)
            {
                aFrom = aFrom + currentAlpha;
            }
            if (_AnimBlend_From == eFloatAnimBlendMode.Blend)
            {
                aFrom = _From * currentAlpha;
            }

            if (HasRandom(_FromRandom))
            {
                aFrom += 255 * _FromRandom * DRandom.GetUnit(0);
            }

            //--[ To ]----------------------------
            float aTo = 255 * _To;

            if (_AnimBlend_To == eFloatAnimBlendMode.Offset)
            {
                aTo = (currentAlpha + _To);
            }
            if (_AnimBlend_To == eFloatAnimBlendMode.Blend)
            {
                aTo = (currentAlpha * _To);
            }


            if (HasRandom(_ToRandom))
            {
                aTo += 255 * _ToRandom * DRandom.GetUnit(0 * 2 + 90);
            }

            // Find Alpha for this Character
            float falpha = (aFrom + (aTo - aFrom) * progress);
            byte  alpha  = (byte)(falpha < 0 ? 0 : falpha > 255 ? 255 : falpha);

            var color = se.mWidgetColor;

            color.a = alpha;
            se.SetWidgetColor(color);
        }
        public override void OnStop(TextAnimation se, SE_Animation anim, int sequenceIndex)
        {
            if (!Application.isPlaying || !_OnFinish_SetColorToFinalValue)
            {
                return;
            }

            float t            = anim._Backwards ? 0 : 1;
            var   progress     = _EasingCurve.Evaluate(t);
            var   currentColor = se.mWidgetColor;

            // Find Color for this Character
            var newColor = _Gradient.Evaluate(progress);

            //--[ Blend ]----------------------------
            switch (_ColorBlend)
            {
            case eColorBlendMode.Replace: break;

            case eColorBlendMode.Multiply: newColor = newColor * currentColor; break;

            case eColorBlendMode.Additive: newColor = newColor + currentColor; break;

            case eColorBlendMode.AlphaBlend: newColor = Color.Lerp(currentColor, newColor, newColor.a); break;
            }

            if (_ApplyR)
            {
                currentColor.r = (byte)(newColor.r * 255);
            }
            if (_ApplyG)
            {
                currentColor.g = (byte)(newColor.g * 255);
            }
            if (_ApplyB)
            {
                currentColor.b = (byte)(newColor.b * 255);
            }
            if (_ApplyA)
            {
                currentColor.a = (byte)(newColor.a * 255);
            }

            se.SetWidgetColor(currentColor);
        }