Enum widgetry::mapspace::WorldOutcome [−][src]
pub enum WorldOutcome<ID: ObjectID> {
ClickedFreeSpace(Pt2D),
Dragging {
obj: ID,
dx: f64,
dy: f64,
cursor: Pt2D,
},
Keypress(&'static str, ID),
ClickedObject(ID),
HoverChanged(Option<ID>, Option<ID>),
Nothing,
}
Expand description
The result of a World
handling an event
Variants
ClickedFreeSpace(Pt2D)
Tuple Fields
0: Pt2D
A left click occurred while not hovering on any object
Dragging
An object is being dragged. The given offsets are relative to the previous dragging event. The current position of the cursor is included. If you’re dragging a large object, applying the offset will likely feel more natural than centering on the cursor.
Keypress(&'static str, ID)
While hovering on an object with a defined hotkey, that key was pressed.
ClickedObject(ID)
A hoverable object was clicked
HoverChanged(Option<ID>, Option<ID>)
The object being hovered on changed from (something before, to something after). Note this
transition may also occur outside of event
– such as during delete
or initialize_hover
.
TODO Bug in the map_editor: If you delete one object, then the caller does initialize_hover and we immediately wind up on another road beneath, we don’t detect this and start showing road points.
Nothing
Nothing interesting happened
Implementations
If the outcome references some ID, transform it to another type. This is useful when some component owns a World that contains a few different types of objects, some of which are managed by another component that only cares about its IDs.
pub fn maybe_map_id<O: ObjectID, F: Fn(I) -> Option<O>>(
self,
f: F
) -> Option<WorldOutcome<O>>
pub fn maybe_map_id<O: ObjectID, F: Fn(I) -> Option<O>>(
self,
f: F
) -> Option<WorldOutcome<O>>
Like map_id
, but the transformation may fail.
Trait Implementations
Auto Trait Implementations
impl<ID> RefUnwindSafe for WorldOutcome<ID> where
ID: RefUnwindSafe,
impl<ID> Send for WorldOutcome<ID> where
ID: Send,
impl<ID> Sync for WorldOutcome<ID> where
ID: Sync,
impl<ID> Unpin for WorldOutcome<ID> where
ID: Unpin,
impl<ID> UnwindSafe for WorldOutcome<ID> where
ID: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self