use bevy::ecs::entity::MapEntities; use bevy::math::Vec2; use bevy::prelude::{Entity, EntityMapper, Event}; use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Event, Serialize, Clone)] pub struct PartDragEvent(pub Entity, pub Vec2); impl MapEntities for PartDragEvent { fn map_entities(&mut self, entity_mapper: &mut E) { self.0 = entity_mapper.get_mapped(self.0); } } #[derive(Debug, Deserialize, Event, Serialize, Clone)] pub enum PartDragControlEvent { Start(Entity), Stop(Entity) } impl MapEntities for PartDragControlEvent { fn map_entities(&mut self, entity_mapper: &mut E) { match self { PartDragControlEvent::Start(entity) => *entity = entity_mapper.get_mapped(*entity), PartDragControlEvent::Stop(entity) => *entity = entity_mapper.get_mapped(*entity), } } }