Panda3D
Public Member Functions | Static Public Member Functions | List of all members
BulletHingeConstraint Class Reference

The hinge constraint lets two bodies rotate around a given axis while adhering to specified limits. More...

#include "bulletHingeConstraint.h"

Inheritance diagram for BulletHingeConstraint:
BulletConstraint TypedReferenceCount TypedObject ReferenceCount MemoryBase MemoryBase

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 ()
 Returns the angle between node_a and node_b in degrees. More...
 
PN_stdfloat get_lower_limit () const
 Returns the lower angular limit in degrees. More...
 
virtual TypeHandle get_type () const
 
PN_stdfloat get_upper_limit () const
 Returns the upper angular limit in degrees. More...
 
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)
 
- Public Member Functions inherited from BulletConstraint
void enable_feedback (bool value)
 
PN_stdfloat get_applied_impulse () const
 
PN_stdfloat get_debug_draw_size ()
 
PN_stdfloat get_param (ConstraintParam num, int axis=-1)
 
BulletRigidBodyNodeget_rigid_body_a ()
 
BulletRigidBodyNodeget_rigid_body_b ()
 
bool is_enabled () const
 Returns TRUE if the constraint is enabled. More...
 
void set_breaking_threshold (PN_stdfloat threshold)
 Sets the applied impulse limit for breaking the constraint. More...
 
PN_stdfloat set_breaking_threshold () const
 Returns the applied impluse limit for breaking the constraint. More...
 
void set_debug_draw_size (PN_stdfloat size)
 
void set_enabled (bool enabled)
 
void set_param (ConstraintParam num, PN_stdfloat value, int axis=-1)
 
- Public Member Functions inherited from TypedReferenceCount
 TypedReferenceCount (const TypedReferenceCount &copy)
 
void operator= (const TypedReferenceCount &copy)
 
- Public Member Functions inherited from TypedObject
 TypedObject (const TypedObject &copy)
 
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
const TypedObjectas_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...
 
void operator= (const TypedObject &copy)
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 Returns the current reference count. More...
 
WeakReferenceListget_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 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...
 
void weak_ref (WeakPointerToVoid *ptv)
 Adds the indicated PointerToVoid as a weak reference to this object. More...
 
void weak_unref (WeakPointerToVoid *ptv)
 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 Public Member Functions inherited from BulletConstraint
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedObject
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 Public Member Functions inherited from ReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 

Additional Inherited Members

- Public Types inherited from BulletConstraint
enum  ConstraintParam { CP_erp = 1, CP_stop_erp, CP_cfm, CP_stop_cfm }
 

Detailed Description

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 34 of file bulletHingeConstraint.h.

Constructor & Destructor Documentation

◆ BulletHingeConstraint() [1/4]

BulletHingeConstraint::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.

Definition at line 70 of file bulletHingeConstraint.cxx.

Referenced by BulletHingeConstraint().

◆ BulletHingeConstraint() [2/4]

BulletHingeConstraint::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.

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 94 of file bulletHingeConstraint.cxx.

References set_limit().

◆ BulletHingeConstraint() [3/4]

BulletHingeConstraint::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.

Definition at line 29 of file bulletHingeConstraint.cxx.

References BulletHingeConstraint().

◆ BulletHingeConstraint() [4/4]

BulletHingeConstraint::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.

Definition at line 46 of file bulletHingeConstraint.cxx.

References BulletHingeConstraint().

Member Function Documentation

◆ enable_angular_motor()

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 222 of file bulletHingeConstraint.cxx.

References set_max_motor_impulse().

Referenced by get_hinge_angle().

◆ get_hinge_angle()

PN_stdfloat BulletHingeConstraint::get_hinge_angle ( )

Returns the angle between node_a and node_b in degrees.

Definition at line 205 of file bulletHingeConstraint.cxx.

References enable_angular_motor().

Referenced by get_upper_limit().

◆ get_lower_limit()

PN_stdfloat BulletHingeConstraint::get_lower_limit ( ) const

Returns the lower angular limit in degrees.

Definition at line 182 of file bulletHingeConstraint.cxx.

References get_upper_limit().

Referenced by set_axis().

◆ get_upper_limit()

PN_stdfloat BulletHingeConstraint::get_upper_limit ( ) const

Returns the upper angular limit in degrees.

Definition at line 193 of file bulletHingeConstraint.cxx.

References get_hinge_angle().

Referenced by get_lower_limit().

◆ set_axis()

void BulletHingeConstraint::set_axis ( const LVector3 axis)

Sets the hinge's rotation axis in world coordinates.

Definition at line 168 of file bulletHingeConstraint.cxx.

References get_lower_limit(), and LVecBase3f::is_nan().

Referenced by set_limit().

◆ set_limit()

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 153 of file bulletHingeConstraint.cxx.

References set_axis().

Referenced by BulletHingeConstraint().

◆ set_max_motor_impulse()

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 245 of file bulletHingeConstraint.cxx.

Referenced by enable_angular_motor().


The documentation for this class was generated from the following files: