
# Objective > I think we should axe the shared `Event` trait entirely It doesn't serve any functional purpose, and I don't think it's useful pedagogically @alice-i-cecile on discord ## Solution - Remove `Event` as a supertrait of `BufferedEvent` - Remove any `Event` derives that were made unnecessary - Update release notes --------- Co-authored-by: SpecificProtagonist <vincentjunge@posteo.net>
1.2 KiB
1.2 KiB
title | pull_requests | |
---|---|---|
Original target of `Pointer` picking events is now stored on observers |
|
The Pointer.target
field, which tracks the original target of the pointer event before bubbling, has been removed.
Instead, all observers now track this information, available via the On::original_target()
method.
If you were using this information via the buffered event API of picking, please migrate to observers. If you cannot for performance reasons, please open an issue explaining your exact use case!
As a workaround, you can transform any entity-event into a buffered event that contains the targeted entity using an observer than emits events.
#[derive(BufferedEvent)]
struct TransformedEntityEvent<E: EntityEvent> {
entity: Entity,
event: E,
}
// A generic observer that handles this transformation
fn transform_entity_event<E: EntityEvent>(trigger: On<E>, event_writer: EventWriter<TransformedEntityEvent<E>>){
if trigger.target() == trigger.original_target(){
event_writer.send(trigger.event())
}
}
Additionally, the ObserverTrigger::target
field has been renamed to ObserverTrigger::current_target
and a new ObserverTrigger::original_target
field has been added.