public override void ApplyEffect(ref CharacterData data, int charIndex)
        {
            if (!enabled)
            {
                return;
            }

            if (hasTransformEffects)
            {
                offset = (data.vertices[0] + data.vertices[2]) / 2f;


                rotationQua.eulerAngles = rotation.EvaluateEffect(data.passedTime, charIndex);


                matrix.SetTRS(
                    movement.EvaluateEffect(data.passedTime, charIndex) * uniformIntensity,
                    rotationQua,
                    scale.EvaluateEffect(data.passedTime, charIndex));

                for (byte i = 0; i < data.vertices.Length; i++)
                {
                    data.vertices[i] -= offset;
                    data.vertices[i]  = matrix.MultiplyPoint3x4(data.vertices[i]);
                    data.vertices[i] += offset;
                }
            }

            if (setColor)
            {
                color = colorCurve.GetColor(data.passedTime, charIndex);
                data.colors.LerpUnclamped(color, 1 - data.passedTime / effectDuration);
            }
        }
        public override void ApplyEffect(ref CharacterData data, int charIndex)
        {
            if (!enabled)
            {
                return;
            }

            if (hasTransformEffects)
            {
                offset = (data.vertices[0] + data.vertices[2]) / 2f;

                #region Movement

                if (setMovement)
                {
                    movementVec.x = movementX.Evaluate(data.passedTime, charIndex);
                    movementVec.y = movementY.Evaluate(data.passedTime, charIndex);
                    movementVec.z = movementZ.Evaluate(data.passedTime, charIndex);

                    movementVec *= effectIntensity;
                }
                #endregion

                #region Scale
                if (setScale)
                {
                    scaleVec.x = scaleX.Evaluate(data.passedTime, charIndex);
                    scaleVec.y = scaleY.Evaluate(data.passedTime, charIndex);
                }

                #endregion

                #region Rotation
                if (setRotation)
                {
                    rotationEuler.x = rotX.Evaluate(data.passedTime, charIndex);
                    rotationEuler.y = rotY.Evaluate(data.passedTime, charIndex);
                    rotationEuler.z = rotZ.Evaluate(data.passedTime, charIndex);

                    rotationQua.eulerAngles = rotationEuler;
                }
                #endregion

                matrix.SetTRS(movementVec, rotationQua, scaleVec);

                for (byte i = 0; i < data.vertices.Length; i++)
                {
                    data.vertices[i] -= offset;
                    data.vertices[i]  = matrix.MultiplyPoint3x4(data.vertices[i]);
                    data.vertices[i] += offset;
                }
            }

            if (setColor)
            {
                color = colorCurve.GetColor(data.passedTime, charIndex);
                data.colors.LerpUnclamped(color, 1 - data.passedTime / showDuration);
            }
        }
Exemple #3
0
        public override void ApplyEffect(ref CharacterData data, int charIndex)
        {
            if (!enabled)
            {
                return;
            }

            if (!isOnOneCharacter)
            {
                isOnOneCharacter = data.passedTime > 0;
            }

            weight = emissionControl.effectWeigth * weightMult;

            if (weight == 0) //no effect
            {
                return;
            }

            if (hasTransformEffects)
            {
                offset = (data.vertices[0] + data.vertices[2]) / 2f;

                //weighted rotation
                rotationQua.eulerAngles = rotation.EvaluateEffect(uniformEffectTime, charIndex) * weight;

                matrix.SetTRS(
                    movement.EvaluateEffect(uniformEffectTime, charIndex) * uniformIntensity * weight,
                    rotationQua,
                    Vector3.LerpUnclamped(Vector3.one, scale.EvaluateEffect(uniformEffectTime, charIndex), weight));

                for (byte i = 0; i < data.vertices.Length; i++)
                {
                    data.vertices[i] -= offset;
                    data.vertices[i]  = matrix.MultiplyPoint3x4(data.vertices[i]);
                    data.vertices[i] += offset;
                }
            }

            if (setColor)
            {
                color = colorCurve.GetColor(uniformEffectTime, charIndex);
                data.colors.LerpUnclamped(color, Mathf.Clamp(weight, -1, 1));
            }
        }
Exemple #4
0
        public override void ApplyEffect(ref CharacterData data, int charIndex)
        {
            if (!enabled)
            {
                return;
            }

            if (!isOnOneCharacter)
            {
                isOnOneCharacter = data.passedTime > 0;
            }

            weight = emissionControl.effectWeigth * weightMult;

            if (weight == 0) //no effect
            {
                return;
            }

            if (hasTransformEffects)
            {
                offset = (data.vertices[0] + data.vertices[2]) / 2f;

                #region Movement
                if (setMovement)
                {
                    movementVec.x = movementX.Evaluate(uniformEffectTime, charIndex);
                    movementVec.y = movementY.Evaluate(uniformEffectTime, charIndex);
                    movementVec.z = movementZ.Evaluate(uniformEffectTime, charIndex);

                    movementVec *= effectIntensity * weight;  //movement also needs effects intensity (might change depending on fonts etc.)
                }
                #endregion

                #region Scale
                if (setScale)
                {
                    scaleVec.x = scaleX.Evaluate(uniformEffectTime, charIndex);
                    scaleVec.y = scaleY.Evaluate(uniformEffectTime, charIndex);

                    //weighted scale
                    scaleVec = Vector3.LerpUnclamped(Vector3.one, scaleVec, weight);
                }
                #endregion

                #region Rotation
                if (setRotation)
                {
                    rotationEuler.x = rotX.Evaluate(uniformEffectTime, charIndex);
                    rotationEuler.y = rotY.Evaluate(uniformEffectTime, charIndex);
                    rotationEuler.z = rotZ.Evaluate(uniformEffectTime, charIndex);

                    //weighted rotation
                    rotationQua.eulerAngles = rotationEuler * weight;
                }
                #endregion

                matrix.SetTRS(movementVec, rotationQua, scaleVec);

                for (byte i = 0; i < data.vertices.Length; i++)
                {
                    data.vertices[i] -= offset;
                    data.vertices[i]  = matrix.MultiplyPoint3x4(data.vertices[i]);
                    data.vertices[i] += offset;
                }
            }

            if (setColor)
            {
                color = colorCurve.GetColor(uniformEffectTime, charIndex);
                data.colors.LerpUnclamped(color, Mathf.Clamp(weight, -1, 1));
            }
        }