Struct veloren_voxygen::audio::AudioFrontend
source · pub struct AudioFrontend {
inner: Option<AudioFrontendInner>,
pub subtitles_enabled: bool,
pub subtitles: VecDeque<Subtitle>,
volumes: Volumes,
music_spacing: f32,
pub combat_music_enabled: bool,
mtm: AssetHandle<MusicTransitionManifest>,
}
Expand description
Holds information about the system audio devices and internal channels used
for sfx and music playback. An instance of AudioFrontend
is used by
Voxygen’s GlobalState
to
provide access to devices and playback control in-game
TODO: Use a listener struct (like the one commented out above) instead of keeping all listener data in the AudioFrontend struct. Will be helpful when we do more with spatial audio.
Fields§
§inner: Option<AudioFrontendInner>
§subtitles_enabled: bool
§subtitles: VecDeque<Subtitle>
§volumes: Volumes
§music_spacing: f32
§combat_music_enabled: bool
§mtm: AssetHandle<MusicTransitionManifest>
Implementations§
source§impl AudioFrontend
impl AudioFrontend
pub fn new( num_sfx_channels: usize, num_ui_channels: usize, subtitles: bool, combat_music_enabled: bool, ) -> Self
pub fn get_clock(&self) -> Option<&ClockHandle>
pub fn get_clock_time(&self) -> Option<ClockTime>
sourcepub fn get_num_active_channels(&self) -> ActiveChannels
pub fn get_num_active_channels(&self) -> ActiveChannels
Returns [music channels, ambience channels, sfx channels, ui channels]
sourcefn play_music(&mut self, sound: &str, channel_tag: MusicChannelTag, length: f32)
fn play_music(&mut self, sound: &str, channel_tag: MusicChannelTag, length: f32)
Play a music file with the given tag. Pass in the length of the track in seconds.
sourcepub fn set_loop(&mut self, channel_tag: MusicChannelTag, sound_loops: bool)
pub fn set_loop(&mut self, channel_tag: MusicChannelTag, sound_loops: bool)
Turn on or off looping
sourcepub fn set_loop_points(
&mut self,
channel_tag: MusicChannelTag,
start: f32,
end: f32,
)
pub fn set_loop_points( &mut self, channel_tag: MusicChannelTag, start: f32, end: f32, )
Loops music from start point to end point in seconds
sourcepub fn set_ambience_master_filter(&mut self, frequency: u32)
pub fn set_ambience_master_filter(&mut self, frequency: u32)
Set the cutoff of the filter affecting all spatial sfx
sourcepub fn get_sfx_file<'a>(
trigger_item: Option<(&'a SfxEvent, &'a SfxTriggerItem)>,
) -> Option<(&'a str, f32, Option<&'a str>)>
pub fn get_sfx_file<'a>( trigger_item: Option<(&'a SfxEvent, &'a SfxTriggerItem)>, ) -> Option<(&'a str, f32, Option<&'a str>)>
Find sound based on given trigger_item. Randomizes if multiple sounds are found. Errors if no sounds are found. Returns (file, threshold, subtitle)
sourcepub fn set_sfx_master_filter(&mut self, frequency: u32)
pub fn set_sfx_master_filter(&mut self, frequency: u32)
Set the cutoff of the filter affecting all spatial sfx
sourcepub fn emit_sfx(
&mut self,
trigger_item: Option<(&SfxEvent, &SfxTriggerItem)>,
position: Vec3<f32>,
volume: Option<f32>,
)
pub fn emit_sfx( &mut self, trigger_item: Option<(&SfxEvent, &SfxTriggerItem)>, position: Vec3<f32>, volume: Option<f32>, )
Play an sfx file given the position and SfxEvent at the given volume (default 1.0)
sourcepub fn emit_ui_sfx(
&mut self,
trigger_item: Option<(&SfxEvent, &SfxTriggerItem)>,
volume: Option<f32>,
)
pub fn emit_ui_sfx( &mut self, trigger_item: Option<(&SfxEvent, &SfxTriggerItem)>, volume: Option<f32>, )
Plays a sfx non-spatially at the given volume (default 1.0); doesn’t need a position
sourcepub fn emit_subtitle(
&mut self,
subtitle: Option<&str>,
position: Option<Vec3<f32>>,
duration: f32,
)
pub fn emit_subtitle( &mut self, subtitle: Option<&str>, position: Option<Vec3<f32>>, duration: f32, )
Push a subtitle to the subtitle queue
sourcepub fn play_ambience_looping(
&mut self,
channel_tag: AmbienceChannelTag,
sound: &str,
)
pub fn play_ambience_looping( &mut self, channel_tag: AmbienceChannelTag, sound: &str, )
Plays an ambience sound that loops in the channel with a given tag
sourcepub fn play_ambience_oneshot(
&mut self,
channel_tag: AmbienceChannelTag,
trigger_item: Option<(&SfxEvent, &SfxTriggerItem)>,
volume: Option<f32>,
delay: Option<f32>,
)
pub fn play_ambience_oneshot( &mut self, channel_tag: AmbienceChannelTag, trigger_item: Option<(&SfxEvent, &SfxTriggerItem)>, volume: Option<f32>, delay: Option<f32>, )
Plays an ambience sound once at the given volume after the given delay. Make sure it uses a channel tag that does not change the volume of its channel. Currently, ambience oneshots use the Sfx file system
pub fn set_listener_pos(&mut self, pos: Vec3<f32>, ori: Vec3<f32>)
pub fn get_listener(&mut self) -> Option<&mut ListenerHandle>
pub fn get_listener_pos(&self) -> Vec3<f32>
pub fn get_listener_ori(&self) -> Vec3<f32>
sourcepub fn play_title_music(&mut self)
pub fn play_title_music(&mut self)
Switches the playing music to the title music, which is pinned to a specific sound file (veloren_title_tune.ogg)
sourcepub fn get_music_volume(&self) -> f32
pub fn get_music_volume(&self) -> f32
Retrieves the current setting for music volume
sourcepub fn get_ambience_volume(&self) -> f32
pub fn get_ambience_volume(&self) -> f32
Retrieves the current setting for ambience volume
sourcepub fn get_sfx_volume(&self) -> f32
pub fn get_sfx_volume(&self) -> f32
Retrieves the current setting for sfx volume
sourcepub fn music_enabled(&self) -> bool
pub fn music_enabled(&self) -> bool
Returns false if volume is 0 or the mute is on
sourcepub fn ambience_enabled(&self) -> bool
pub fn ambience_enabled(&self) -> bool
Returns false if volume is 0 or the mute is on
sourcepub fn sfx_enabled(&self) -> bool
pub fn sfx_enabled(&self) -> bool
Returns false if volume is 0 or the mute is on
pub fn set_music_volume(&mut self, music_volume: f32)
pub fn set_ambience_volume(&mut self, ambience_volume: f32)
sourcepub fn set_sfx_volume(&mut self, sfx_volume: f32)
pub fn set_sfx_volume(&mut self, sfx_volume: f32)
Sets the volume for both spatial sfx and UI (might separate these controls later)
pub fn set_music_spacing(&mut self, multiplier: f32)
pub fn set_subtitles(&mut self, enabled: bool)
sourcepub fn set_master_volume(&mut self, master_volume: f32)
pub fn set_master_volume(&mut self, master_volume: f32)
Updates volume of the master track
pub fn stop_all_ambience(&mut self)
pub fn stop_all_music(&mut self)
pub fn stop_all_sfx(&mut self)
pub fn get_num_music_channels(&self) -> usize
pub fn get_num_ambience_channels(&self) -> usize
Auto Trait Implementations§
impl !Freeze for AudioFrontend
impl !RefUnwindSafe for AudioFrontend
impl Send for AudioFrontend
impl Sync for AudioFrontend
impl Unpin for AudioFrontend
impl !UnwindSafe for AudioFrontend
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Chain<T> for T
impl<T> Chain<T> for T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
self
file descriptor.§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
source§impl<Context> SubContext<Context> for Context
impl<Context> SubContext<Context> for Context
fn sub_context(self) -> Context
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.