The hinge constraint lets two bodies rotate around a given axis while adhering to specified limits. More...
#include "bulletHingeConstraint.h"
Public Member Functions | |
BulletHingeConstraint (const BulletRigidBodyNode *node_a, const LPoint3 &pivot_a, const LVector3 &axis_a, bool use_frame_a=false) | |
Creates a hinge constraint in the same way as the other constructor, but uses the world as second body so that node_a is fixed to some point in mid- air for example. More... | |
BulletHingeConstraint (const BulletRigidBodyNode *node_a, const BulletRigidBodyNode *node_b, const LPoint3 &pivot_a, const LPoint3 &pivot_b, const LVector3 &axis_a, const LVector3 &axis_b, bool use_frame_a=false) | |
Creates a hinge connecting node_a to node_b. More... | |
BulletHingeConstraint (const BulletRigidBodyNode *node_a, const TransformState *ts_a, bool use_frame_a=false) | |
Creates a hinge constraint which connects one rigid body with some fixe dpoint in the world. More... | |
BulletHingeConstraint (const BulletRigidBodyNode *node_a, const BulletRigidBodyNode *node_b, const TransformState *ts_a, const TransformState *ts_b, bool use_frame_a=false) | |
Constructs a hinge constraint which connects two rigid bodies. More... | |
CPT (TransformState) get_frame_a() const | |
CPT (TransformState) get_frame_b() const | |
void | enable_angular_motor (bool enable, PN_stdfloat target_velocity, PN_stdfloat max_impulse) |
Applies an impulse to the constraint so that the angle changes at target_velocity where max_impulse is the maximum impulse that is used for achieving the specified velocity. More... | |
void | enable_motor (bool enable) |
virtual TypeHandle | force_init_type () |
bool | get_angular_only () const |
PN_stdfloat | get_hinge_angle () |
PN_stdfloat | get_lower_limit () const |
virtual TypeHandle | get_type () const |
PN_stdfloat | get_upper_limit () const |
virtual btTypedConstraint * | ptr () const |
void | set_angular_only (bool value) |
void | set_axis (const LVector3 &axis) |
Sets the hinge's rotation axis in world coordinates. More... | |
void | set_frames (const TransformState *ts_a, const TransformState *ts_b) |
void | set_limit (PN_stdfloat low, PN_stdfloat high, PN_stdfloat softness=0.9f, PN_stdfloat bias=0.3f, PN_stdfloat relaxation=1.0f) |
Sets the lower and upper rotational limits in degrees. More... | |
void | set_max_motor_impulse (PN_stdfloat max_impulse) |
Sets the maximum impulse used to achieve the velocity set in enable_angular_motor. More... | |
void | set_motor_target (const LQuaternion &quat, PN_stdfloat dt) |
void | set_motor_target (PN_stdfloat target_angle, PN_stdfloat dt) |
![]() | |
void | enable_feedback (bool value) |
PN_stdfloat | get_applied_impulse () const |
PN_stdfloat | get_breaking_threshold () const |
PN_stdfloat | get_debug_draw_size () |
PN_stdfloat | get_param (ConstraintParam num, int axis=-1) |
BulletRigidBodyNode * | get_rigid_body_a () |
BulletRigidBodyNode * | get_rigid_body_b () |
bool | is_enabled () const |
void | set_breaking_threshold (PN_stdfloat threshold) |
void | set_debug_draw_size (PN_stdfloat size) |
void | set_enabled (bool enabled) |
void | set_param (ConstraintParam num, PN_stdfloat value, int axis=-1) |
![]() | |
TypedReferenceCount (const TypedReferenceCount ©) | |
void | operator= (const TypedReferenceCount ©) |
![]() | |
TypedObject (const TypedObject ©)=default | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
int | get_best_parent_from_Set (const std::set< int > &) const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. More... | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. More... | |
TypedObject & | operator= (const TypedObject ©)=default |
![]() | |
int | get_ref_count () const |
WeakReferenceList * | get_weak_list () const |
Returns the WeakReferenceList associated with this ReferenceCount object. More... | |
bool | has_weak_list () const |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More... | |
void | local_object () |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More... | |
void | ref () const |
Explicitly increments the reference count. More... | |
bool | ref_if_nonzero () const |
Atomically increases the reference count of this object if it is not zero. More... | |
bool | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
bool | test_ref_count_nonzero () const |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
virtual bool | unref () const |
Explicitly decrements the reference count. More... | |
WeakReferenceList * | weak_ref () |
Adds the indicated PointerToVoid as a weak reference to this object. More... | |
void | weak_unref () |
Removes the indicated PointerToVoid as a weak reference to this object. More... | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. More... | |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
Public Attributes | |
get_angular_only | |
get_frame_a | |
get_frame_b | |
get_hinge_angle | |
Returns the angle between node_a and node_b in degrees. More... | |
get_lower_limit | |
Returns the lower angular limit in degrees. More... | |
get_upper_limit | |
Returns the upper angular limit in degrees. More... | |
set_angular_only | |
![]() | |
get_applied_impulse | |
get_breaking_threshold | |
Returns the applied impluse limit for breaking the constraint. More... | |
get_debug_draw_size | |
get_rigid_body_a | |
get_rigid_body_b | |
is_enabled | |
Returns TRUE if the constraint is enabled. More... | |
set_breaking_threshold | |
Sets the applied impulse limit for breaking the constraint. More... | |
set_debug_draw_size | |
set_enabled | |
![]() | |
get_type | |
![]() | |
get_ref_count | |
Returns the current reference count. More... | |
Additional Inherited Members | |
![]() | |
enum | ConstraintParam { CP_erp = 1, CP_stop_erp, CP_cfm, CP_stop_cfm } |
The hinge constraint lets two bodies rotate around a given axis while adhering to specified limits.
It's motor can apply angular force to them.
Definition at line 31 of file bulletHingeConstraint.h.
|
explicit |
Creates a hinge constraint in the same way as the other constructor, but uses the world as second body so that node_a is fixed to some point in mid- air for example.
Definition at line 63 of file bulletHingeConstraint.cxx.
|
explicit |
Creates a hinge connecting node_a to node_b.
The pivot point is the point at which the body is fixed to the constraint. In other words: It specifies where on each body the rotation axis should be. This axis is specified using axis_a and axis_b. Remember, everything is specified in the bodies own coordinate system!
Definition at line 83 of file bulletHingeConstraint.cxx.
|
explicit |
Creates a hinge constraint which connects one rigid body with some fixe dpoint in the world.
Definition at line 28 of file bulletHingeConstraint.cxx.
|
explicit |
Constructs a hinge constraint which connects two rigid bodies.
Definition at line 42 of file bulletHingeConstraint.cxx.
void BulletHingeConstraint::enable_angular_motor | ( | bool | enable, |
PN_stdfloat | target_velocity, | ||
PN_stdfloat | max_impulse | ||
) |
Applies an impulse to the constraint so that the angle changes at target_velocity where max_impulse is the maximum impulse that is used for achieving the specified velocity.
Note that the target_velocity is in radians/second, not degrees.
Definition at line 195 of file bulletHingeConstraint.cxx.
void BulletHingeConstraint::set_axis | ( | const LVector3 & | axis | ) |
Sets the hinge's rotation axis in world coordinates.
Definition at line 148 of file bulletHingeConstraint.cxx.
void BulletHingeConstraint::set_limit | ( | PN_stdfloat | low, |
PN_stdfloat | high, | ||
PN_stdfloat | softness = 0.9f , |
||
PN_stdfloat | bias = 0.3f , |
||
PN_stdfloat | relaxation = 1.0f |
||
) |
Sets the lower and upper rotational limits in degrees.
Definition at line 135 of file bulletHingeConstraint.cxx.
void BulletHingeConstraint::set_max_motor_impulse | ( | PN_stdfloat | max_impulse | ) |
Sets the maximum impulse used to achieve the velocity set in enable_angular_motor.
Definition at line 216 of file bulletHingeConstraint.cxx.
PN_stdfloat BulletHingeConstraint::get_hinge_angle |
Returns the angle between node_a and node_b in degrees.
Definition at line 75 of file bulletHingeConstraint.h.
PN_stdfloat BulletHingeConstraint::get_lower_limit |
Returns the lower angular limit in degrees.
Definition at line 76 of file bulletHingeConstraint.h.
PN_stdfloat BulletHingeConstraint::get_upper_limit |
Returns the upper angular limit in degrees.
Definition at line 77 of file bulletHingeConstraint.h.