Struct rerun::external::eframe::egui::PointerState
pub struct PointerState {Show 18 fields
time: f64,
latest_pos: Option<Pos2>,
interact_pos: Option<Pos2>,
delta: Vec2,
motion: Option<Vec2>,
velocity: Vec2,
direction: Vec2,
pos_history: History<Pos2>,
down: [bool; 5],
press_origin: Option<Pos2>,
press_start_time: Option<f64>,
pub(crate) has_moved_too_much_for_a_click: bool,
pub(crate) started_decidedly_dragging: bool,
last_click_time: f64,
last_last_click_time: f64,
last_move_time: f64,
pub(crate) pointer_events: Vec<PointerEvent>,
input_options: InputOptions,
}
Expand description
Mouse or touch state.
Fields§
§time: f64
§latest_pos: Option<Pos2>
§interact_pos: Option<Pos2>
§delta: Vec2
§motion: Option<Vec2>
§velocity: Vec2
§direction: Vec2
§pos_history: History<Pos2>
§down: [bool; 5]
§press_origin: Option<Pos2>
§press_start_time: Option<f64>
§has_moved_too_much_for_a_click: bool
§started_decidedly_dragging: bool
§last_click_time: f64
§last_last_click_time: f64
§last_move_time: f64
§pointer_events: Vec<PointerEvent>
§input_options: InputOptions
Implementations§
§impl PointerState
impl PointerState
pub fn motion(&self) -> Option<Vec2>
pub fn motion(&self) -> Option<Vec2>
How much the mouse moved since the last frame, in unspecified units. Represents the actual movement of the mouse, without acceleration or clamped by screen edges. May be unavailable on some integrations.
pub fn velocity(&self) -> Vec2
pub fn velocity(&self) -> Vec2
Current velocity of pointer.
This is smoothed over a few frames, but can be ZERO when frame-rate is bad.
pub fn direction(&self) -> Vec2
pub fn direction(&self) -> Vec2
Current direction of the pointer.
This is less sensitive to bad framerate than Self::velocity
.
pub fn press_origin(&self) -> Option<Pos2>
pub fn press_origin(&self) -> Option<Pos2>
Where did the current click/drag originate?
None
if no mouse button is down.
pub fn press_start_time(&self) -> Option<f64>
pub fn press_start_time(&self) -> Option<f64>
When did the current click/drag originate?
None
if no mouse button is down.
pub fn latest_pos(&self) -> Option<Pos2>
pub fn latest_pos(&self) -> Option<Pos2>
Latest reported pointer position.
When tapping a touch screen, this will be None
.
pub fn interact_pos(&self) -> Option<Pos2>
pub fn interact_pos(&self) -> Option<Pos2>
If you detect a click or drag and wants to know where it happened, use this.
Latest position of the mouse, but ignoring any Event::PointerGone
if there were interactions this frame.
When tapping a touch screen, this will be the location of the touch.
pub fn has_pointer(&self) -> bool
pub fn has_pointer(&self) -> bool
Do we have a pointer?
false
if the mouse is not over the egui area, or if no touches are down on touch screens.
pub fn is_still(&self) -> bool
pub fn is_still(&self) -> bool
Is the pointer currently still?
This is smoothed so a few frames of stillness is required before this returns true
.
pub fn is_moving(&self) -> bool
pub fn is_moving(&self) -> bool
Is the pointer currently moving?
This is smoothed so a few frames of stillness is required before this returns false
.
pub fn time_since_last_movement(&self) -> f32
pub fn time_since_last_movement(&self) -> f32
How long has it been (in seconds) since the pointer was last moved?
pub fn time_since_last_click(&self) -> f32
pub fn time_since_last_click(&self) -> f32
How long has it been (in seconds) since the pointer was clicked?
pub fn any_pressed(&self) -> bool
pub fn any_pressed(&self) -> bool
Was any pointer button pressed (!down -> down
) this frame?
This can sometimes return true
even if any_down() == false
because a press can be shorted than one frame.
pub fn any_released(&self) -> bool
pub fn any_released(&self) -> bool
Was any pointer button released (down -> !down
) this frame?
Was the button given pressed this frame?
Was the button given released this frame?
pub fn primary_pressed(&self) -> bool
pub fn primary_pressed(&self) -> bool
Was the primary button pressed this frame?
pub fn secondary_pressed(&self) -> bool
pub fn secondary_pressed(&self) -> bool
Was the secondary button pressed this frame?
pub fn primary_released(&self) -> bool
pub fn primary_released(&self) -> bool
Was the primary button released this frame?
pub fn secondary_released(&self) -> bool
pub fn secondary_released(&self) -> bool
Was the secondary button released this frame?
Was the given pointer button given clicked this frame?
Returns true on double- and triple- clicks too.
Was the button given double clicked this frame?
Was the button given triple clicked this frame?
pub fn primary_clicked(&self) -> bool
pub fn primary_clicked(&self) -> bool
Was the primary button clicked this frame?
pub fn secondary_clicked(&self) -> bool
pub fn secondary_clicked(&self) -> bool
Was the secondary button clicked this frame?
Is this button currently down?
If the pointer button is down, will it register as a click when released?
See also Self::is_decidedly_dragging
.
pub fn is_decidedly_dragging(&self) -> bool
pub fn is_decidedly_dragging(&self) -> bool
Just because the mouse is down doesn’t mean we are dragging. We could be at the start of a click. But if the mouse is down long enough, or has moved far enough, then we consider it a drag.
This function can return true on the same frame the drag is released, but NOT on the first frame it was started.
See also Self::could_any_button_be_click
.
pub fn primary_down(&self) -> bool
pub fn primary_down(&self) -> bool
Is the primary button currently down?
pub fn secondary_down(&self) -> bool
pub fn secondary_down(&self) -> bool
Is the secondary button currently down?
pub fn middle_down(&self) -> bool
pub fn middle_down(&self) -> bool
Is the middle button currently down?
§impl PointerState
impl PointerState
Trait Implementations§
§impl Clone for PointerState
impl Clone for PointerState
§fn clone(&self) -> PointerState
fn clone(&self) -> PointerState
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for PointerState
impl Debug for PointerState
§impl Default for PointerState
impl Default for PointerState
§fn default() -> PointerState
fn default() -> PointerState
§impl<'de> Deserialize<'de> for PointerState
impl<'de> Deserialize<'de> for PointerState
§fn deserialize<__D>(
__deserializer: __D
) -> Result<PointerState, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<PointerState, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl Serialize for PointerState
impl Serialize for PointerState
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for PointerState
impl RefUnwindSafe for PointerState
impl Send for PointerState
impl Sync for PointerState
impl Unpin for PointerState
impl UnwindSafe for PointerState
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request