using UnityEngine;
namespace MalbersAnimations.Scriptables
{
/// Store a list of Materials
[CreateAssetMenu(menuName = "Malbers Animations/Collections/Audio Clip Set", order = 1000)]
public class AudioClipListVar : ScriptableList
{
public void Play(AudioSource source)
{
var clip = Item_GetRandom();
source.clip = clip;
source.Play();
}
public void Play()
{
var NewGO = new GameObject() { name = "Audio [" + this.name +"]"};
var source = NewGO.AddComponent();
source.spatialBlend = 1f;
var clip = Item_GetRandom();
source.clip = clip;
source.Play();
}
void Reset() => Description = "Store a Collection of AudioClip";
}
[System.Serializable]
public class AudioClipReference : ReferenceVar
{
public AudioClip ConstantValue;
[RequiredField] public AudioClipListVar Variable;
public bool NullOrEmpty() => UseConstant ? (ConstantValue == null) : (Variable == null);
public AudioClip GetValue() => UseConstant ? ConstantValue : (Variable != null ? Variable.Item_GetRandom() : null);
public AudioClip GetValue(int index) => UseConstant ? ConstantValue : Variable.Item_Get(index);
public AudioClip GetValue(string name) => UseConstant ? ConstantValue : Variable.Item_Get(name);
public void Play(AudioSource source)
{
var clip = GetValue();
source.clip = clip;
source.Play();
}
}
}