Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/release-content/migration-guides/pointer_target.md
6592 views
---
title: Original target of `Pointer` picking events is now stored on observers pull_requests: [19663]
---

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_entity() 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>(event: On<E>, event_writer: EventWriter<TransformedEntityEvent<E>>){ if event.entity() == event.original_entity() { event_writer.send(TransformedEntityEvent { event: event.event().clone(), entity: event.entity(), ); } }

Additionally, the ObserverTrigger::target field has been renamed to ObserverTrigger::entity and a new ObserverTrigger::original_entity field has been added.