Struct oxygengine_physics_2d::prelude::joint::MouseConstraint
source · pub struct MouseConstraint<N, Handle>where
N: RealField + Copy,
Handle: BodyHandle,{ /* private fields */ }
Expand description
A spring-like constraint to be used to drag a body part with the mouse.
Implementations§
source§impl<N, Handle> MouseConstraint<N, Handle>where
N: RealField + Copy,
Handle: BodyHandle,
impl<N, Handle> MouseConstraint<N, Handle>where N: RealField + Copy, Handle: BodyHandle,
sourcepub fn new(
b1: BodyPartHandle<Handle>,
b2: BodyPartHandle<Handle>,
anchor1: OPoint<N, Const<2>>,
anchor2: OPoint<N, Const<2>>,
limit: N
) -> MouseConstraint<N, Handle>
pub fn new( b1: BodyPartHandle<Handle>, b2: BodyPartHandle<Handle>, anchor1: OPoint<N, Const<2>>, anchor2: OPoint<N, Const<2>>, limit: N ) -> MouseConstraint<N, Handle>
Initialize a mouse constraint between two bodies.getPartHandle
Typically, b1
will be the ground and the anchor the position of the mouse.
Both anchors are expressed in the local coordinate frames of the corresponding body parts.
sourcepub fn set_anchor_1(&mut self, anchor1: OPoint<N, Const<2>>)
pub fn set_anchor_1(&mut self, anchor1: OPoint<N, Const<2>>)
Change the first anchor, expressed in the local space of the first body part.
sourcepub fn set_anchor_2(&mut self, anchor2: OPoint<N, Const<2>>)
pub fn set_anchor_2(&mut self, anchor2: OPoint<N, Const<2>>)
Change the first anchor, expressed in the local space of the second body part.
Trait Implementations§
source§impl<N, Handle> JointConstraint<N, Handle> for MouseConstraint<N, Handle>where
N: RealField + Copy,
Handle: BodyHandle,
impl<N, Handle> JointConstraint<N, Handle> for MouseConstraint<N, Handle>where N: RealField + Copy, Handle: BodyHandle,
source§fn num_velocity_constraints(&self) -> usize
fn num_velocity_constraints(&self) -> usize
The maximum number of velocity constraints generated by this joint.
source§fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
The two body parts affected by this joint.
source§fn velocity_constraints(
&mut self,
parameters: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &Matrix<N, Dynamic, Const<1>, VecStorage<N, Dynamic, Const<1>>>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn velocity_constraints( &mut self, parameters: &IntegrationParameters<N>, bodies: &dyn BodySet<N, Handle = Handle>, ext_vels: &Matrix<N, Dynamic, Const<1>, VecStorage<N, Dynamic, Const<1>>>, ground_j_id: &mut usize, j_id: &mut usize, jacobians: &mut [N], constraints: &mut LinearConstraints<N, usize> )
Initialize and retrieve all the constraints appied to the bodies attached to this joint.
source§fn cache_impulses(&mut self, _: &LinearConstraints<N, usize>, _: N)
fn cache_impulses(&mut self, _: &LinearConstraints<N, usize>, _: N)
Called after velocity constraint resolution, allows the joint to keep a cache of impulses generated for each constraint.
source§impl<N, Handle> NonlinearConstraintGenerator<N, Handle> for MouseConstraint<N, Handle>where
N: RealField + Copy,
Handle: BodyHandle,
impl<N, Handle> NonlinearConstraintGenerator<N, Handle> for MouseConstraint<N, Handle>where N: RealField + Copy, Handle: BodyHandle,
source§fn num_position_constraints(&self, _: &dyn BodySet<N, Handle = Handle>) -> usize
fn num_position_constraints(&self, _: &dyn BodySet<N, Handle = Handle>) -> usize
Maximum of non-linear position constraint this generator needs to output.
source§fn position_constraint(
&self,
_: &IntegrationParameters<N>,
_: usize,
_: &mut dyn BodySet<N, Handle = Handle>,
_: &mut [N]
) -> Option<GenericNonlinearConstraint<N, Handle>>
fn position_constraint( &self, _: &IntegrationParameters<N>, _: usize, _: &mut dyn BodySet<N, Handle = Handle>, _: &mut [N] ) -> Option<GenericNonlinearConstraint<N, Handle>>
Generate the
i
-th position constraint of this generator.Auto Trait Implementations§
impl<N, Handle> RefUnwindSafe for MouseConstraint<N, Handle>where Handle: RefUnwindSafe, N: RefUnwindSafe,
impl<N, Handle> Send for MouseConstraint<N, Handle>
impl<N, Handle> Sync for MouseConstraint<N, Handle>
impl<N, Handle> Unpin for MouseConstraint<N, Handle>where Handle: Unpin, N: Unpin,
impl<N, Handle> UnwindSafe for MouseConstraint<N, Handle>where Handle: UnwindSafe, N: UnwindSafe,
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
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, 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
.§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Convert
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)
Convert
&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)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.