You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.4 KiB
45 lines
1.4 KiB
using System; |
|
using UnityEngine.Audio; |
|
using UnityEngine.Playables; |
|
|
|
namespace UnityEngine.Timeline |
|
{ |
|
[Serializable] |
|
class AudioMixerProperties : PlayableBehaviour |
|
{ |
|
[Range(0.0f, 1.0f)] |
|
public float volume = 1.0f; |
|
|
|
[Range(-1.0f, 1.0f)] |
|
public float stereoPan = 0.0f; |
|
|
|
[Range(0.0f, 1.0f)] |
|
public float spatialBlend = 0.0f; |
|
|
|
public override void PrepareFrame(Playable playable, FrameData info) |
|
{ |
|
if (!playable.IsValid() || !playable.IsPlayableOfType<AudioMixerPlayable>()) |
|
return; |
|
|
|
var inputCount = playable.GetInputCount(); |
|
|
|
for (int i = 0; i < inputCount; ++i) |
|
{ |
|
if (playable.GetInputWeight(i) > 0.0f) |
|
{ |
|
var input = playable.GetInput(i); |
|
|
|
if (input.IsValid() && input.IsPlayableOfType<AudioClipPlayable>()) |
|
{ |
|
var audioClipPlayable = (AudioClipPlayable)input; |
|
var audioClipProperties = input.GetHandle().GetObject<AudioClipProperties>(); |
|
|
|
audioClipPlayable.SetVolume(Mathf.Clamp01(volume * audioClipProperties.volume)); |
|
audioClipPlayable.SetStereoPan(Mathf.Clamp(stereoPan, -1.0f, 1.0f)); |
|
audioClipPlayable.SetSpatialBlend(Mathf.Clamp01(spatialBlend)); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|