15 #include "bulletSliderConstraint.h"
16 #include "bulletRigidBodyNode.h"
18 #include "deg_2_rad.h"
20 TypeHandle BulletSliderConstraint::_type_handle;
27 BulletSliderConstraint::
29 const TransformState *frame_a,
32 btRigidBody *ptr_a = btRigidBody::upcast(node_a->get_object());
33 btTransform trans_a = TransformState_to_btTrans(frame_a);
35 _constraint =
new btSliderConstraint(*ptr_a, trans_a, use_frame_a);
43 BulletSliderConstraint::
46 const TransformState *frame_a,
47 const TransformState *frame_b,
50 btRigidBody *ptr_a = btRigidBody::upcast(node_a->get_object());
51 btTransform trans_a = TransformState_to_btTrans(frame_a);
53 btRigidBody *ptr_b = btRigidBody::upcast(node_b->get_object());
54 btTransform trans_b = TransformState_to_btTrans(frame_b);
56 _constraint =
new btSliderConstraint(*ptr_a, *ptr_b, trans_a, trans_b, use_frame_a);
64 btTypedConstraint *BulletSliderConstraint::
75 PN_stdfloat BulletSliderConstraint::
76 get_lower_linear_limit()
const {
78 return (PN_stdfloat)_constraint->getLowerLinLimit();
86 PN_stdfloat BulletSliderConstraint::
87 get_upper_linear_limit()
const {
89 return (PN_stdfloat)_constraint->getUpperLinLimit();
97 PN_stdfloat BulletSliderConstraint::
98 get_lower_angular_limit()
const {
100 return rad_2_deg(_constraint->getLowerAngLimit());
108 PN_stdfloat BulletSliderConstraint::
109 get_upper_angular_limit()
const {
111 return rad_2_deg(_constraint->getUpperAngLimit());
119 void BulletSliderConstraint::
120 set_lower_linear_limit(PN_stdfloat value) {
122 _constraint->setLowerLinLimit((btScalar)value);
130 void BulletSliderConstraint::
131 set_upper_linear_limit(PN_stdfloat value) {
133 _constraint->setUpperLinLimit((btScalar)value);
141 void BulletSliderConstraint::
142 set_lower_angular_limit(PN_stdfloat value) {
144 _constraint->setLowerAngLimit((btScalar)deg_2_rad(value));
152 void BulletSliderConstraint::
153 set_upper_angular_limit(PN_stdfloat value) {
155 _constraint->setUpperAngLimit((btScalar)deg_2_rad(value));
163 PN_stdfloat BulletSliderConstraint::
164 get_linear_pos()
const {
166 return (PN_stdfloat)_constraint->getLinearPos();
174 PN_stdfloat BulletSliderConstraint::
175 get_angular_pos()
const {
177 return (PN_stdfloat)_constraint->getAngularPos();
185 void BulletSliderConstraint::
186 set_powered_linear_motor(
bool on) {
188 _constraint->setPoweredLinMotor(on);
196 void BulletSliderConstraint::
197 set_target_linear_motor_velocity(PN_stdfloat target_velocity) {
199 _constraint->setTargetLinMotorVelocity((btScalar)target_velocity);
207 void BulletSliderConstraint::
208 set_max_linear_motor_force(PN_stdfloat max_force) {
210 _constraint->setMaxLinMotorForce((btScalar)max_force);
218 bool BulletSliderConstraint::
219 get_powered_linear_motor()
const {
221 return _constraint->getPoweredLinMotor();
229 PN_stdfloat BulletSliderConstraint::
230 get_target_linear_motor_velocity()
const {
232 return (PN_stdfloat)_constraint->getTargetLinMotorVelocity();
240 PN_stdfloat BulletSliderConstraint::
241 get_max_linear_motor_force()
const {
243 return (PN_stdfloat)_constraint->getMaxLinMotorForce();
251 void BulletSliderConstraint::
252 set_powered_angular_motor(
bool on) {
254 _constraint->setPoweredAngMotor(on);
262 void BulletSliderConstraint::
263 set_target_angular_motor_velocity(PN_stdfloat target_velocity) {
265 _constraint->setTargetAngMotorVelocity((btScalar)target_velocity);
273 void BulletSliderConstraint::
274 set_max_angular_motor_force(PN_stdfloat max_force) {
276 _constraint->setMaxAngMotorForce((btScalar)max_force);
284 bool BulletSliderConstraint::
285 get_powered_angular_motor()
const {
287 return _constraint->getPoweredAngMotor();
295 PN_stdfloat BulletSliderConstraint::
296 get_target_angular_motor_velocity()
const {
298 return (PN_stdfloat)_constraint->getTargetAngMotorVelocity();
306 PN_stdfloat BulletSliderConstraint::
307 get_max_angular_motor_force()
const {
309 return (PN_stdfloat)_constraint->getMaxAngMotorForce();
317 void BulletSliderConstraint::
318 set_frames(
const TransformState *ts_a,
const TransformState *ts_b) {
320 btTransform frame_a = TransformState_to_btTrans(ts_a);
321 btTransform frame_b = TransformState_to_btTrans(ts_b);
323 _constraint->setFrames(frame_a, frame_b);
TypeHandle is the identifier used to differentiate C++ class types.