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

Inheritance diagram for BulletHingeConstraint:
BulletConstraint TypedReferenceCount TypedObject ReferenceCount

Public Member Functions

 __init__ (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)
 Creates a hinge connecting node_a to node_b. More...
 
 __init__ (const BulletRigidBodyNode node_a, const BulletRigidBodyNode node_b, const TransformState ts_a, const TransformState ts_b, bool use_frame_a)
 Constructs a hinge constraint which connects two rigid bodies. More...
 
 __init__ (const BulletRigidBodyNode node_a, const LPoint3 pivot_a, const LVector3 axis_a, bool use_frame_a)
 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...
 
 __init__ (const BulletRigidBodyNode node_a, const TransformState ts_a, bool use_frame_a)
 Creates a hinge constraint which connects one rigid body with some fixe dpoint in the world. More...
 
 enableAngularMotor (bool enable, float target_velocity, float 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...
 
 enableMotor (bool enable)
 
bool getAngularOnly ()
 
const TransformState getFrameA ()
 
const TransformState getFrameB ()
 
float getHingeAngle ()
 Returns the angle between node_a and node_b in degrees. More...
 
float getLowerLimit ()
 Returns the lower angular limit in degrees. More...
 
float getUpperLimit ()
 Returns the upper angular limit in degrees. More...
 
 setAngularOnly (bool value)
 
 setAxis (const LVector3 axis)
 Sets the hinge's rotation axis in world coordinates. More...
 
 setFrames (const TransformState ts_a, const TransformState ts_b)
 
 setLimit (float low, float high, float softness, float bias, float relaxation)
 Sets the lower and upper rotational limits in degrees. More...
 
 setMaxMotorImpulse (float max_impulse)
 Sets the maximum impulse used to achieve the velocity set in enable_angular_motor. More...
 
 setMotorTarget (const LQuaternion quat, float dt)
 
 setMotorTarget (float target_angle, float dt)
 
- Public Member Functions inherited from BulletConstraint
 enableFeedback (bool value)
 
float getAppliedImpulse ()
 
float getBreakingThreshold ()
 Returns the applied impluse limit for breaking the constraint. More...
 
float getDebugDrawSize ()
 
float getParam (BulletConstraint::ConstraintParam num, int axis)
 
BulletRigidBodyNode getRigidBodyA ()
 
BulletRigidBodyNode getRigidBodyB ()
 
bool isEnabled ()
 Returns TRUE if the constraint is enabled. More...
 
 setBreakingThreshold (float threshold)
 Sets the applied impulse limit for breaking the constraint. More...
 
 setDebugDrawSize (float size)
 
 setEnabled (bool enabled)
 
 setParam (BulletConstraint::ConstraintParam num, float value, int axis)
 
- Public Member Functions inherited from TypedObject
TypeHandle getType ()
 
int getTypeIndex ()
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
 
bool isExactType (TypeHandle handle)
 Returns true if the current object is the indicated type exactly. More...
 
bool isOfType (TypeHandle handle)
 Returns true if the current object is or derives from the indicated type. More...
 
- Public Member Functions inherited from ReferenceCount
int getRefCount ()
 Returns the current reference count. More...
 
 ref ()
 Explicitly increments the reference count. More...
 
bool testRefCountIntegrity ()
 Does some easy checks to make sure that the reference count isn't completely bogus. More...
 
bool testRefCountNonzero ()
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More...
 
bool unref ()
 Explicitly decrements the reference count. More...
 

Static Public Member Functions

static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from BulletConstraint
static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from TypedReferenceCount
static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from TypedObject
static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle getClassType ()
 

Public Attributes

bool angular_only
 
ConstPointerToTransformState frame_a
 
ConstPointerToTransformState frame_b
 
float hinge_angle
 Returns the angle between node_a and node_b in degrees. More...
 
float lower_limit
 Returns the lower angular limit in degrees. More...
 
float upper_limit
 Returns the upper angular limit in degrees. More...
 
- Public Attributes inherited from BulletConstraint
float applied_impulse
 
float breaking_threshold
 Returns the applied impluse limit for breaking the constraint. More...
 
float debug_draw_size
 
bool enabled
 Returns TRUE if the constraint is enabled. More...
 
BulletRigidBodyNode rigid_body_a
 
BulletRigidBodyNode rigid_body_b
 
- Public Attributes inherited from TypedObject
TypeHandle type
 Returns the TypeHandle representing this object's type. More...
 
- Public Attributes inherited from ReferenceCount
int ref_count
 The current reference count. More...
 

Additional Inherited Members

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

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.

Member Function Documentation

◆ __init__() [1/4]

__init__ ( 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 
)

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!

◆ __init__() [2/4]

__init__ ( const BulletRigidBodyNode  node_a,
const BulletRigidBodyNode  node_b,
const TransformState  ts_a,
const TransformState  ts_b,
bool  use_frame_a 
)

Constructs a hinge constraint which connects two rigid bodies.

◆ __init__() [3/4]

__init__ ( const BulletRigidBodyNode  node_a,
const LPoint3  pivot_a,
const LVector3  axis_a,
bool  use_frame_a 
)

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.

◆ __init__() [4/4]

__init__ ( const BulletRigidBodyNode  node_a,
const TransformState  ts_a,
bool  use_frame_a 
)

Creates a hinge constraint which connects one rigid body with some fixe dpoint in the world.

◆ enableAngularMotor()

enableAngularMotor ( bool  enable,
float  target_velocity,
float  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.

◆ enableMotor()

enableMotor ( bool  enable)

◆ getAngularOnly()

bool getAngularOnly ( )

◆ getClassType()

static TypeHandle getClassType ( )
static

◆ getFrameA()

const TransformState getFrameA ( )

◆ getFrameB()

const TransformState getFrameB ( )

◆ getHingeAngle()

float getHingeAngle ( )

Returns the angle between node_a and node_b in degrees.

◆ getLowerLimit()

float getLowerLimit ( )

Returns the lower angular limit in degrees.

◆ getUpperLimit()

float getUpperLimit ( )

Returns the upper angular limit in degrees.

◆ setAngularOnly()

setAngularOnly ( bool  value)

◆ setAxis()

setAxis ( const LVector3  axis)

Sets the hinge's rotation axis in world coordinates.

◆ setFrames()

setFrames ( const TransformState  ts_a,
const TransformState  ts_b 
)

◆ setLimit()

setLimit ( float  low,
float  high,
float  softness,
float  bias,
float  relaxation 
)

Sets the lower and upper rotational limits in degrees.

◆ setMaxMotorImpulse()

setMaxMotorImpulse ( float  max_impulse)

Sets the maximum impulse used to achieve the velocity set in enable_angular_motor.

◆ setMotorTarget() [1/2]

setMotorTarget ( const LQuaternion  quat,
float  dt 
)

◆ setMotorTarget() [2/2]

setMotorTarget ( float  target_angle,
float  dt 
)

Member Data Documentation

◆ angular_only

bool angular_only

◆ frame_a

ConstPointerToTransformState frame_a

◆ frame_b

ConstPointerToTransformState frame_b

◆ hinge_angle

float hinge_angle

Returns the angle between node_a and node_b in degrees.

◆ lower_limit

float lower_limit

Returns the lower angular limit in degrees.

◆ upper_limit

float upper_limit

Returns the upper angular limit in degrees.