oxygengine_core/assets/
mod.rs

1pub 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}