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. It's motor can apply angular force to them. More...

Inheritance diagram for BulletHingeConstraint:
BulletConstraint TypedReferenceCount TypedObject ReferenceCount MemoryBase MemoryBase

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. 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! 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 getDebugDrawSize ()
 
float getParam (BulletConstraint::ConstraintParam num, int axis)
 
BulletRigidBodyNode getRigidBodyA ()
 
BulletRigidBodyNode getRigidBodyB ()
 
bool isEnabled ()
 Returns TRUE if the constraint is enabled. More...
 
float setBreakingThreshold ()
 Returns the applied impluse limit for breaking the constraint. More...
 
 setBreakingThreshold (float threshold)
 Sets the applied impulse limit for breaking the constraint. If the limit is exceeded the constraint will be disabled. Disabled constraints are not removed from the world, and can be re-enabled. More...
 
 setDebugDrawSize (float size)
 
 setEnabled (bool enabled)
 
 setParam (BulletConstraint::ConstraintParam num, float value, int axis)
 
- Public Member Functions inherited from TypedObject
TypeHandle getType ()
 Derived classes should override this function to return get_class_type(). More...
 
int getTypeIndex ()
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. This is equivalent to get_type().get_index(). 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. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. More...
 
bool testRefCountIntegrity ()
 Does some easy checks to make sure that the reference count isn't completely bogus. Returns true if ok, false otherwise. More...
 
bool testRefCountNonzero ()
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. Returns true if ok, false otherwise. More...
 
bool unref ()
 Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic.) However, see the helper function unref_delete(). 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 ()
 

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 
)