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)
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
sourceimpl<I: ObjectID> WorldOutcome<I>
impl<I: ObjectID> WorldOutcome<I>
sourcepub 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>>
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.
Trait Implementations
sourceimpl<ID: Clone + ObjectID> Clone for WorldOutcome<ID>
impl<ID: Clone + ObjectID> Clone for WorldOutcome<ID>
sourcefn clone(&self) -> WorldOutcome<ID>
fn clone(&self) -> WorldOutcome<ID>
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
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
fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
type Output = T
Should always be Self
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more