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); } }
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)); } }
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)); } }