bevy_serialization_extras

Crates.iobevy_serialization_extras
lib.rsbevy_serialization_extras
version
sourcesrc
created_at2023-10-26 17:37:04.702458
updated_at2025-01-01 18:32:40.059977
descriptionA crate for managing serialization with moonshine_save + wrappers.
homepage
repositoryhttps://github.com/rydb/bevy_serialization_extras
max_upload_size
id1014795
Cargo.toml error:TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
(rydb)

documentation

README

bevy_serialization_extras

A library for component oriented serialization.

Features

  • Out of the box serialization Through [plugins] for components
// Component <-> WrapperComponent
.add_plugins(SerializeComponentFor::<AsyncCollider, ColliderFlag>::default())

// Asset <-> WrapperComponent
.add_plugins(SerializeAssetFor::<MeshMaterial3d<StandardMaterial>, MaterialFlag3d>::default())
// Query -> Component, 
.add_plugins(SerializeQueryFor::<Linkage, ImpulseJoint, JointFlag>::default())
  • Serialization of groups of enities that compose an asset into their singular asset equivillent, and vice-versa

A visualization util to list serializable/unserializable components(W.I.P) [bevy_serialization_core]

demo_gif.webm

Visualize and edit 3rd party components that do not [Reflect]

E.G: Edit Rapier's ImpulseJoint through JointFlag [bevy_serialization_physics]

edit_example.png

Serialize a collection of entities into an [Asset] that is composed of them

E.G: serialize the parts of a robot into a [Urdf] [bevy_serialization_assemble]

//(entity_0, ... entity_n) -> Asset
// [UNIMPLEMENTED] Asset -> (entity_0, ... entity_n)
.add_plugins(SerializeManyAsOneFor::<LinkQuery, Urdf>::default())

https://github.com/user-attachments/assets/fb1a1b09-db3f-4476-9b0d-800b296ccb8a

Why bevy_serialization_extras?

  • bevy_serialization_extras is built ontop of bevy_reflect, not serde. No need to double dip to serialize.

  • bevy_serialization_extras allows regular serialization into .ron via [moonshine_save] + allows converting serializables into more stable file formats via bevy_serialization_assemble.

serde serialization:

world <--> scene.json

bevy_serialziation_extras:

(object) <--> (partA, partB) <--> .file
(person) (body + arm_0...arm_n + leg_0..leg_n) <--> .file
world <--> scene.ron

This is good for creating editors in bevy.

Credits

[moonshine_save] for the save/load backend of this library

Usage

See sub-crate /examples files for example usage.

Commit count: 150

cargo fmt