Example #1
0
 public Vector3 GetRandom(Vector3 maxRandom, int iElement)
 {
     MathUtils.tempV3.x = maxRandom.x * (DRandom.GetUnit(iElement));
     MathUtils.tempV3.y = maxRandom.y * (DRandom.GetUnit(iElement + 13 * iElement));
     MathUtils.tempV3.z = maxRandom.z * (DRandom.GetUnit(iElement + 29 * iElement));
     return(MathUtils.tempV3);
 }
        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 Apply_Characters(TextAnimation se, SE_Animation anim, int sequenceIndex)
        {
            if (anim.mTime < mDelay && !_InitAllElements)
            {
                return;
            }

            bool applyRandomFrom = HasRandom(_FromRandom);
            bool applyRandomTo   = HasRandom(_ToRandom);

            DRandom.mCurrentSeed = GetRandomSeed(anim, sequenceIndex);


            // Iterate through all the valid range
            for (int iElement = mElementRangeStart; iElement < mElementRangeEnd; ++iElement)
            {
                float progress = GetProgress(anim.mTime, anim, iElement);
                if (!_InitAllElements && progress < 0)
                {
                    continue;
                }
                progress = progress < 0 ? 0 : progress;

                progress = _EasingCurve.Evaluate(progress);
                var currentAlpha = TextAnimation.mOriginalVertices.Buffer[iElement * 4].color.a;

                //--[ From ]----------------------------
                float aFrom = _From * 255;
                if (_AnimBlend_From == eFloatAnimBlendMode.Offset)
                {
                    aFrom = aFrom + currentAlpha;
                }
                if (_AnimBlend_From == eFloatAnimBlendMode.Blend)
                {
                    aFrom = _From * currentAlpha;
                }

                if (applyRandomFrom)
                {
                    aFrom += 255 * _FromRandom * DRandom.GetUnit(iElement);
                }

                //--[ To ]----------------------------
                float aTo = 255 * _To;
                if (_AnimBlend_To == eFloatAnimBlendMode.Offset)
                {
                    aTo = (currentAlpha + _To);
                }
                if (_AnimBlend_To == eFloatAnimBlendMode.Blend)
                {
                    aTo = (currentAlpha * _To);
                }


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


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


                // Apply to all Vertices
                for (int v = iElement * 4; v < iElement * 4 + 4; ++v)
                {
                    TextAnimation.mOriginalVertices.Buffer[v].color.a = alpha;
                }
            }
        }