amethyst_audio/components/
mod.rs1pub use self::{audio_emitter::AudioEmitter, audio_listener::AudioListener};
4
5use amethyst_assets::PrefabData;
6use amethyst_core::{
7 ecs::prelude::{Entity, Read, WriteStorage},
8 math::Point3,
9};
10use amethyst_error::Error;
11
12use serde::{Deserialize, Serialize};
13
14use crate::output::Output;
15
16mod audio_emitter;
17mod audio_listener;
18
19#[derive(Clone, Debug, Default, Deserialize, Serialize)]
23pub struct AudioPrefab {
24 emitter: bool,
25 listener: Option<(Point3<f32>, Point3<f32>)>,
27}
28
29impl<'a> PrefabData<'a> for AudioPrefab {
30 type SystemData = (
31 WriteStorage<'a, AudioEmitter>,
32 WriteStorage<'a, AudioListener>,
33 Option<Read<'a, Output>>,
34 );
35 type Result = ();
36
37 fn add_to_entity(
38 &self,
39 entity: Entity,
40 system_data: &mut Self::SystemData,
41 _: &[Entity],
42 _: &[Entity],
43 ) -> Result<(), Error> {
44 if self.emitter {
45 system_data.0.insert(entity, AudioEmitter::default())?;
46 }
47 if let Some((left_ear, right_ear)) = self.listener {
48 system_data.1.insert(
49 entity,
50 AudioListener {
51 left_ear,
52 right_ear,
53 },
54 )?;
55 }
56 Ok(())
57 }
58}