Expand description
This module defines a stateful set of interaction events driven by the PointerInput
stream
and the hover state of each Pointer.
§Usage
To receive events from this module, you must use an Observer
or MessageReader
with Pointer<E>
events.
The simplest example, registering a callback when an entity is hovered over by a pointer, looks like this:
world.spawn_empty()
.observe(|event: On<Pointer<Over>>| {
println!("I am being hovered over");
});
Observers give us three important properties:
- They allow for attaching event handlers to specific entities,
- they allow events to bubble up the entity hierarchy,
- and they allow events of different types to be called in a specific order.
The order in which interaction events are received is extremely important, and you can read more
about it on the docs for the dispatcher system: pointer_events
. This system runs in
PreUpdate
in PickingSystems::Hover
. All pointer-event
observers resolve during the sync point between pointer_events
and
update_interactions
.
§Events Types
The events this module defines fall into a few broad categories:
- Hovering and movement:
Over
,Move
, andOut
. - Clicking and pressing:
Press
,Release
, andClick
. - Dragging and dropping:
DragStart
,Drag
,DragEnd
,DragEnter
,DragOver
,DragDrop
,DragLeave
.
When received by an observer, these events will always be wrapped by the Pointer
type, which contains
general metadata about the pointer event.
Structs§
- Cancel
- Fires when a pointer is canceled, and its current interaction state is dropped.
- Click
- Fires when a pointer sends a pointer pressed event followed by a pointer released event, with the same target entity for both events.
- Drag
- Fires while the target entity is being dragged.
- Drag
Drop - Fires when a pointer drops the
dropped
entity onto the target entity. - DragEnd
- Fires when a pointer is dragging the target entity and a pointer released event is received.
- Drag
Enter - Fires when a pointer dragging the
dragged
entity enters the target entity. - Drag
Entry - Dragging state.
- Drag
Leave - Fires when a pointer dragging the
dragged
entity leaves the target entity. - Drag
Over - Fires while the
dragged
entity is being dragged over the target entity. - Drag
Start - Fires when the target entity receives a pointer pressed event followed by a pointer move event.
- Move
- Fires while a pointer is moving over the target entity.
- Out
- Fires when a pointer crosses out of the bounds of the target entity.
- Over
- Fires when a pointer crosses into the bounds of the target entity.
- Picking
Message Writers - A helper system param for accessing the picking event writers.
- Pointer
- Stores the common data needed for all pointer events.
- Pointer
Button State - An entry in the cache that drives the
pointer_events
system, storing additional data about pointer button presses. - Pointer
State - State for all pointers.
- Pointer
Traversal - A traversal query (i.e. it implements
Traversal
) intended for use withPointer
events. - Pointer
Traversal Item - Automatically generated
WorldQuery
item type forPointerTraversal
, returned when iterating over query results. - Press
- Fires when a pointer button is pressed over the target entity.
- Release
- Fires when a pointer button is released over the target entity.
- Scroll
- Fires while a pointer is scrolling over the target entity.
Functions§
- pointer_
events - Dispatches interaction events to the target entities.