oxygengine_audio/
lib.rs

1extern crate oxygengine_core as core;
2
3pub mod audio_asset_protocol;
4pub mod component;
5pub mod resource;
6pub mod system;
7
8pub mod prelude {
9    pub use crate::{audio_asset_protocol::*, component::*, resource::*, system::*};
10}
11
12use crate::{
13    component::{AudioSource, AudioSourcePrefabProxy},
14    resource::Audio,
15    system::{audio_system, AudioSystemResources},
16};
17use core::{
18    app::AppBuilder,
19    assets::database::AssetsDatabase,
20    ecs::pipeline::{PipelineBuilder, PipelineBuilderError},
21    prefab::PrefabManager,
22};
23
24pub fn bundle_installer<PB, A>(
25    builder: &mut AppBuilder<PB>,
26    data: A,
27) -> Result<(), PipelineBuilderError>
28where
29    PB: PipelineBuilder,
30    A: Audio + 'static,
31{
32    builder.install_resource(data);
33    builder.install_system::<AudioSystemResources<A>>("audio", audio_system::<A>, &[])?;
34    Ok(())
35}
36
37pub fn protocols_installer(database: &mut AssetsDatabase) {
38    database.register(audio_asset_protocol::AudioAssetProtocol);
39}
40
41pub fn prefabs_installer(prefabs: &mut PrefabManager) {
42    prefabs.register_component_factory_proxy::<AudioSource, AudioSourcePrefabProxy>("AudioSource");
43}