예제 #1
0
        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);
        }
예제 #2
0
        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);
        }