mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|