bevy_ecs/reflect/
map_entities.rs1use crate::entity::{EntityMapper, MapEntities};
2use bevy_reflect::{FromReflect, FromType, PartialReflect};
3
4#[derive(Clone)]
14pub struct ReflectMapEntities {
15 map_entities: fn(&mut dyn PartialReflect, &mut dyn EntityMapper),
16}
17
18impl ReflectMapEntities {
19 pub fn map_entities(&self, reflected: &mut dyn PartialReflect, mapper: &mut dyn EntityMapper) {
24 (self.map_entities)(reflected, mapper);
25 }
26}
27
28impl<C: FromReflect + MapEntities> FromType<C> for ReflectMapEntities {
29 fn from_type() -> Self {
30 ReflectMapEntities {
31 map_entities: |reflected, mut mapper| {
32 let mut concrete = C::from_reflect(reflected).expect("reflected type should match");
33 concrete.map_entities(&mut mapper);
34 reflected.apply(&concrete);
35 },
36 }
37 }
38}