oxygengine_core/assets/
mod.rs1pub mod asset;
2pub mod asset_pack_preloader;
3pub mod assets_preloader;
4pub mod database;
5pub mod protocol;
6pub mod protocols;
7pub mod system;
8
9use crate::{
10 app::AppBuilder,
11 assets::{
12 database::AssetsDatabase,
13 protocols::{
14 binary::BinaryAssetProtocol, json::JsonAssetProtocol,
15 localization::LocalizationAssetProtocol, meta::MetaAssetProtocol,
16 pack::PackAssetProtocol, prefab::PrefabAssetProtocol, text::TextAssetProtocol,
17 toml::TomlAssetProtocol,
18 },
19 system::{assets_system, AssetsSystemResources},
20 },
21 ecs::pipeline::{PipelineBuilder, PipelineBuilderError},
22 fetch::FetchEngine,
23};
24
25pub fn bundle_installer<PB, FE, ADS>(
26 builder: &mut AppBuilder<PB>,
27 (fetch_engine, mut assets_database_setup): (FE, ADS),
28) -> Result<(), PipelineBuilderError>
29where
30 PB: PipelineBuilder,
31 FE: FetchEngine + 'static,
32 ADS: FnMut(&mut AssetsDatabase),
33{
34 let mut database = AssetsDatabase::new(fetch_engine);
35 database.register(PackAssetProtocol);
36 database.register(BinaryAssetProtocol);
37 database.register(TextAssetProtocol);
38 database.register(JsonAssetProtocol);
39 database.register(TomlAssetProtocol);
40 database.register(PrefabAssetProtocol);
41 database.register(LocalizationAssetProtocol);
42 database.register(MetaAssetProtocol);
43 assets_database_setup(&mut database);
44 builder.install_resource(database);
45 builder.install_system::<AssetsSystemResources>("assets", assets_system, &[])?;
46 Ok(())
47}