Function bevy_replicon::scene::replicate_into

source ·
pub fn replicate_into(scene: &mut DynamicScene, world: &World)
Expand description

Fills scene with all replicated entities and their components.

Entities won’t have the Replicated component. So on deserialization you need to insert it back if you want entities to continue to replicate.

§Panics

Panics if any replicated component is not registered using App::register_type or #[reflect(Component)] is missing.

§Examples

use bevy::{prelude::*, asset::ron, scene::serde::SceneDeserializer};
use bevy_replicon::{prelude::*, scene};
use serde::de::DeserializeSeed;

// Serialization
let registry = app.world.resource::<AppTypeRegistry>();
let mut scene = DynamicScene::default();
scene::replicate_into(&mut scene, &app.world);
let scene = scene
    .serialize_ron(&registry)
    .expect("scene should be serialized");

// Deserialization
let scene_deserializer = SceneDeserializer {
    type_registry: &registry.read(),
};
let mut deserializer =
    ron::Deserializer::from_str(&scene).expect("scene should be serialized as valid ron");
let mut scene = scene_deserializer
    .deserialize(&mut deserializer)
    .expect("ron should be convertible to scene");

// Re-insert `Replicated` component.
for entity in &mut scene.entities {
    entity.components.push(Replicated.clone_value());
}