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); }
public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { var playable = ScriptPlayable <MaterialTransitionBehaviour> .Create(graph, template); MaterialTransitionBehaviour clone = playable.GetBehaviour(); return(playable); }