using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Player;
namespace Robust.Shared.Audio
{
///
/// Common interface for the Audio System, which is used to play sounds on clients.
///
public interface IAudioSystem
{
///
/// Used in the PAS to designate the physics collision mask of occluders.
///
int OcclusionCollisionMask { get; set; }
///
/// Play an audio file globally, without position.
///
/// The set of players that will hear the sound.
/// The resource path to the OGG Vorbis file to play.
/// Audio parameters to apply when playing the sound.
IPlayingAudioStream? Play(Filter playerFilter, string filename, AudioParams? audioParams = null);
///
/// Play an audio file following an entity.
///
/// The set of players that will hear the sound.
/// The resource path to the OGG Vorbis file to play.
/// The UID of the entity "emitting" the audio.
/// Audio parameters to apply when playing the sound.
IPlayingAudioStream? Play(Filter playerFilter, string filename, EntityUid uid, AudioParams? audioParams = null);
///
/// Play an audio file at a static position.
///
/// The set of players that will hear the sound.
/// The resource path to the OGG Vorbis file to play.
/// The coordinates at which to play the audio.
/// Audio parameters to apply when playing the sound.
IPlayingAudioStream? Play(Filter playerFilter, string filename, EntityCoordinates coordinates, AudioParams? audioParams = null);
}
}