19TypeHandle BulletGenericConstraint::_type_handle;
24BulletGenericConstraint::
29 btRigidBody *ptr_a = btRigidBody::upcast(node_a->get_object());
30 btTransform trans_a = TransformState_to_btTrans(frame_a);
32 _constraint =
new btGeneric6DofConstraint(*ptr_a, trans_a, use_frame_a);
38BulletGenericConstraint::
45 btRigidBody *ptr_a = btRigidBody::upcast(node_a->get_object());
46 btTransform trans_a = TransformState_to_btTrans(frame_a);
48 btRigidBody *ptr_b = btRigidBody::upcast(node_b->get_object());
49 btTransform trans_b = TransformState_to_btTrans(frame_b);
51 _constraint =
new btGeneric6DofConstraint(*ptr_a, *ptr_b, trans_a, trans_b, use_frame_a);
57btTypedConstraint *BulletGenericConstraint::
66LVector3 BulletGenericConstraint::
67get_axis(
int axis)
const {
70 nassertr(axis >= 0, LVector3::zero());
71 nassertr(axis <= 3, LVector3::zero());
73 _constraint->buildJacobian();
74 return btVector3_to_LVector3(_constraint->getAxis(axis));
80PN_stdfloat BulletGenericConstraint::
81get_pivot(
int axis)
const {
84 nassertr(axis >= 0, 0.0f);
85 nassertr(axis <= 3, 0.0f);
87 _constraint->buildJacobian();
88 return _constraint->getRelativePivotPosition(axis);
94PN_stdfloat BulletGenericConstraint::
95get_angle(
int axis)
const {
98 nassertr(axis >= 0, 0.0f);
99 nassertr(axis <= 3, 0.0f);
101 _constraint->buildJacobian();
102 return _constraint->getAngle(axis);
108void BulletGenericConstraint::
109set_linear_limit(
int axis, PN_stdfloat low, PN_stdfloat high) {
115 _constraint->buildJacobian();
116 _constraint->setLimit(axis, low, high);
122void BulletGenericConstraint::
123set_angular_limit(
int axis, PN_stdfloat low, PN_stdfloat high) {
129 low = deg_2_rad(low);
130 high = deg_2_rad(high);
132 _constraint->buildJacobian();
133 _constraint->setLimit(axis + 3, low, high);
143 return btTrans_to_TransformState(_constraint->getFrameOffsetA());
153 return btTrans_to_TransformState(_constraint->getFrameOffsetB());
160get_rotational_limit_motor(
int axis) {
170get_translational_limit_motor() {
179void BulletGenericConstraint::
183 btTransform frame_a = TransformState_to_btTrans(ts_a);
184 btTransform frame_b = TransformState_to_btTrans(ts_b);
186 _constraint->setFrames(frame_a, frame_b);
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Rotation Limit structure for generic joints.
Rotation Limit structure for generic joints.
Similar to MutexHolder, but for a light mutex.
TypeHandle is the identifier used to differentiate C++ class types.