| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | // You need to define AVPRO_PACKAGE_TIMELINE manually to use this script// We could set up the asmdef to reference the package, but the package doesn't // existing in Unity 2017 etc, and it throws an error due to missing reference//#define AVPRO_PACKAGE_TIMELINE#if (UNITY_2018_1_OR_NEWER && AVPRO_PACKAGE_TIMELINE)using UnityEngine;using UnityEngine.Playables;using UnityEngine.Timeline;using System.Collections.Generic;//-----------------------------------------------------------------------------// Copyright 2020-2021 RenderHeads Ltd.  All rights reserved.//-----------------------------------------------------------------------------namespace RenderHeads.Media.AVProVideo.Playables{	public class MediaPlayerControlMixerBehaviour : PlayableBehaviour	{		public float audioVolume = 1f;		public string videoPath = null;		public override void ProcessFrame(Playable playable, FrameData info, object playerData)		{			MediaPlayer mediaPlayer = playerData as MediaPlayer;			float finalVolume = 0f;			if (!mediaPlayer)				return;			int inputCount = playable.GetInputCount(); //get the number of all clips on this track			for (int i = 0; i < inputCount; i++)			{				float inputWeight = playable.GetInputWeight(i);				ScriptPlayable<MediaPlayerControlBehaviour> inputPlayable = (ScriptPlayable<MediaPlayerControlBehaviour>)playable.GetInput(i);				MediaPlayerControlBehaviour input = inputPlayable.GetBehaviour();								// Use the above variables to process each frame of this playable.				finalVolume += input.audioVolume * inputWeight;			}			if (mediaPlayer != null)			{				mediaPlayer.AudioVolume = finalVolume;				if (mediaPlayer.Control != null)				{					mediaPlayer.Control.SetVolume(finalVolume);				}			}		}	}}#endif
 |