/// <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); }
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(); }