MCPcopy Index your code
hub / github.com/NiklasEi/bevy_common_assets

github.com/NiklasEi/bevy_common_assets @v0.17.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.17.0 ↗ · + Follow
170 symbols 202 edges 21 files 21 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Bevy common assets

crates.io docs license crates.io

Collection of Bevy plugins offering generic asset loaders and writers for common file formats.

Supported formats:

format feature example
json json json.rs
msgpack msgpack msgpack.rs
postcard postcard postcard.rs
ron ron ron.rs
toml toml toml.rs
xml xml xml.rs
yaml yaml yaml.rs
csv csv csv.rs
cbor cbor cbor.rs

Usage

Enable the feature(s) for the format(s) that you want to use.

Define the types that you would like to load from files and derive serde::Deserialize, bevy::reflect::TypePath, and bevy::asset::Asset for them.

#[derive(serde::Deserialize, bevy::asset::Asset, bevy::reflect::TypePath)]
struct Level {
    positions: Vec<[f32;3]>,
}

With the types ready, you can start adding asset plugins. Every plugin gets the asset type that it is supposed to load as a generic parameter. You can also configure custom file endings for each plugin:

```rust no_run use bevy::prelude::*; use bevy_common_assets::cbor::CborAssetPlugin; use bevy_common_assets::json::JsonAssetPlugin; use bevy_common_assets::msgpack::MsgPackAssetPlugin; use bevy_common_assets::postcard::PostcardAssetPlugin; use bevy_common_assets::ron::RonAssetPlugin; use bevy_common_assets::toml::TomlAssetPlugin; use bevy_common_assets::xml::XmlAssetPlugin; use bevy_common_assets::yaml::YamlAssetPlugin;

fn main() { App::new() .add_plugins(( DefaultPlugins, JsonAssetPlugin::::new(&["level.json", "custom.json"]), RonAssetPlugin::::new(&["level.ron"]), MsgPackAssetPlugin::::new(&["level.msgpack"]), PostcardAssetPlugin::::new(&["level.postcard"]), TomlAssetPlugin::::new(&["level.toml"]), XmlAssetPlugin::::new(&["level.xml"]), YamlAssetPlugin::::new(&["level.yaml"]), CborAssetPlugin::::new(&["level.cbor"]) )) // ... .run(); }

[derive(serde::Deserialize, bevy::asset::Asset, bevy::reflect::TypePath)]

struct Level { positions: Vec<[f32; 3]>, } ```

The example above will load Level structs from json files ending on .level.json or .custom.json, from ron files ending on .level.ron and so on...

See the examples for working Bevy apps using the different formats.

Asset savers / using the loaders in .meta files

The more involved example asset_savers demonstrates how you can convert a json asset into a processed postcard asset using the JsonAssetLoader and PostcardAssetSaver.

Compatible Bevy versions

The main branch is compatible with the latest Bevy release.

Compatibility of bevy_common_assets versions:

bevy_common_assets bevy
0.15 0.18
0.14 0.17
0.13 0.16
0.12 0.15
0.11 0.14
0.10 0.13
0.8 - 0.9 0.12
0.7 0.11
0.5 - 0.6 0.10
0.4 0.9
0.3 0.8
0.1 - 0.2 0.7

License

Dual-licensed under either of

  • Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Core symbols most depended-on inside this repo

Shape

Class 62
Method 54
Function 34
Enum 20

Languages

Rust100%

Modules by API surface

src/ron.rs11 symbols
src/yaml.rs10 symbols
src/xml.rs10 symbols
src/toml.rs10 symbols
src/postcard.rs10 symbols
src/msgpack.rs10 symbols
src/json.rs10 symbols
src/cbor.rs10 symbols
src/csv.rs9 symbols
examples/xml.rs8 symbols
examples/multiple_formats.rs8 symbols
examples/yaml.rs7 symbols

For agents

$ claude mcp add bevy_common_assets \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page