コード例 #1
0
    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;
        }
    }
コード例 #2
0
    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;
        }
    }
コード例 #3
0
    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;
        }
    }