Bullet Collision Detection & Physics Library
btTypedConstraint.h
Go to the documentation of this file.
1 /*
2 Bullet Continuous Collision Detection and Physics Library
3 Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/
4 
5 This software is provided 'as-is', without any express or implied warranty.
6 In no event will the authors be held liable for any damages arising from the use of this software.
7 Permission is granted to anyone to use this software for any purpose,
8 including commercial applications, and to alter it and redistribute it freely,
9 subject to the following restrictions:
10 
11 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
12 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
13 3. This notice may not be removed or altered from any source distribution.
14 */
15 
16 #ifndef BT_TYPED_CONSTRAINT_H
17 #define BT_TYPED_CONSTRAINT_H
18 
19 #include "LinearMath/btScalar.h"
20 #include "btSolverConstraint.h"
22 
23 #ifdef BT_USE_DOUBLE_PRECISION
24 #define btTypedConstraintData2 btTypedConstraintDoubleData
25 #define btTypedConstraintDataName "btTypedConstraintDoubleData"
26 #else
27 #define btTypedConstraintData2 btTypedConstraintFloatData
28 #define btTypedConstraintDataName "btTypedConstraintFloatData"
29 #endif //BT_USE_DOUBLE_PRECISION
30 
31 class btSerializer;
32 
33 //Don't change any of the existing enum values, so add enum types at the end for serialization compatibility
35 {
47 };
48 
50 {
55 };
56 
57 #if 1
58 #define btAssertConstrParams(_par) btAssert(_par)
59 #else
60 #define btAssertConstrParams(_par)
61 #endif
62 
65 {
71 };
72 
76 {
78 
79  union {
82  };
83 
88 
90  {
91  btAssert(0);
92  (void)other;
93  return *this;
94  }
95 
96 protected:
102 
104  btScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact);
105 
106 public:
108 
109  virtual ~btTypedConstraint(){};
112 
114  {
115  int m_numConstraintRows, nub;
116  };
117 
118  static btRigidBody& getFixedBody();
119 
121  {
122  // integrator parameters: frames per second (1/stepsize), default error
123  // reduction parameter (0..1).
124  btScalar fps, erp;
125 
126  // for the first and second body, pointers to two (linear and angular)
127  // n*3 jacobian sub matrices, stored by rows. these matrices will have
128  // been initialized to 0 on entry. if the second body is zero then the
129  // J2xx pointers may be 0.
130  btScalar *m_J1linearAxis, *m_J1angularAxis, *m_J2linearAxis, *m_J2angularAxis;
131 
132  // elements to jump from one row to the next in J's
133  int rowskip;
134 
135  // right hand sides of the equation J*v = c + cfm * lambda. cfm is the
136  // "constraint force mixing" vector. c is set to zero on entry, cfm is
137  // set to a constant value (typically very small or zero) value on entry.
139 
140  // lo and hi limits for variables (set to -/+ infinity on entry).
141  btScalar *m_lowerLimit, *m_upperLimit;
142 
143  // number of solver iterations
145 
146  //damping of the velocity
148  };
149 
151  {
152  return m_overrideNumSolverIterations;
153  }
154 
157  void setOverrideNumSolverIterations(int overideNumIterations)
158  {
159  m_overrideNumSolverIterations = overideNumIterations;
160  }
161 
163  virtual void buildJacobian(){};
164 
166  virtual void setupSolverConstraint(btConstraintArray & ca, int solverBodyA, int solverBodyB, btScalar timeStep)
167  {
168  (void)ca;
169  (void)solverBodyA;
170  (void)solverBodyB;
171  (void)timeStep;
172  }
173 
175  virtual void getInfo1(btConstraintInfo1 * info) = 0;
176 
178  virtual void getInfo2(btConstraintInfo2 * info) = 0;
179 
181  void internalSetAppliedImpulse(btScalar appliedImpulse)
182  {
183  m_appliedImpulse = appliedImpulse;
184  }
187  {
188  return m_appliedImpulse;
189  }
190 
192  {
193  return m_breakingImpulseThreshold;
194  }
195 
197  {
198  m_breakingImpulseThreshold = threshold;
199  }
200 
201  bool isEnabled() const
202  {
203  return m_isEnabled;
204  }
205 
206  void setEnabled(bool enabled)
207  {
208  m_isEnabled = enabled;
209  }
210 
212  virtual void solveConstraintObsolete(btSolverBody& /*bodyA*/, btSolverBody& /*bodyB*/, btScalar /*timeStep*/){};
213 
214  const btRigidBody& getRigidBodyA() const
215  {
216  return m_rbA;
217  }
218  const btRigidBody& getRigidBodyB() const
219  {
220  return m_rbB;
221  }
222 
224  {
225  return m_rbA;
226  }
228  {
229  return m_rbB;
230  }
231 
233  {
234  return m_userConstraintType;
235  }
236 
237  void setUserConstraintType(int userConstraintType)
238  {
239  m_userConstraintType = userConstraintType;
240  };
241 
242  void setUserConstraintId(int uid)
243  {
244  m_userConstraintId = uid;
245  }
246 
248  {
249  return m_userConstraintId;
250  }
251 
252  void setUserConstraintPtr(void* ptr)
253  {
254  m_userConstraintPtr = ptr;
255  }
256 
258  {
259  return m_userConstraintPtr;
260  }
261 
262  void setJointFeedback(btJointFeedback * jointFeedback)
263  {
264  m_jointFeedback = jointFeedback;
265  }
266 
268  {
269  return m_jointFeedback;
270  }
271 
273  {
274  return m_jointFeedback;
275  }
276 
277  int getUid() const
278  {
279  return m_userConstraintId;
280  }
281 
282  bool needsFeedback() const
283  {
284  return m_needsFeedback;
285  }
286 
289  void enableFeedback(bool needsFeedback)
290  {
291  m_needsFeedback = needsFeedback;
292  }
293 
297  {
298  btAssert(m_needsFeedback);
299  return m_appliedImpulse;
300  }
301 
303  {
304  return btTypedConstraintType(m_objectType);
305  }
306 
307  void setDbgDrawSize(btScalar dbgDrawSize)
308  {
309  m_dbgDrawSize = dbgDrawSize;
310  }
312  {
313  return m_dbgDrawSize;
314  }
315 
318  virtual void setParam(int num, btScalar value, int axis = -1) = 0;
319 
321  virtual btScalar getParam(int num, int axis = -1) const = 0;
322 
323  virtual int calculateSerializeBufferSize() const;
324 
326  virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
327 };
328 
329 // returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits
330 // all arguments should be normalized angles (i.e. in range [-SIMD_PI, SIMD_PI])
331 SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)
332 {
333  if (angleLowerLimitInRadians >= angleUpperLimitInRadians)
334  {
335  return angleInRadians;
336  }
337  else if (angleInRadians < angleLowerLimitInRadians)
338  {
339  btScalar diffLo = btFabs(btNormalizeAngle(angleLowerLimitInRadians - angleInRadians));
340  btScalar diffHi = btFabs(btNormalizeAngle(angleUpperLimitInRadians - angleInRadians));
341  return (diffLo < diffHi) ? angleInRadians : (angleInRadians + SIMD_2_PI);
342  }
343  else if (angleInRadians > angleUpperLimitInRadians)
344  {
345  btScalar diffHi = btFabs(btNormalizeAngle(angleInRadians - angleUpperLimitInRadians));
346  btScalar diffLo = btFabs(btNormalizeAngle(angleInRadians - angleLowerLimitInRadians));
347  return (diffLo < diffHi) ? (angleInRadians - SIMD_2_PI) : angleInRadians;
348  }
349  else
350  {
351  return angleInRadians;
352  }
353 }
354 
355 // clang-format off
356 
359 {
362  char *m_name;
363 
368 
371 
374 
377 
378 };
379 
380 
381 
383 
384 #define BT_BACKWARDS_COMPATIBLE_SERIALIZATION
385 #ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION
388 {
391  char *m_name;
392 
397 
400 
403 
406 
407 };
408 #endif //BACKWARDS_COMPATIBLE
409 
411 {
414  char *m_name;
415 
420 
423 
426 
429  char padding[4];
430 
431 };
432 
433 // clang-format on
434 
436 {
437  return sizeof(btTypedConstraintData2);
438 }
439 
441 {
442 private:
443  btScalar
445  m_halfRange,
446  m_softness,
447  m_biasFactor,
449  m_correction,
450  m_sign;
451 
452  bool
454 
455 public:
458  : m_center(0.0f),
459  m_halfRange(-1.0f),
460  m_softness(0.9f),
461  m_biasFactor(0.3f),
462  m_relaxationFactor(1.0f),
463  m_correction(0.0f),
464  m_sign(0.0f),
465  m_solveLimit(false)
466  {
467  }
468 
472  void set(btScalar low, btScalar high, btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f);
473 
476  void test(const btScalar angle);
477 
479  inline btScalar getSoftness() const
480  {
481  return m_softness;
482  }
483 
485  inline btScalar getBiasFactor() const
486  {
487  return m_biasFactor;
488  }
489 
492  {
493  return m_relaxationFactor;
494  }
495 
497  inline btScalar getCorrection() const
498  {
499  return m_correction;
500  }
501 
503  inline btScalar getSign() const
504  {
505  return m_sign;
506  }
507 
509  inline btScalar getHalfRange() const
510  {
511  return m_halfRange;
512  }
513 
515  inline bool isLimit() const
516  {
517  return m_solveLimit;
518  }
519 
522  void fit(btScalar& angle) const;
523 
525  btScalar getError() const;
526 
527  btScalar getLow() const;
528 
529  btScalar getHigh() const;
530 };
531 
532 #endif //BT_TYPED_CONSTRAINT_H
btTypedConstraint::internalSetAppliedImpulse
void internalSetAppliedImpulse(btScalar appliedImpulse)
internal method used by the constraint solver, don't use them directly
Definition: btTypedConstraint.h:181
btTypedConstraint::btConstraintInfo2::m_damping
btScalar m_damping
Definition: btTypedConstraint.h:147
btSolverBody
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
Definition: btSolverBody.h:103
btTypedConstraintFloatData::m_objectType
int m_objectType
Definition: btTypedConstraint.h:364
BT_CONSTRAINT_CFM
Definition: btTypedConstraint.h:53
btTypedConstraint
TypedConstraint is the baseclass for Bullet constraints and vehicles.
Definition: btTypedConstraint.h:74
btTypedConstraintFloatData::m_name
char * m_name
Definition: btTypedConstraint.h:362
btTypedConstraint::getRigidBodyA
btRigidBody & getRigidBodyA()
Definition: btTypedConstraint.h:223
btTypedConstraint::getUserConstraintPtr
void * getUserConstraintPtr()
Definition: btTypedConstraint.h:257
btTypedConstraint::getJointFeedback
btJointFeedback * getJointFeedback()
Definition: btTypedConstraint.h:272
btTypedConstraint::setUserConstraintPtr
void setUserConstraintPtr(void *ptr)
Definition: btTypedConstraint.h:252
btTypedConstraintData::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:395
btRigidBody
The btRigidBody is the main class for rigid body objects.
Definition: btRigidBody.h:59
btAngularLimit::btAngularLimit
btAngularLimit()
Default constructor initializes limit as inactive, allowing free constraint movement.
Definition: btTypedConstraint.h:457
btTypedConstraintFloatData::m_dbgDrawSize
float m_dbgDrawSize
Definition: btTypedConstraint.h:370
btAngularLimit::test
void test(const btScalar angle)
Checks conastaint angle against limit.
Definition: btTypedConstraint.cpp:158
btTypedConstraintDoubleData::m_appliedImpulse
double m_appliedImpulse
Definition: btTypedConstraint.h:421
CONTACT_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:41
btTypedConstraintDoubleData::m_rbA
btRigidBodyDoubleData * m_rbA
Definition: btTypedConstraint.h:412
btTypedConstraintData::m_appliedImpulse
float m_appliedImpulse
Definition: btTypedConstraint.h:398
btTypedConstraint::m_userConstraintPtr
void * m_userConstraintPtr
Definition: btTypedConstraint.h:81
btAngularLimit::getHalfRange
btScalar getHalfRange() const
Gives half of the distance between min and max limit angle.
Definition: btTypedConstraint.h:509
btAngularLimit::m_relaxationFactor
btScalar m_relaxationFactor
Definition: btTypedConstraint.h:444
btTypedConstraint::setUserConstraintId
void setUserConstraintId(int uid)
Definition: btTypedConstraint.h:242
btScalar
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:314
btAngularLimit::m_halfRange
btScalar m_halfRange
Definition: btTypedConstraint.h:444
btTypedConstraint::getRigidBodyA
const btRigidBody & getRigidBodyA() const
Definition: btTypedConstraint.h:214
btTypedConstraint::getBreakingImpulseThreshold
btScalar getBreakingImpulseThreshold() const
Definition: btTypedConstraint.h:191
btAngularLimit::getCorrection
btScalar getCorrection() const
Returns correction value evaluated when test() was invoked.
Definition: btTypedConstraint.h:497
btTypedConstraintFloatData::m_breakingImpulseThreshold
float m_breakingImpulseThreshold
Definition: btTypedConstraint.h:375
btTypedConstraint::m_jointFeedback
btJointFeedback * m_jointFeedback
Definition: btTypedConstraint.h:101
btTypedConstraint::enableFeedback
void enableFeedback(bool needsFeedback)
enableFeedback will allow to read the applied linear and angular impulse use getAppliedImpulse,...
Definition: btTypedConstraint.h:289
btTypedConstraintDoubleData::m_dbgDrawSize
double m_dbgDrawSize
Definition: btTypedConstraint.h:422
CONETWIST_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:38
btTypedConstraintData::m_dbgDrawSize
float m_dbgDrawSize
Definition: btTypedConstraint.h:399
btTypedConstraint::getJointFeedback
const btJointFeedback * getJointFeedback() const
Definition: btTypedConstraint.h:267
btTypedConstraint::getUserConstraintType
int getUserConstraintType() const
Definition: btTypedConstraint.h:232
btTypedConstraintDoubleData::m_needsFeedback
int m_needsFeedback
Definition: btTypedConstraint.h:419
btAngularLimit::getSoftness
btScalar getSoftness() const
Returns limit's softness.
Definition: btTypedConstraint.h:479
btRigidBody.h
btTypedConstraint::operator=
btTypedConstraint & operator=(btTypedConstraint &other)
Definition: btTypedConstraint.h:89
btJointFeedback
Definition: btTypedConstraint.h:63
btAngularLimit::getRelaxationFactor
btScalar getRelaxationFactor() const
Returns limit's relaxation factor.
Definition: btTypedConstraint.h:491
btTypedConstraint::btConstraintInfo2::m_J2linearAxis
btScalar * m_J2linearAxis
Definition: btTypedConstraint.h:130
btTypedConstraintDoubleData::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:417
btTypedConstraintFloatData::m_disableCollisionsBetweenLinkedBodies
int m_disableCollisionsBetweenLinkedBodies
Definition: btTypedConstraint.h:372
btScalar.h
btTypedConstraintData::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:402
btTypedConstraintDoubleData::m_rbB
btRigidBodyDoubleData * m_rbB
Definition: btTypedConstraint.h:413
btTypedConstraint::getUid
int getUid() const
Definition: btTypedConstraint.h:277
btAngularLimit::getBiasFactor
btScalar getBiasFactor() const
Returns limit's bias factor.
Definition: btTypedConstraint.h:485
btTypedConstraintFloatData::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:366
btTypedConstraintDoubleData::padding
char padding[4]
Definition: btTypedConstraint.h:429
btTypedConstraint::getRigidBodyB
const btRigidBody & getRigidBodyB() const
Definition: btTypedConstraint.h:218
MAX_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:46
BT_CONSTRAINT_STOP_ERP
Definition: btTypedConstraint.h:52
FIXED_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:44
btJointFeedback::m_appliedForceBodyB
btVector3 m_appliedForceBodyB
Definition: btTypedConstraint.h:69
btTypedConstraint::m_needsFeedback
bool m_needsFeedback
Definition: btTypedConstraint.h:86
btAssert
#define btAssert(x)
Definition: btScalar.h:153
btTypedConstraintData::m_rbB
btRigidBodyData * m_rbB
Definition: btTypedConstraint.h:390
btFabs
btScalar btFabs(btScalar x)
Definition: btScalar.h:497
btJointFeedback::m_appliedForceBodyA
btVector3 m_appliedForceBodyA
Definition: btTypedConstraint.h:67
SLIDER_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:40
btTypedConstraint::isEnabled
bool isEnabled() const
Definition: btTypedConstraint.h:201
btTypedConstraintDoubleData::m_breakingImpulseThreshold
double m_breakingImpulseThreshold
Definition: btTypedConstraint.h:427
btTypedConstraint::setOverrideNumSolverIterations
void setOverrideNumSolverIterations(int overideNumIterations)
override the number of constraint solver iterations used to solve this constraint -1 will use the def...
Definition: btTypedConstraint.h:157
btAngularLimit::set
void set(btScalar low, btScalar high, btScalar _softness=0.9f, btScalar _biasFactor=0.3f, btScalar _relaxationFactor=1.0f)
Sets all limit's parameters.
Definition: btTypedConstraint.cpp:149
btRigidBodyData
#define btRigidBodyData
Definition: btRigidBody.h:35
HINGE_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:37
btAngularLimit::getSign
btScalar getSign() const
Returns sign value evaluated when test() was invoked.
Definition: btTypedConstraint.h:503
btTypedConstraint::setDbgDrawSize
void setDbgDrawSize(btScalar dbgDrawSize)
Definition: btTypedConstraint.h:307
btTypedConstraint::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:87
btNormalizeAngle
btScalar btNormalizeAngle(btScalar angleInRadians)
Definition: btScalar.h:781
btTypedConstraint::getOverrideNumSolverIterations
int getOverrideNumSolverIterations() const
Definition: btTypedConstraint.h:150
btTypedConstraint::~btTypedConstraint
virtual ~btTypedConstraint()
Definition: btTypedConstraint.h:109
btTypedConstraint::needsFeedback
bool needsFeedback() const
Definition: btTypedConstraint.h:282
btAngularLimit::isLimit
bool isLimit() const
Returns true when the last test() invocation recognized limit violation.
Definition: btTypedConstraint.h:515
btTypedConstraintFloatData::m_rbB
btRigidBodyFloatData * m_rbB
Definition: btTypedConstraint.h:361
btTypedConstraintFloatData::m_needsFeedback
int m_needsFeedback
Definition: btTypedConstraint.h:367
btAngularLimit
Definition: btTypedConstraint.h:440
POINT2POINT_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:36
btTypedConstraint::btConstraintInfo2::m_constraintError
btScalar * m_constraintError
Definition: btTypedConstraint.h:138
BT_CONSTRAINT_STOP_CFM
Definition: btTypedConstraint.h:54
btTypedConstraint::setBreakingImpulseThreshold
void setBreakingImpulseThreshold(btScalar threshold)
Definition: btTypedConstraint.h:196
GEAR_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:43
btTypedConstraint::getAppliedImpulse
btScalar getAppliedImpulse() const
getAppliedImpulse is an estimated total applied impulse.
Definition: btTypedConstraint.h:296
btTypedConstraintDoubleData::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:425
btTypedConstraint::m_breakingImpulseThreshold
btScalar m_breakingImpulseThreshold
Definition: btTypedConstraint.h:84
BT_DECLARE_ALIGNED_ALLOCATOR
#define BT_DECLARE_ALIGNED_ALLOCATOR()
Definition: btScalar.h:425
btVector3
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:80
btTypedConstraint::btConstraintInfo1
Definition: btTypedConstraint.h:113
btTypedConstraint::setUserConstraintType
void setUserConstraintType(int userConstraintType)
Definition: btTypedConstraint.h:237
btAngularLimit::fit
void fit(btScalar &angle) const
Checks given angle against limit.
Definition: btTypedConstraint.cpp:187
btAngularLimit::m_biasFactor
btScalar m_biasFactor
Definition: btTypedConstraint.h:444
D6_SPRING_2_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:45
btTypedConstraintData::m_objectType
int m_objectType
Definition: btTypedConstraint.h:393
btRigidBodyDoubleData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btRigidBody.h:614
btTypedConstraint::m_isEnabled
bool m_isEnabled
Definition: btTypedConstraint.h:85
btTypedConstraintFloatData::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:373
btRigidBodyFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btRigidBody.h:588
btTypedConstraintData::m_needsFeedback
int m_needsFeedback
Definition: btTypedConstraint.h:396
btTypedConstraint::btConstraintInfo2::rowskip
int rowskip
Definition: btTypedConstraint.h:133
btAngularLimit::getLow
btScalar getLow() const
Definition: btTypedConstraint.cpp:206
ATTRIBUTE_ALIGNED16
#define ATTRIBUTE_ALIGNED16(a)
Definition: btScalar.h:99
btTypedConstraint::m_appliedImpulse
btScalar m_appliedImpulse
Definition: btTypedConstraint.h:99
btTypedConstraint::calculateSerializeBufferSize
virtual int calculateSerializeBufferSize() const
Definition: btTypedConstraint.h:435
D6_SPRING_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:42
btAngularLimit::getHigh
btScalar getHigh() const
Definition: btTypedConstraint.cpp:211
btTypedConstraint::m_dbgDrawSize
btScalar m_dbgDrawSize
Definition: btTypedConstraint.h:100
btTypedConstraint::btConstraintInfo1::nub
int nub
Definition: btTypedConstraint.h:115
btTypedConstraintFloatData::m_rbA
btRigidBodyFloatData * m_rbA
Definition: btTypedConstraint.h:360
btAlignedObjectArray< btSolverConstraint >
btTypedConstraintDoubleData::m_isEnabled
int m_isEnabled
Definition: btTypedConstraint.h:428
btTypedConstraint::internalGetAppliedImpulse
btScalar internalGetAppliedImpulse()
internal method used by the constraint solver, don't use them directly
Definition: btTypedConstraint.h:186
D6_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:39
btTypedConstraintDoubleData::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:418
BT_CONSTRAINT_ERP
Definition: btTypedConstraint.h:51
btAngularLimit::m_correction
btScalar m_correction
Definition: btTypedConstraint.h:444
SIMD_FORCE_INLINE
#define SIMD_FORCE_INLINE
Definition: btScalar.h:98
btTypedConstraint::solveConstraintObsolete
virtual void solveConstraintObsolete(btSolverBody &, btSolverBody &, btScalar)
internal method used by the constraint solver, don't use them directly
Definition: btTypedConstraint.h:212
btSerializer
Definition: btSerializer.h:65
btJointFeedback::m_appliedTorqueBodyB
btVector3 m_appliedTorqueBodyB
Definition: btTypedConstraint.h:70
btTypedConstraint::getRigidBodyB
btRigidBody & getRigidBodyB()
Definition: btTypedConstraint.h:227
btTypedObject
rudimentary class to provide type info
Definition: btScalar.h:799
btTypedConstraintData
this structure is not used, except for loading pre-2.82 .bullet files
Definition: btTypedConstraint.h:387
btTypedConstraint::getDbgDrawSize
btScalar getDbgDrawSize()
Definition: btTypedConstraint.h:311
btTypedConstraint::btConstraintInfo2::m_numIterations
int m_numIterations
Definition: btTypedConstraint.h:144
btAngularLimit::getError
btScalar getError() const
Returns correction value multiplied by sign value.
Definition: btTypedConstraint.cpp:182
btAngularLimit::m_softness
btScalar m_softness
Definition: btTypedConstraint.h:444
btTypedConstraint::setEnabled
void setEnabled(bool enabled)
Definition: btTypedConstraint.h:206
btTypedConstraint::btConstraintInfo2
Definition: btTypedConstraint.h:120
btAdjustAngleToLimits
btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)
Definition: btTypedConstraint.h:331
btAngularLimit::m_solveLimit
bool m_solveLimit
Definition: btTypedConstraint.h:453
btTypedConstraintFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btTypedConstraint.h:358
btTypedConstraintDoubleData::m_disableCollisionsBetweenLinkedBodies
int m_disableCollisionsBetweenLinkedBodies
Definition: btTypedConstraint.h:424
btTypedConstraint::m_rbB
btRigidBody & m_rbB
Definition: btTypedConstraint.h:98
btTypedConstraintFloatData::m_isEnabled
int m_isEnabled
Definition: btTypedConstraint.h:376
btTypedConstraintDoubleData::m_objectType
int m_objectType
Definition: btTypedConstraint.h:416
btTypedConstraintData2
#define btTypedConstraintData2
Definition: btTypedConstraint.h:27
btJointFeedback::m_appliedTorqueBodyA
btVector3 m_appliedTorqueBodyA
Definition: btTypedConstraint.h:68
btTypedConstraint::btConstraintInfo2::fps
btScalar fps
Definition: btTypedConstraint.h:124
btTypedConstraintFloatData::m_appliedImpulse
float m_appliedImpulse
Definition: btTypedConstraint.h:369
btTypedConstraint::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:80
btTypedConstraintDoubleData::m_name
char * m_name
Definition: btTypedConstraint.h:414
btTypedConstraintData::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:394
btTypedConstraint::setupSolverConstraint
virtual void setupSolverConstraint(btConstraintArray &ca, int solverBodyA, int solverBodyB, btScalar timeStep)
internal method used by the constraint solver, don't use them directly
Definition: btTypedConstraint.h:166
btSolverConstraint.h
btAngularLimit::m_center
btScalar m_center
Definition: btTypedConstraint.h:444
btTypedConstraintData::m_rbA
btRigidBodyData * m_rbA
Definition: btTypedConstraint.h:389
btTypedConstraint::getConstraintType
btTypedConstraintType getConstraintType() const
Definition: btTypedConstraint.h:302
btTypedConstraintData::m_isEnabled
int m_isEnabled
Definition: btTypedConstraint.h:405
SIMD_2_PI
#define SIMD_2_PI
Definition: btScalar.h:527
btTypedConstraint::btConstraintInfo2::m_upperLimit
btScalar * m_upperLimit
Definition: btTypedConstraint.h:141
btTypedConstraintFloatData::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:365
btTypedConstraintData::m_breakingImpulseThreshold
float m_breakingImpulseThreshold
Definition: btTypedConstraint.h:404
btTypedConstraintData::m_disableCollisionsBetweenLinkedBodies
int m_disableCollisionsBetweenLinkedBodies
Definition: btTypedConstraint.h:401
btTypedConstraint::m_rbA
btRigidBody & m_rbA
Definition: btTypedConstraint.h:97
btConstraintParams
btConstraintParams
Definition: btTypedConstraint.h:49
btAngularLimit::m_sign
btScalar m_sign
Definition: btTypedConstraint.h:444
btTypedConstraintData::m_name
char * m_name
Definition: btTypedConstraint.h:391
btTypedConstraintType
btTypedConstraintType
Definition: btTypedConstraint.h:34
btTypedConstraint::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:77
btTypedConstraint::setJointFeedback
void setJointFeedback(btJointFeedback *jointFeedback)
Definition: btTypedConstraint.h:262
btTypedConstraint::getUserConstraintId
int getUserConstraintId() const
Definition: btTypedConstraint.h:247
btTypedConstraint::buildJacobian
virtual void buildJacobian()
internal method used by the constraint solver, don't use them directly
Definition: btTypedConstraint.h:163
btTypedConstraintDoubleData
Definition: btTypedConstraint.h:410