public Promise <IDisposable> Loop(string name) { var d = Deferred <IDisposable> .Create(); if (players.ContainsKey(name)) { EnqueueSoundThreadAction(() => { var player = players[name]; players[name] = PreLoad(name); var soundLifetime = new SoundPlaybackLifetime(player, true, this); CurrentlyPlayingSounds.Add(soundLifetime); d.Resolve(soundLifetime); }); } else { var lifetime = new Lifetime(); lifetime.Dispose(); d.Resolve(lifetime); } return(d.Promise); }
public Task <IDisposable> Loop(string name, float volume) { var d = new TaskCompletionSource <IDisposable>(); if (players.ContainsKey(name)) { EnqueueSoundThreadAction(() => { var player = players[name]; players[name] = PreLoad(name); var soundLifetime = new SoundPlaybackLifetime(player, true, this, volume); CurrentlyPlayingSounds.Add(soundLifetime); d.SetResult(soundLifetime); }); } else { var lifetime = new Lifetime(); lifetime.Dispose(); d.SetResult(lifetime); } return(d.Task); }