21BulletTranslationalLimitMotor::
22BulletTranslationalLimitMotor(btTranslationalLimitMotor &motor)
30BulletTranslationalLimitMotor::
32 : _motor(copy._motor) {
39bool BulletTranslationalLimitMotor::
40is_limited(
int axis)
const {
43 nassertr((0 <= axis) && (axis <= 2),
false);
44 return _motor.isLimited(axis);
50void BulletTranslationalLimitMotor::
51set_motor_enabled(
int axis,
bool enabled) {
54 nassertv((0 <= axis) && (axis <= 2));
55 _motor.m_enableMotor[axis] = enabled;
61bool BulletTranslationalLimitMotor::
62get_motor_enabled(
int axis)
const {
65 nassertr((0 <= axis) && (axis <= 2),
false);
66 return _motor.m_enableMotor[axis];
73void BulletTranslationalLimitMotor::
74set_low_limit(
const LVecBase3 &limit) {
77 nassertv(!limit.is_nan());
78 _motor.m_lowerLimit = LVecBase3_to_btVector3(limit);
84void BulletTranslationalLimitMotor::
85set_high_limit(
const LVecBase3 &limit) {
88 nassertv(!limit.is_nan());
89 _motor.m_upperLimit = LVecBase3_to_btVector3(limit);
95void BulletTranslationalLimitMotor::
96set_target_velocity(
const LVecBase3 &velocity) {
99 nassertv(!velocity.is_nan());
100 _motor.m_targetVelocity = LVecBase3_to_btVector3(velocity);
106void BulletTranslationalLimitMotor::
107set_max_motor_force(
const LVecBase3 &force) {
110 nassertv(!force.is_nan());
111 _motor.m_maxMotorForce = LVecBase3_to_btVector3(force);
117void BulletTranslationalLimitMotor::
118set_damping(PN_stdfloat damping) {
121 _motor.m_damping = (btScalar)damping;
127void BulletTranslationalLimitMotor::
128set_softness(PN_stdfloat softness) {
131 _motor.m_limitSoftness = (btScalar)softness;
137void BulletTranslationalLimitMotor::
138set_restitution(PN_stdfloat restitution) {
141 _motor.m_restitution = (btScalar)restitution;
147void BulletTranslationalLimitMotor::
148set_normal_cfm(
const LVecBase3 &cfm) {
151 nassertv(!cfm.is_nan());
152 _motor.m_normalCFM = LVecBase3_to_btVector3(cfm);
158void BulletTranslationalLimitMotor::
159set_stop_cfm(
const LVecBase3 &cfm) {
162 nassertv(!cfm.is_nan());
163 _motor.m_stopCFM = LVecBase3_to_btVector3(cfm);
169void BulletTranslationalLimitMotor::
170set_stop_erp(
const LVecBase3 &erp) {
173 nassertv(!erp.is_nan());
174 _motor.m_stopERP = LVecBase3_to_btVector3(erp);
185 nassertr((0 <= axis) && (axis <= 2),
false);
186 return _motor.m_currentLimit[axis];
192LVector3 BulletTranslationalLimitMotor::
193get_current_error()
const {
196 return btVector3_to_LVector3(_motor.m_currentLimitError);
202LPoint3 BulletTranslationalLimitMotor::
203get_current_diff()
const {
206 return btVector3_to_LPoint3(_motor.m_currentLinearDiff);
212LVector3 BulletTranslationalLimitMotor::
213get_accumulated_impulse()
const {
216 return btVector3_to_LVector3(_motor.m_accumulatedImpulse);
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Rotation Limit structure for generic joints.
int get_current_limit(int axis) const
Retrieves the current value of angle: 0 = free, 1 = at low limit, 2 = at high limit.
Similar to MutexHolder, but for a light mutex.