/// <summary>
        ///     Play an audio stream globally, without position.
        /// </summary>
        /// <param name="stream">The audio stream to play.</param>
        /// <param name="audioParams"></param>
        public IPlayingAudioStream Play(AudioStream stream, AudioParams?audioParams = null)
        {
            var source = _clyde.CreateAudioSource(stream);

            ApplyAudioParams(audioParams, source);

            source.SetGlobal();
            source.StartPlaying();
            var playing = new PlayingStream
            {
                Source = source
            };

            PlayingClydeStreams.Add(playing);
            return(playing);
        }
Exemple #2
0
        private void TrackAudioPlayer(Godot.Node player)
        {
            var key    = LastPlayKey++;
            var signal = new GodotGlue.GodotSignalSubscriber0();

            signal.Connect(player, "finished");
            signal.Signal += () =>
            {
                CleanupAudioPlayer(key);
            };
            PlayingStreams[key] = new PlayingStream()
            {
                Player = player,
                Signal = signal
            };
        }
        /// <summary>
        ///     Play an audio stream following an entity.
        /// </summary>
        /// <param name="stream">The audio stream to play.</param>
        /// <param name="entity">The entity "emitting" the audio.</param>
        /// <param name="audioParams"></param>
        public IPlayingAudioStream Play(AudioStream stream, IEntity entity, AudioParams?audioParams = null)
        {
            var source = _clyde.CreateAudioSource(stream);

            source.SetPosition(entity.Transform.WorldPosition);
            ApplyAudioParams(audioParams, source);

            source.StartPlaying();
            var playing = new PlayingStream
            {
                Source         = source,
                TrackingEntity = entity,
            };

            PlayingClydeStreams.Add(playing);
            return(playing);
        }
        /// <summary>
        ///     Play an audio stream at a static position.
        /// </summary>
        /// <param name="stream">The audio stream to play.</param>
        /// <param name="coordinates">The coordinates at which to play the audio.</param>
        /// <param name="audioParams"></param>
        public IPlayingAudioStream Play(AudioStream stream, GridCoordinates coordinates,
                                        AudioParams?audioParams = null)
        {
            var source = _clyde.CreateAudioSource(stream);

            source.SetPosition(coordinates.ToMapPos(_mapManager));
            ApplyAudioParams(audioParams, source);

            source.StartPlaying();
            var playing = new PlayingStream
            {
                Source = source,
                TrackingCoordinates = coordinates,
            };

            PlayingClydeStreams.Add(playing);
            return(playing);
        }
        /// <summary>
        ///     Play an audio stream globally, without position.
        /// </summary>
        /// <param name="stream">The audio stream to play.</param>
        /// <param name="audioParams"></param>
        public void Play(AudioStream stream, AudioParams?audioParams = null)
        {
            var source = _clyde.CreateAudioSource(stream);

            if (audioParams.HasValue)
            {
                source.SetPitch(audioParams.Value.PitchScale);
                source.SetVolume(audioParams.Value.Volume);
            }

            source.SetGlobal();
            source.StartPlaying();
            var playing = new PlayingStream
            {
                Source = source,
            };

            PlayingClydeStreams.Add(playing);
        }
        /// <summary>
        ///     Play an audio stream at a static position.
        /// </summary>
        /// <param name="stream">The audio stream to play.</param>
        /// <param name="coordinates">The coordinates at which to play the audio.</param>
        /// <param name="audioParams"></param>
        public void Play(AudioStream stream, GridCoordinates coordinates, AudioParams?audioParams = null)
        {
            var source = _clyde.CreateAudioSource(stream);

            source.SetPosition(coordinates.ToWorld(_mapManager).Position);
            if (audioParams.HasValue)
            {
                source.SetPitch(audioParams.Value.PitchScale);
                source.SetVolume(audioParams.Value.Volume);
            }

            source.StartPlaying();
            var playing = new PlayingStream
            {
                Source = source,
                TrackingCoordinates = coordinates
            };

            PlayingClydeStreams.Add(playing);
        }
        /// <summary>
        ///     Play an audio stream following an entity.
        /// </summary>
        /// <param name="stream">The audio stream to play.</param>
        /// <param name="entity">The entity "emitting" the audio.</param>
        /// <param name="audioParams"></param>
        public void Play(AudioStream stream, IEntity entity, AudioParams?audioParams = null)
        {
            var source = _clyde.CreateAudioSource(stream);

            source.SetPosition(entity.Transform.WorldPosition);
            if (audioParams.HasValue)
            {
                source.SetPitch(audioParams.Value.PitchScale);
                source.SetVolume(audioParams.Value.Volume);
            }

            source.StartPlaying();
            var playing = new PlayingStream
            {
                Source         = source,
                TrackingEntity = entity,
            };

            PlayingClydeStreams.Add(playing);
        }
 private static void StreamDone(PlayingStream stream)
 {
     stream.Source.Dispose();
     stream.Done = true;
     stream.DoPlaybackDone();
 }