public override void ProcessFrame(Playable playable, FrameData info, object playerData)
        {
            trackBinding = playerData as Material;

            if (!trackBinding)
            {
                return;
            }

            if (!firstFrameHappened)
            {
                cacheTransition    = trackBinding.GetFloat(materialTransitionPropId);
                firstFrameHappened = true;
            }

            float inputTotal = 0.0f;
            int   inputCount = playable.GetInputCount();

            for (int i = 0; i < inputCount; i++)
            {
                float inputWeight = playable.GetInputWeight(i);
                ScriptPlayable <MaterialTransitionBehaviour> inputPlayable = (ScriptPlayable <MaterialTransitionBehaviour>)playable.GetInput(i);
                MaterialTransitionBehaviour input = inputPlayable.GetBehaviour();

                inputTotal += input.transition * inputWeight;
            }
            trackBinding.SetFloat(materialTransitionPropId, inputTotal);
        }
Esempio n. 2
0
        public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
        {
            var playable = ScriptPlayable <MaterialTransitionBehaviour> .Create(graph, template);

            MaterialTransitionBehaviour clone = playable.GetBehaviour();

            return(playable);
        }