using System; using System.Collections.Generic; using System.Text; using XVector3 = Microsoft.Xna.Framework.Vector3; using System.Numerics; using SynthySound; namespace EvilSatellites { public class AudioAsset3D { private List _SoundList { get; set; } private string _Path; private Synthy _Engine; private Vector3 _Position; public Vector3 Position { get { return _Position; } set { _Position = value; foreach (var sound in _SoundList) { sound.Position = value; } } } private Random rnd; private int _Min; private int _Max; public AudioAsset3D(Synthy engine, string path, int min, int max) { _SoundList = new List(); _Engine = engine; _Path = path; _Max = max; _Min = min; rnd = new Random(); LoadAssets(); } private void LoadAssets() { for (var i = _Min; i <= _Max; i++) { Console.WriteLine(_Path + "/" + i.ToString() + ".wav"); _SoundList.Add(_Engine.Load3D(_Path + "/" + i.ToString() + ".wav")); } } public void Play() { var index = rnd.Next(_SoundList.Count); _SoundList[index].Reset(); _SoundList[index].Play(); } public void AddEffect(IEffect effect) { foreach (var sound in _SoundList) { sound.ConnectToEffect(effect); } } public void RemoveEffect(IEffect effect) { foreach (var sound in _SoundList) { sound.DisconnectFromEffect(effect); } } public void Dispose() { foreach (var sound in _SoundList) { sound.Destroy(); } } public void Destroy() { Dispose(); } } }