#serialization #bevy #wrapper #component #plugin #moonshine-save

bevy_serialization_extras

A crate for managing serialization with moonshine_save + wrappers

9 unstable releases (3 breaking)

0.4.3 Mar 20, 2024
0.4.2 Mar 13, 2024
0.4.0 Feb 26, 2024
0.3.1 Feb 5, 2024
0.1.0 Oct 26, 2023

#644 in Game dev

Download history 15/week @ 2024-01-26 10/week @ 2024-02-02 30/week @ 2024-02-16 146/week @ 2024-02-23 27/week @ 2024-03-01 231/week @ 2024-03-08 170/week @ 2024-03-15 34/week @ 2024-03-22 61/week @ 2024-03-29 17/week @ 2024-04-05

143 downloads per month
Used in bevy_serialization_urdf

MIT license

1MB
2K SLoC

Rust 2K SLoC // 0.1% comments Rusty Object Notation 313 SLoC

bevy_serialization_extras

A library for bevy which contains wrappers/systems for managing serialization in bevy with moonshine-save for a more "hands off" serialization workflow

demo_gif.webm

Features

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

// AssetHandle <-> WrapperComponent
.add_plugins(SerializeAssetFor::<StandardMaterial, MaterialFlag>::default())

// WrapperComponent -> AssetHandle
.add_plugins(DeserializeAssetFrom::<GeometryFlag, Mesh>::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

See: https://github.com/rydb/bevy_serialization_urdf

//Query <-> Asset
.add_plugins(SerializeManyAsOneFor::<LinkQuery, Urdf>::default())
  • Allows edititing unserializable(non-reflect) implementing components through the wrappers that convert to them

    E.G: Edit Rapier's ImpulseJoint through JointFlag

edit_example.png

  • type registration for wrappers through ManagedTypeRegistration trait

  • A visualization util to list serializable/unserializable components(W.I.P)

Usage

For implementations of plugin trait bounds, see /Wrappers

TODO

  • Add a mechanism for updating from old save versions to new save versions as to not break old save files.

Dependencies

~52–91MB
~1.5M SLoC