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}