use bevy::reflect::{
PartialReflect,
ReflectFromReflect,
TypeRegistry,
};
pub fn clone_reflect_value(
value: &dyn PartialReflect,
registry: &TypeRegistry,
) -> Box<dyn PartialReflect> {
value.reflect_clone().map_or_else(
|_| {
value
.get_represented_type_info()
.and_then(|i| registry.get(i.type_id()))
.and_then(|r| r.data::<ReflectFromReflect>())
.and_then(|fr| fr.from_reflect(value))
.map_or_else(|| value.to_dynamic(), PartialReflect::into_partial_reflect)
},
PartialReflect::into_partial_reflect,
)
}