Move Volume and GlobalVolume to own file (#16838)
# Objective - Prework for reviving #9582. ## Solution - Move the two types to volume.rs and made it compile. - Also `#[reflect(Debug)]` on `Volume` while I'm here. ## Testing - Ran example locally. - Rely on CI.
This commit is contained in:
		
							parent
							
								
									90b2ba1859
								
							
						
					
					
						commit
						74e793d1e1
					
				| @ -1,37 +1,11 @@ | |||||||
| #![expect(deprecated)] | #![expect(deprecated)] | ||||||
| 
 | 
 | ||||||
| use crate::{AudioSource, Decodable}; | use crate::{AudioSource, Decodable, Volume}; | ||||||
| use bevy_asset::{Asset, Handle}; | use bevy_asset::{Asset, Handle}; | ||||||
| use bevy_derive::Deref; |  | ||||||
| use bevy_ecs::prelude::*; | use bevy_ecs::prelude::*; | ||||||
| use bevy_math::Vec3; | use bevy_math::Vec3; | ||||||
| use bevy_reflect::prelude::*; | use bevy_reflect::prelude::*; | ||||||
| 
 | 
 | ||||||
| /// A volume level equivalent to a non-negative float.
 |  | ||||||
| #[derive(Clone, Copy, Deref, Debug, Reflect)] |  | ||||||
| pub struct Volume(pub(crate) f32); |  | ||||||
| 
 |  | ||||||
| impl Default for Volume { |  | ||||||
|     fn default() -> Self { |  | ||||||
|         Self(1.0) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl Volume { |  | ||||||
|     /// Create a new volume level.
 |  | ||||||
|     pub fn new(volume: f32) -> Self { |  | ||||||
|         debug_assert!(volume >= 0.0); |  | ||||||
|         Self(f32::max(volume, 0.)) |  | ||||||
|     } |  | ||||||
|     /// Get the value of the volume level.
 |  | ||||||
|     pub fn get(&self) -> f32 { |  | ||||||
|         self.0 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /// Zero (silent) volume level
 |  | ||||||
|     pub const ZERO: Self = Volume(0.0); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// The way Bevy manages the sound playback.
 | /// The way Bevy manages the sound playback.
 | ||||||
| #[derive(Debug, Clone, Copy, Reflect)] | #[derive(Debug, Clone, Copy, Reflect)] | ||||||
| pub enum PlaybackMode { | pub enum PlaybackMode { | ||||||
| @ -197,25 +171,6 @@ impl SpatialListener { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// Use this [`Resource`] to control the global volume of all audio.
 |  | ||||||
| ///
 |  | ||||||
| /// Note: changing this value will not affect already playing audio.
 |  | ||||||
| #[derive(Resource, Default, Clone, Copy, Reflect)] |  | ||||||
| #[reflect(Resource, Default)] |  | ||||||
| pub struct GlobalVolume { |  | ||||||
|     /// The global volume of all audio.
 |  | ||||||
|     pub volume: Volume, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl GlobalVolume { |  | ||||||
|     /// Create a new [`GlobalVolume`] with the given volume.
 |  | ||||||
|     pub fn new(volume: f32) -> Self { |  | ||||||
|         Self { |  | ||||||
|             volume: Volume::new(volume), |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// A scale factor applied to the positions of audio sources and listeners for
 | /// A scale factor applied to the positions of audio sources and listeners for
 | ||||||
| /// spatial audio.
 | /// spatial audio.
 | ||||||
| ///
 | ///
 | ||||||
|  | |||||||
| @ -34,6 +34,7 @@ mod audio_output; | |||||||
| mod audio_source; | mod audio_source; | ||||||
| mod pitch; | mod pitch; | ||||||
| mod sinks; | mod sinks; | ||||||
|  | mod volume; | ||||||
| 
 | 
 | ||||||
| /// The audio prelude.
 | /// The audio prelude.
 | ||||||
| ///
 | ///
 | ||||||
| @ -51,6 +52,7 @@ pub mod prelude { | |||||||
| pub use audio::*; | pub use audio::*; | ||||||
| pub use audio_source::*; | pub use audio_source::*; | ||||||
| pub use pitch::*; | pub use pitch::*; | ||||||
|  | pub use volume::*; | ||||||
| 
 | 
 | ||||||
| pub use rodio::{cpal::Sample as CpalSample, source::Source, Sample}; | pub use rodio::{cpal::Sample as CpalSample, source::Source, Sample}; | ||||||
| pub use sinks::*; | pub use sinks::*; | ||||||
|  | |||||||
							
								
								
									
										48
									
								
								crates/bevy_audio/src/volume.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								crates/bevy_audio/src/volume.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | |||||||
|  | use bevy_derive::Deref; | ||||||
|  | use bevy_ecs::prelude::*; | ||||||
|  | use bevy_reflect::prelude::*; | ||||||
|  | 
 | ||||||
|  | /// Use this [`Resource`] to control the global volume of all audio.
 | ||||||
|  | ///
 | ||||||
|  | /// Note: changing this value will not affect already playing audio.
 | ||||||
|  | #[derive(Resource, Default, Clone, Copy, Reflect)] | ||||||
|  | #[reflect(Resource, Default)] | ||||||
|  | pub struct GlobalVolume { | ||||||
|  |     /// The global volume of all audio.
 | ||||||
|  |     pub volume: Volume, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl GlobalVolume { | ||||||
|  |     /// Create a new [`GlobalVolume`] with the given volume.
 | ||||||
|  |     pub fn new(volume: f32) -> Self { | ||||||
|  |         Self { | ||||||
|  |             volume: Volume::new(volume), | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /// A volume level equivalent to a non-negative float.
 | ||||||
|  | #[derive(Clone, Copy, Deref, Debug, Reflect)] | ||||||
|  | #[reflect(Debug)] | ||||||
|  | pub struct Volume(pub(crate) f32); | ||||||
|  | 
 | ||||||
|  | impl Default for Volume { | ||||||
|  |     fn default() -> Self { | ||||||
|  |         Self(1.0) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl Volume { | ||||||
|  |     /// Create a new volume level.
 | ||||||
|  |     pub fn new(volume: f32) -> Self { | ||||||
|  |         debug_assert!(volume >= 0.0); | ||||||
|  |         Self(f32::max(volume, 0.)) | ||||||
|  |     } | ||||||
|  |     /// Get the value of the volume level.
 | ||||||
|  |     pub fn get(&self) -> f32 { | ||||||
|  |         self.0 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /// Zero (silent) volume level
 | ||||||
|  |     pub const ZERO: Self = Volume(0.0); | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 mgi388
						mgi388