public override void ProcessFrame(Playable playable, FrameData info, object playerData) { m_TrackBinding = playerData as Text; if (m_TrackBinding == null) { return; } if (!m_FirstFrameHappened) { m_DefaultColor = m_TrackBinding.color; m_DefaultFontSize = m_TrackBinding.fontSize; m_DefaultText = m_TrackBinding.text; m_FirstFrameHappened = true; } int inputCount = playable.GetInputCount(); Color blendedColor = Color.clear; float blendedFontSize = 0f; float totalWeight = 0f; float greatestWeight = 0f; int currentInputs = 0; for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable <TextSwitcherBehaviour> inputPlayable = (ScriptPlayable <TextSwitcherBehaviour>)playable.GetInput(i); TextSwitcherBehaviour input = inputPlayable.GetBehaviour(); blendedColor += input.color * inputWeight; blendedFontSize += input.fontSize * inputWeight; totalWeight += inputWeight; if (inputWeight > greatestWeight) { m_TrackBinding.text = input.text; greatestWeight = inputWeight; } if (!Mathf.Approximately(inputWeight, 0f)) { currentInputs++; } } m_TrackBinding.color = blendedColor + m_DefaultColor * (1f - totalWeight); m_TrackBinding.fontSize = Mathf.RoundToInt(blendedFontSize + m_DefaultFontSize * (1f - totalWeight)); if (currentInputs != 1 && 1f - totalWeight > greatestWeight) { m_TrackBinding.text = m_DefaultText; } }
public override void ProcessFrame(Playable playable, FrameData info, object playerData) { m_TrackBinding = playerData as Text; if (m_TrackBinding == null) { return; } if (!m_FirstFrameHappened) { m_DefaultText = m_TrackBinding.text; m_FirstFrameHappened = true; } int inputCount = playable.GetInputCount(); float totalWeight = 0f; float greatestWeight = 0f; int currentInputs = 0; for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable <TextSwitcherBehaviour> inputPlayable = (ScriptPlayable <TextSwitcherBehaviour>)playable.GetInput(i); TextSwitcherBehaviour input = inputPlayable.GetBehaviour(); totalWeight += inputWeight; if (inputWeight > greatestWeight) { m_TrackBinding.text = input.text; greatestWeight = inputWeight; } if (!Mathf.Approximately(inputWeight, 0f)) { currentInputs++; } } if (currentInputs != 1 && 1f - totalWeight > greatestWeight) { m_TrackBinding.text = m_DefaultText; } }
public override void ProcessFrame(Playable playable, FrameData info, object playerData) { this.m_TrackBinding = (playerData as Text); if (this.m_TrackBinding == null) { return; } if (!this.m_FirstFrameHappened) { this.m_DefaultColor = this.m_TrackBinding.color; this.m_DefaultFontSize = this.m_TrackBinding.fontSize; this.m_DefaultText = this.m_TrackBinding.text; this.m_FirstFrameHappened = true; } int inputCount = playable.GetInputCount <Playable>(); Color a = Color.clear; float num = 0f; float num2 = 0f; float num3 = 0f; int num4 = 0; for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); TextSwitcherBehaviour behaviour = ((ScriptPlayable <T>)playable.GetInput(i)).GetBehaviour(); a += behaviour.color * inputWeight; num += (float)behaviour.fontSize * inputWeight; num2 += inputWeight; if (inputWeight > num3) { this.m_TrackBinding.text = behaviour.text; num3 = inputWeight; } if (!Mathf.Approximately(inputWeight, 0f)) { num4++; } } this.m_TrackBinding.color = a + this.m_DefaultColor * (1f - num2); this.m_TrackBinding.fontSize = Mathf.RoundToInt(num + (float)this.m_DefaultFontSize * (1f - num2)); if (num4 != 1 && 1f - num2 > num3) { this.m_TrackBinding.text = this.m_DefaultText; } }