pub enum Volume {
Linear(f32),
Decibels(f32),
}Expand description
A Volume represents an audio source’s volume level.
To create a new Volume from a linear scale value, use
Volume::Linear.
To create a new Volume from decibels, use Volume::Decibels.
Variants§
Linear(f32)
Create a new Volume from the given volume in the linear scale.
In a linear scale, the value 1.0 represents the “normal” volume,
meaning the audio is played at its original level. Values greater than
1.0 increase the volume, while values between 0.0 and 1.0 decrease
the volume. A value of 0.0 effectively mutes the audio.
§Examples
let volume = Volume::Linear(0.5);
assert_eq!(volume.to_linear(), 0.5);
assert!(ops::abs(volume.to_decibels() - -6.0206) < EPSILON);
let volume = Volume::Linear(0.0);
assert_eq!(volume.to_linear(), 0.0);
assert_eq!(volume.to_decibels(), f32::NEG_INFINITY);
let volume = Volume::Linear(1.0);
assert_eq!(volume.to_linear(), 1.0);
assert!(ops::abs(volume.to_decibels() - 0.0) < EPSILON);Decibels(f32)
Create a new Volume from the given volume in decibels.
In a decibel scale, the value 0.0 represents the “normal” volume,
meaning the audio is played at its original level. Values greater than
0.0 increase the volume, while values less than 0.0 decrease the
volume. A value of f32::NEG_INFINITY decibels effectively mutes the
audio.
§Examples
let volume = Volume::Decibels(-5.998);
assert!(ops::abs(volume.to_linear() - 0.5) < EPSILON);
let volume = Volume::Decibels(f32::NEG_INFINITY);
assert_eq!(volume.to_linear(), 0.0);
let volume = Volume::Decibels(0.0);
assert_eq!(volume.to_linear(), 1.0);
let volume = Volume::Decibels(20.0);
assert_eq!(volume.to_linear(), 10.0);Implementations§
Source§impl Volume
impl Volume
Sourcepub fn to_decibels(&self) -> f32
pub fn to_decibels(&self) -> f32
Returns the volume in decibels as a float.
If the volume is silent / off / muted, i.e., its underlying linear scale
is 0.0, this method returns negative infinity.
Sourcepub fn increase_by_percentage(&self, percentage: f32) -> Self
pub fn increase_by_percentage(&self, percentage: f32) -> Self
Increases the volume by the specified percentage.
This method works in the linear domain, where a 100% increase means doubling the volume (equivalent to +6.02dB).
§Arguments
percentage- The percentage to increase (50.0 means 50% increase)
§Examples
use bevy_audio::Volume;
let volume = Volume::Linear(1.0);
let increased = volume.increase_by_percentage(100.0);
assert_eq!(increased.to_linear(), 2.0);Sourcepub fn decrease_by_percentage(&self, percentage: f32) -> Self
pub fn decrease_by_percentage(&self, percentage: f32) -> Self
Decreases the volume by the specified percentage.
This method works in the linear domain, where a 50% decrease means halving the volume (equivalent to -6.02dB).
§Arguments
percentage- The percentage to decrease (50.0 means 50% decrease)
§Examples
use bevy_audio::Volume;
let volume = Volume::Linear(1.0);
let decreased = volume.decrease_by_percentage(50.0);
assert_eq!(decreased.to_linear(), 0.5);Sourcepub fn scale_to_factor(&self, factor: f32) -> Self
pub fn scale_to_factor(&self, factor: f32) -> Self
Scales the volume to a specific linear factor relative to the current volume.
This is different from adjust_by_linear as it sets the volume to be
exactly the factor times the original volume, rather than applying
the factor to the current volume.
§Arguments
factor- The scaling factor (2.0 = twice as loud, 0.5 = half as loud)
§Examples
use bevy_audio::Volume;
let volume = Volume::Linear(0.8);
let scaled = volume.scale_to_factor(1.25);
assert_eq!(scaled.to_linear(), 1.0);Sourcepub fn fade_towards(&self, target: Volume, factor: f32) -> Self
pub fn fade_towards(&self, target: Volume, factor: f32) -> Self
Creates a fade effect by interpolating between current volume and target volume.
This method performs linear interpolation in the linear domain, which provides a more natural-sounding fade effect.
§Arguments
target- The target volume to fade towardsfactor- The interpolation factor (0.0 = current volume, 1.0 = target volume)
§Examples
use bevy_audio::Volume;
let current = Volume::Linear(1.0);
let target = Volume::Linear(0.0);
let faded = current.fade_towards(target, 0.5);
assert_eq!(faded.to_linear(), 0.5);Trait Implementations§
Source§impl DivAssign for Volume
impl DivAssign for Volume
Source§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
/= operation. Read moreSource§impl Enum for Volume
impl Enum for Volume
Source§fn field(&self, __name_param: &str) -> Option<&dyn PartialReflect>
fn field(&self, __name_param: &str) -> Option<&dyn PartialReflect>
Source§fn field_at(&self, __index_param: usize) -> Option<&dyn PartialReflect>
fn field_at(&self, __index_param: usize) -> Option<&dyn PartialReflect>
Source§fn field_mut(&mut self, __name_param: &str) -> Option<&mut dyn PartialReflect>
fn field_mut(&mut self, __name_param: &str) -> Option<&mut dyn PartialReflect>
Source§fn field_at_mut(
&mut self,
__index_param: usize,
) -> Option<&mut dyn PartialReflect>
fn field_at_mut( &mut self, __index_param: usize, ) -> Option<&mut dyn PartialReflect>
Source§fn index_of(&self, __name_param: &str) -> Option<usize>
fn index_of(&self, __name_param: &str) -> Option<usize>
Source§fn name_at(&self, __index_param: usize) -> Option<&str>
fn name_at(&self, __index_param: usize) -> Option<&str>
Source§fn iter_fields(&self) -> VariantFieldIter<'_>
fn iter_fields(&self) -> VariantFieldIter<'_>
Source§fn variant_name(&self) -> &str
fn variant_name(&self) -> &str
Source§fn variant_index(&self) -> usize
fn variant_index(&self) -> usize
Source§fn variant_type(&self) -> VariantType
fn variant_type(&self) -> VariantType
Source§fn to_dynamic_enum(&self) -> DynamicEnum
fn to_dynamic_enum(&self) -> DynamicEnum
DynamicEnum from this enum.Source§fn is_variant(&self, variant_type: VariantType) -> bool
fn is_variant(&self, variant_type: VariantType) -> bool
Source§fn variant_path(&self) -> String
fn variant_path(&self) -> String
Source§impl From<Volume> for GlobalVolume
impl From<Volume> for GlobalVolume
Source§impl FromReflect for Volume
impl FromReflect for Volume
Source§fn from_reflect(__param0: &dyn PartialReflect) -> Option<Self>
fn from_reflect(__param0: &dyn PartialReflect) -> Option<Self>
Self from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetTypeRegistration for Volume
impl GetTypeRegistration for Volume
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl MulAssign for Volume
impl MulAssign for Volume
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*= operation. Read moreSource§impl PartialOrd for Volume
impl PartialOrd for Volume
Source§impl PartialReflect for Volume
impl PartialReflect for Volume
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(
&mut self,
__value_param: &dyn PartialReflect,
) -> Result<(), ApplyError>
fn try_apply( &mut self, __value_param: &dyn PartialReflect, ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<Self>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Self>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&dyn Reflect>
fn try_as_reflect(&self) -> Option<&dyn Reflect>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
Source§fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &dyn PartialReflect
fn as_partial_reflect(&self) -> &dyn PartialReflect
Source§fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
PartialReflect, combines reflect_clone and
take in a useful fashion, automatically constructing an appropriate
ReflectCloneError if the downcast fails. Read moreSource§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for Volume
impl Reflect for Volume
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
Source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
Source§impl TypePath for Volume
impl TypePath for Volume
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
impl Copy for Volume
Auto Trait Implementations§
impl Freeze for Volume
impl RefUnwindSafe for Volume
impl Send for Volume
impl Sync for Volume
impl Unpin for Volume
impl UnwindSafe for Volume
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§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>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§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.Source§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.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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