Module specs::saveload
[−]
[src]
Save and load entities from various formats with serde.
WorldSerialize
/ WorldDeserialize
This module provides two SystemData
implementors:
WorldSerialize
andWorldDeserialize
Fetching those makes it very easy to serialize or deserialize
components. However, be aware that you cannot fetch storages
used in WorldDeserialize
with the same system. E.g.
type SystemData = (WorldDeserialize<'a, Marker, MyError, (Pos, Vel)>, WriteStorage<'a, Vel>)
is not valid since both WorldDeserialize
and WriteStorage
would fetch the same component
storage mutably.
WorldSerialize
implements Serialize
and WorldDeserialize
implements
DeserializeSeed
, so serializing / deserializing should be very easy.
Markers
Let's start simple. Because you usually don't want to serialize everything, we use
markers to say which entities we're interested in. However, these markers
aren't just boolean values; we'd like to also have id spaces which allow us
to identify entities even though local ids are different. And the allocation
of these ids is what MarkerAllocator
s are responsible for. For an example,
see the docs for the Marker
trait.
Structs
U64Marker |
Basic marker implementation usable for saving and loading |
U64MarkerAllocator |
Basic marker allocator |
WorldDeserialize |
Struct which implements |
WorldSerialize |
This type implements |
Traits
Marker |
This trait should be implemented by a component which is going to be used as marker.
This marker should be set to entity that should be serialized.
If serialization strategy needs to set marker to some entity
then it should use newly allocated marker from |
MarkerAllocator |
This allocator is used with the |
SaveLoadComponent |
This trait should be implemented in order to allow component
to be serializable with |
Functions
deserialize |
Deserialize entities according to markers. |
serialize |
Serialize components from specified storages via |
serialize_recursive |
Serialize components from specified storages via |