pub struct Selection {
pub entities: HashSet<Entity>,
pub last_pick: Option<PickPoint>,
}Expand description
World-global selection state — current entity set plus last hit point.
Insert via World::insert_resource before
any system that reads it. The TS helper emits both single-click and marquee
events; both flow into apply_pick /
apply_pick_rect.
Fields§
§entities: HashSet<Entity>Currently selected entities.
last_pick: Option<PickPoint>World-space point of the most recent successful click pick, if any.
Implementations§
Source§impl Selection
impl Selection
pub fn new() -> Self
Sourcepub fn apply_pick(
&mut self,
entity: Option<Entity>,
point: Option<PickPoint>,
modifiers: PickModifiers,
)
pub fn apply_pick( &mut self, entity: Option<Entity>, point: Option<PickPoint>, modifiers: PickModifiers, )
Apply a single-click pick.
- No modifier: replace selection with
entity(or clear ifNone). - Shift: toggle (add if absent, remove if present). Clicks on empty space are no-ops to avoid accidental clears mid-shift.
- Ctrl: subtract. Clicks on empty space are no-ops.
- Other modifier combinations: same as no-modifier on a hit; no-op on a miss.
last_pick is updated whenever point is provided, regardless of
modifier — game code may want the cursor position even on a clear.
Sourcepub fn apply_pick_rect<I>(&mut self, entities: I, modifiers: PickModifiers)where
I: IntoIterator<Item = Entity>,
pub fn apply_pick_rect<I>(&mut self, entities: I, modifiers: PickModifiers)where
I: IntoIterator<Item = Entity>,
Apply a marquee pick.
- No modifier: replace selection with
entities. - Shift only: add
entitiesto selection. - Ctrl only: remove
entitiesfrom selection. - Alt only: keep only entities present in both the current selection
and
entities(set intersection). - Other modifier combinations (Shift+Ctrl, Shift+Alt, Meta, …): same as no-modifier (replace).
Dispatch is on the full modifier bitmask — mirroring
apply_pick — so that a multi-modifier marquee
(e.g. a user holding Shift+Ctrl during a drag) falls through to the
documented replace branch instead of being absorbed by the first
matching single-modifier rule.