Panda3D
Public Member Functions | Static Public Member Functions | Public Attributes | 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 ()
 
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)
 
- Public Member Functions inherited from BulletConstraint
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)
 
BulletRigidBodyNodeget_rigid_body_a ()
 
BulletRigidBodyNodeget_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)
 
- 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)=default
 
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...
 
TypedObjectoperator= (const TypedObject &copy)=default
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 
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 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...
 
WeakReferenceListweak_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 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 ()
 

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
 
- Public Attributes inherited from BulletConstraint
 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
 
- Public Attributes inherited from TypedObject
 get_type
 
- Public Attributes inherited from ReferenceCount
 get_ref_count
 Returns the current reference count. More...
 

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 31 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 
)
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.

◆ 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 
)
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.

◆ BulletHingeConstraint() [3/4]

BulletHingeConstraint::BulletHingeConstraint ( const BulletRigidBodyNode node_a,
const TransformState ts_a,
bool  use_frame_a = false 
)
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.

◆ 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 
)
explicit

Constructs a hinge constraint which connects two rigid bodies.

Definition at line 42 of file bulletHingeConstraint.cxx.

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

◆ set_axis()

void BulletHingeConstraint::set_axis ( const LVector3 &  axis)

Sets the hinge's rotation axis in world coordinates.

Definition at line 148 of file bulletHingeConstraint.cxx.

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

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

Member Data Documentation

◆ get_hinge_angle

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.

◆ get_lower_limit

PN_stdfloat BulletHingeConstraint::get_lower_limit

Returns the lower angular limit in degrees.

Definition at line 76 of file bulletHingeConstraint.h.

◆ get_upper_limit

PN_stdfloat BulletHingeConstraint::get_upper_limit

Returns the upper angular limit in degrees.

Definition at line 77 of file bulletHingeConstraint.h.


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