Bullet Collision Detection & Physics Library: btTypedConstraint.h Source File

Bullet Collision Detection & Physics Library

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

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
20 #include "LinearMath/btScalar.h"
21 #include "btSolverConstraint.h"
22 #include "BulletDynamics/Dynamics/btRigidBody.h"
23
24 #ifdef BT_USE_DOUBLE_PRECISION
25 #define btTypedConstraintData2 btTypedConstraintDoubleData
26 #define btTypedConstraintDataName "btTypedConstraintDoubleData"
27 #else
28 #define btTypedConstraintData2 btTypedConstraintFloatData
29 #define btTypedConstraintDataName "btTypedConstraintFloatData"
30 #endif //BT_USE_DOUBLE_PRECISION
31
32
33 class btSerializer;
34
35 //Don't change any of the existing enum values, so add enum types at the end for serialization compatibility
36 enum btTypedConstraintType
37 {
38 POINT2POINT_CONSTRAINT_TYPE=3,
39 HINGE_CONSTRAINT_TYPE,
40 CONETWIST_CONSTRAINT_TYPE,
41 D6_CONSTRAINT_TYPE,
42 SLIDER_CONSTRAINT_TYPE,
43 CONTACT_CONSTRAINT_TYPE,
44 D6_SPRING_CONSTRAINT_TYPE,
45 GEAR_CONSTRAINT_TYPE,
46 FIXED_CONSTRAINT_TYPE,
47 D6_SPRING_2_CONSTRAINT_TYPE,
48 MAX_CONSTRAINT_TYPE
49 };
50
51
52 enum btConstraintParams
53 {
54 BT_CONSTRAINT_ERP=1,
55 BT_CONSTRAINT_STOP_ERP,
56 BT_CONSTRAINT_CFM,
57 BT_CONSTRAINT_STOP_CFM
58 };
59
60 #if 1
61 #define btAssertConstrParams(_par) btAssert(_par)
62 #else
63 #define btAssertConstrParams(_par)
64 #endif
65
66
67 ATTRIBUTE_ALIGNED16(struct) btJointFeedback
68 {
69 BT_DECLARE_ALIGNED_ALLOCATOR();
70 btVector3 m_appliedForceBodyA;
71 btVector3 m_appliedTorqueBodyA;
72 btVector3 m_appliedForceBodyB;
73 btVector3 m_appliedTorqueBodyB;
74 };
75
76
78 ATTRIBUTE_ALIGNED16(class) btTypedConstraint : public btTypedObject
79 {
80 int m_userConstraintType;
81
82 union
83 {
84 int m_userConstraintId;
85 void* m_userConstraintPtr;
86 };
87
88 btScalar m_breakingImpulseThreshold;
89 bool m_isEnabled;
90 bool m_needsFeedback;
91 int m_overrideNumSolverIterations;
92
93
94 btTypedConstraint& operator=(btTypedConstraint& other)
95 {
96 btAssert(0);
97 (void) other;
98 return *this;
99 }
100
101 protected:
102 btRigidBody& m_rbA;
103 btRigidBody& m_rbB;
104 btScalar m_appliedImpulse;
105 btScalar m_dbgDrawSize;
106 btJointFeedback* m_jointFeedback;
107
109 btScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact);
110
111
112 public:
113
114 BT_DECLARE_ALIGNED_ALLOCATOR();
115
116 virtual ~btTypedConstraint() {};
117 btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA);
118 btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA,btRigidBody& rbB);
119
120 struct btConstraintInfo1 {
121 int m_numConstraintRows,nub;
122 };
123
124 static btRigidBody& getFixedBody();
125
126 struct btConstraintInfo2 {
127 // integrator parameters: frames per second (1/stepsize), default error
128 // reduction parameter (0..1).
129 btScalar fps,erp;
130
131 // for the first and second body, pointers to two (linear and angular)
132 // n*3 jacobian sub matrices, stored by rows. these matrices will have
133 // been initialized to 0 on entry. if the second body is zero then the
134 // J2xx pointers may be 0.
135 btScalar *m_J1linearAxis,*m_J1angularAxis,*m_J2linearAxis,*m_J2angularAxis;
136
137 // elements to jump from one row to the next in J's
138 int rowskip;
139
140 // right hand sides of the equation J*v = c + cfm * lambda. cfm is the
141 // "constraint force mixing" vector. c is set to zero on entry, cfm is
142 // set to a constant value (typically very small or zero) value on entry.
143 btScalar *m_constraintError,*cfm;
144
145 // lo and hi limits for variables (set to -/+ infinity on entry).
146 btScalar *m_lowerLimit,*m_upperLimit;
147
148 // findex vector for variables. see the LCP solver interface for a
149 // description of what this does. this is set to -1 on entry.
150 // note that the returned indexes are relative to the first index of
151 // the constraint.
152 int *findex;
153 // number of solver iterations
154 int m_numIterations;
155
156 //damping of the velocity
157 btScalar m_damping;
158 };
159
160 int getOverrideNumSolverIterations() const
161 {
162 return m_overrideNumSolverIterations;
163 }
164
167 void setOverrideNumSolverIterations(int overideNumIterations)
168 {
169 m_overrideNumSolverIterations = overideNumIterations;
170 }
171
173 virtual void buildJacobian() {};
174
176 virtual void setupSolverConstraint(btConstraintArray& ca, int solverBodyA,int solverBodyB, btScalar timeStep)
177 {
178 (void)ca;
179 (void)solverBodyA;
180 (void)solverBodyB;
181 (void)timeStep;
182 }
183
185 virtual void getInfo1 (btConstraintInfo1* info)=0;
186
188 virtual void getInfo2 (btConstraintInfo2* info)=0;
189
191 void internalSetAppliedImpulse(btScalar appliedImpulse)
192 {
193 m_appliedImpulse = appliedImpulse;
194 }
196 btScalar internalGetAppliedImpulse()
197 {
198 return m_appliedImpulse;
199 }
200
201
202 btScalar getBreakingImpulseThreshold() const
203 {
204 return m_breakingImpulseThreshold;
205 }
206
207 void setBreakingImpulseThreshold(btScalar threshold)
208 {
209 m_breakingImpulseThreshold = threshold;
210 }
211
212 bool isEnabled() const
213 {
214 return m_isEnabled;
215 }
216
217 void setEnabled(bool enabled)
218 {
219 m_isEnabled=enabled;
220 }
221
222
224 virtual void solveConstraintObsolete(btSolverBody& /*bodyA*/,btSolverBody& /*bodyB*/,btScalar /*timeStep*/) {};
225
226
227 const btRigidBody& getRigidBodyA() const
228 {
229 return m_rbA;
230 }
231 const btRigidBody& getRigidBodyB() const
232 {
233 return m_rbB;
234 }
235
236 btRigidBody& getRigidBodyA()
237 {
238 return m_rbA;
239 }
240 btRigidBody& getRigidBodyB()
241 {
242 return m_rbB;
243 }
244
245 int getUserConstraintType() const
246 {
247 return m_userConstraintType ;
248 }
249
250 void setUserConstraintType(int userConstraintType)
251 {
252 m_userConstraintType = userConstraintType;
253 };
254
255 void setUserConstraintId(int uid)
256 {
257 m_userConstraintId = uid;
258 }
259
260 int getUserConstraintId() const
261 {
262 return m_userConstraintId;
263 }
264
265 void setUserConstraintPtr(void* ptr)
266 {
267 m_userConstraintPtr = ptr;
268 }
269
270 void* getUserConstraintPtr()
271 {
272 return m_userConstraintPtr;
273 }
274
275 void setJointFeedback(btJointFeedback* jointFeedback)
276 {
277 m_jointFeedback = jointFeedback;
278 }
279
280 const btJointFeedback* getJointFeedback() const
281 {
282 return m_jointFeedback;
283 }
284
285 btJointFeedback* getJointFeedback()
286 {
287 return m_jointFeedback;
288 }
289
290
291 int getUid() const
292 {
293 return m_userConstraintId;
294 }
295
296 bool needsFeedback() const
297 {
298 return m_needsFeedback;
299 }
300
303 void enableFeedback(bool needsFeedback)
304 {
305 m_needsFeedback = needsFeedback;
306 }
307
310 btScalar getAppliedImpulse() const
311 {
312 btAssert(m_needsFeedback);
313 return m_appliedImpulse;
314 }
315
316 btTypedConstraintType getConstraintType () const
317 {
318 return btTypedConstraintType(m_objectType);
319 }
320
321 void setDbgDrawSize(btScalar dbgDrawSize)
322 {
323 m_dbgDrawSize = dbgDrawSize;
324 }
325 btScalar getDbgDrawSize()
326 {
327 return m_dbgDrawSize;
328 }
329
332 virtual void setParam(int num, btScalar value, int axis = -1) = 0;
333
335 virtual btScalar getParam(int num, int axis = -1) const = 0;
336
337 virtual int calculateSerializeBufferSize() const;
338
340 virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
341
342 };
343
344 // returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits
345 // all arguments should be normalized angles (i.e. in range [-SIMD_PI, SIMD_PI])
346 SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)
347 {
348 if(angleLowerLimitInRadians >= angleUpperLimitInRadians)
349 {
350 return angleInRadians;
351 }
352 else if(angleInRadians < angleLowerLimitInRadians)
353 {
354 btScalar diffLo = btFabs(btNormalizeAngle(angleLowerLimitInRadians - angleInRadians));
355 btScalar diffHi = btFabs(btNormalizeAngle(angleUpperLimitInRadians - angleInRadians));
356 return (diffLo < diffHi) ? angleInRadians : (angleInRadians + SIMD_2_PI);
357 }
358 else if(angleInRadians > angleUpperLimitInRadians)
359 {
360 btScalar diffHi = btFabs(btNormalizeAngle(angleInRadians - angleUpperLimitInRadians));
361 btScalar diffLo = btFabs(btNormalizeAngle(angleInRadians - angleLowerLimitInRadians));
362 return (diffLo < diffHi) ? (angleInRadians - SIMD_2_PI) : angleInRadians;
363 }
364 else
365 {
366 return angleInRadians;
367 }
368 }
369
371 struct btTypedConstraintFloatData
372 {
373 btRigidBodyFloatData *m_rbA;
374 btRigidBodyFloatData *m_rbB;
375 char *m_name;
376
377 int m_objectType;
378 int m_userConstraintType;
379 int m_userConstraintId;
380 int m_needsFeedback;
381
382 float m_appliedImpulse;
383 float m_dbgDrawSize;
384
385 int m_disableCollisionsBetweenLinkedBodies;
386 int m_overrideNumSolverIterations;
387
388 float m_breakingImpulseThreshold;
389 int m_isEnabled;
390
391 };
392
394
395 #define BT_BACKWARDS_COMPATIBLE_SERIALIZATION
396 #ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION
397 struct btTypedConstraintData
399 {
400 btRigidBodyData *m_rbA;
401 btRigidBodyData *m_rbB;
402 char *m_name;
403
404 int m_objectType;
405 int m_userConstraintType;
406 int m_userConstraintId;
407 int m_needsFeedback;
408
409 float m_appliedImpulse;
410 float m_dbgDrawSize;
411
412 int m_disableCollisionsBetweenLinkedBodies;
413 int m_overrideNumSolverIterations;
414
415 float m_breakingImpulseThreshold;
416 int m_isEnabled;
417
418 };
419 #endif //BACKWARDS_COMPATIBLE
420
421 struct btTypedConstraintDoubleData
422 {
423 btRigidBodyDoubleData *m_rbA;
424 btRigidBodyDoubleData *m_rbB;
425 char *m_name;
426
427 int m_objectType;
428 int m_userConstraintType;
429 int m_userConstraintId;
430 int m_needsFeedback;
431
432 double m_appliedImpulse;
433 double m_dbgDrawSize;
434
435 int m_disableCollisionsBetweenLinkedBodies;
436 int m_overrideNumSolverIterations;
437
438 double m_breakingImpulseThreshold;
439 int m_isEnabled;
440 char padding[4];
441
442 };
443
444
445 SIMD_FORCE_INLINE int btTypedConstraint::calculateSerializeBufferSize() const
446 {
447 return sizeof(btTypedConstraintData2);
448 }
449
450
451
452 class btAngularLimit
453 {
454 private:
455 btScalar
456 m_center,
457 m_halfRange,
458 m_softness,
459 m_biasFactor,
460 m_relaxationFactor,
461 m_correction,
462 m_sign;
463
464 bool
465 m_solveLimit;
466
467 public:
469 btAngularLimit()
470 :m_center(0.0f),
471 m_halfRange(-1.0f),
472 m_softness(0.9f),
473 m_biasFactor(0.3f),
474 m_relaxationFactor(1.0f),
475 m_correction(0.0f),
476 m_sign(0.0f),
477 m_solveLimit(false)
478 {}
479
483 void set(btScalar low, btScalar high, btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f);
484
487 void test(const btScalar angle);
488
490 inline btScalar getSoftness() const
491 {
492 return m_softness;
493 }
494
496 inline btScalar getBiasFactor() const
497 {
498 return m_biasFactor;
499 }
500
502 inline btScalar getRelaxationFactor() const
503 {
504 return m_relaxationFactor;
505 }
506
508 inline btScalar getCorrection() const
509 {
510 return m_correction;
511 }
512
514 inline btScalar getSign() const
515 {
516 return m_sign;
517 }
518
520 inline btScalar getHalfRange() const
521 {
522 return m_halfRange;
523 }
524
526 inline bool isLimit() const
527 {
528 return m_solveLimit;
529 }
530
533 void fit(btScalar& angle) const;
534
536 btScalar getError() const;
537
538 btScalar getLow() const;
539
540 btScalar getHigh() const;
541
542 };
543
544
545
546 #endif //BT_TYPED_CONSTRAINT_H
btTypedConstraint::btConstraintInfo2::m_constraintError
btScalar * m_constraintError
Definition: btTypedConstraint.h:143
btTypedConstraintDoubleData::m_isEnabled
int m_isEnabled
Definition: btTypedConstraint.h:439
btTypedConstraint::btConstraintInfo2::m_damping
btScalar m_damping
Definition: btTypedConstraint.h:157
btTypedConstraint::enableFeedback
void enableFeedback(bool needsFeedback)
enableFeedback will allow to read the applied linear and angular impulse use getAppliedImpulse, getAppliedLinearImpulse and getAppliedAngularImpulse to read feedback information
Definition: btTypedConstraint.h:303
btTypedConstraintFloatData::m_rbB
btRigidBodyFloatData * m_rbB
Definition: btTypedConstraint.h:374
btTypedConstraintData::m_rbB
btRigidBodyData * m_rbB
Definition: btTypedConstraint.h:401
btAngularLimit
Definition: btTypedConstraint.h:452
btTypedConstraint::getUserConstraintType
int getUserConstraintType() const
Definition: btTypedConstraint.h:245
btTypedConstraintDoubleData::m_breakingImpulseThreshold
double m_breakingImpulseThreshold
Definition: btTypedConstraint.h:438
btTypedConstraint::btConstraintInfo2::m_upperLimit
btScalar * m_upperLimit
Definition: btTypedConstraint.h:146
btTypedConstraint::getConstraintType
btTypedConstraintType getConstraintType() const
Definition: btTypedConstraint.h:316
btTypedConstraintData::m_name
char * m_name
Definition: btTypedConstraint.h:402
btTypedConstraint::setUserConstraintPtr
void setUserConstraintPtr(void *ptr)
Definition: btTypedConstraint.h:265
btTypedConstraint::m_rbA
btRigidBody & m_rbA
Definition: btTypedConstraint.h:102
btTypedConstraint::btConstraintInfo2
Definition: btTypedConstraint.h:126
FIXED_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:46
btAlignedObjectArray< btSolverConstraint >
btTypedConstraintFloatData::m_breakingImpulseThreshold
float m_breakingImpulseThreshold
Definition: btTypedConstraint.h:388
btTypedConstraintFloatData::m_objectType
int m_objectType
Definition: btTypedConstraint.h:377
btTypedConstraint::m_userConstraintPtr
void * m_userConstraintPtr
Definition: btTypedConstraint.h:85
btTypedConstraintFloatData::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:378
btTypedConstraint::setJointFeedback
void setJointFeedback(btJointFeedback *jointFeedback)
Definition: btTypedConstraint.h:275
btTypedConstraintData::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:406
btAngularLimit::isLimit
bool isLimit() const
Returns true when the last test() invocation recognized limit violation.
Definition: btTypedConstraint.h:526
btTypedConstraintFloatData::m_disableCollisionsBetweenLinkedBodies
int m_disableCollisionsBetweenLinkedBodies
Definition: btTypedConstraint.h:385
btTypedConstraintData::m_disableCollisionsBetweenLinkedBodies
int m_disableCollisionsBetweenLinkedBodies
Definition: btTypedConstraint.h:412
btJointFeedback
Definition: btTypedConstraint.h:67
btAssert
#define btAssert(x)
Definition: btScalar.h:113
btTypedConstraintData::m_rbA
btRigidBodyData * m_rbA
Definition: btTypedConstraint.h:400
CONTACT_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:43
btTypedConstraintDoubleData::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:429
btTypedConstraint::getBreakingImpulseThreshold
btScalar getBreakingImpulseThreshold() const
Definition: btTypedConstraint.h:202
SIMD_FORCE_INLINE
#define SIMD_FORCE_INLINE
Definition: btScalar.h:63
btTypedConstraintDoubleData::m_disableCollisionsBetweenLinkedBodies
int m_disableCollisionsBetweenLinkedBodies
Definition: btTypedConstraint.h:435
btTypedConstraint::setUserConstraintId
void setUserConstraintId(int uid)
Definition: btTypedConstraint.h:255
BT_CONSTRAINT_CFM
Definition: btTypedConstraint.h:56
btTypedConstraint::btConstraintInfo2::findex
int * findex
Definition: btTypedConstraint.h:152
GEAR_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:45
btTypedConstraintFloatData::m_name
char * m_name
Definition: btTypedConstraint.h:375
btTypedConstraint::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:91
btRigidBodyData
#define btRigidBodyData
Definition: btRigidBody.h:36
btRigidBody.h
btTypedConstraint::m_needsFeedback
bool m_needsFeedback
Definition: btTypedConstraint.h:90
btTypedConstraint::m_jointFeedback
btJointFeedback * m_jointFeedback
Definition: btTypedConstraint.h:106
btTypedConstraintFloatData::m_appliedImpulse
float m_appliedImpulse
Definition: btTypedConstraint.h:382
btTypedConstraint::getUserConstraintId
int getUserConstraintId() const
Definition: btTypedConstraint.h:260
btSerializer
Definition: btSerializer.h:68
btJointFeedback::m_appliedForceBodyB
btVector3 m_appliedForceBodyB
Definition: btTypedConstraint.h:72
btTypedConstraint::getJointFeedback
const btJointFeedback * getJointFeedback() const
Definition: btTypedConstraint.h:280
BT_CONSTRAINT_STOP_ERP
Definition: btTypedConstraint.h:55
btTypedConstraintDoubleData::m_objectType
int m_objectType
Definition: btTypedConstraint.h:427
btTypedConstraint::setBreakingImpulseThreshold
void setBreakingImpulseThreshold(btScalar threshold)
Definition: btTypedConstraint.h:207
D6_SPRING_2_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:47
btTypedConstraintDoubleData::m_name
char * m_name
Definition: btTypedConstraint.h:425
btTypedConstraint::m_breakingImpulseThreshold
btScalar m_breakingImpulseThreshold
Definition: btTypedConstraint.h:88
btTypedConstraint::setDbgDrawSize
void setDbgDrawSize(btScalar dbgDrawSize)
Definition: btTypedConstraint.h:321
btTypedConstraint::operator=
btTypedConstraint & operator=(btTypedConstraint &other)
Definition: btTypedConstraint.h:94
btAngularLimit::getHalfRange
btScalar getHalfRange() const
Gives half of the distance between min and max limit angle.
Definition: btTypedConstraint.h:520
btTypedConstraintData::m_appliedImpulse
float m_appliedImpulse
Definition: btTypedConstraint.h:409
BT_CONSTRAINT_STOP_CFM
Definition: btTypedConstraint.h:57
btTypedConstraintDoubleData::m_appliedImpulse
double m_appliedImpulse
Definition: btTypedConstraint.h:432
SIMD_2_PI
#define SIMD_2_PI
Definition: btScalar.h:477
btTypedConstraint::needsFeedback
bool needsFeedback() const
Definition: btTypedConstraint.h:296
btJointFeedback::m_appliedForceBodyA
btVector3 m_appliedForceBodyA
Definition: btTypedConstraint.h:70
btAngularLimit::getSign
btScalar getSign() const
Returns sign value evaluated when test() was invoked.
Definition: btTypedConstraint.h:514
btRigidBodyDoubleData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 ...
Definition: btRigidBody.h:587
btTypedConstraintData::m_dbgDrawSize
float m_dbgDrawSize
Definition: btTypedConstraint.h:410
btAngularLimit::getSoftness
btScalar getSoftness() const
Returns limit&#39;s softness.
Definition: btTypedConstraint.h:490
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:167
btTypedConstraintFloatData::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:379
btAngularLimit::getBiasFactor
btScalar getBiasFactor() const
Returns limit&#39;s bias factor.
Definition: btTypedConstraint.h:496
btTypedConstraintDoubleData
Definition: btTypedConstraint.h:421
btTypedConstraint::~btTypedConstraint
virtual ~btTypedConstraint()
Definition: btTypedConstraint.h:116
btTypedConstraintData2
#define btTypedConstraintData2
Definition: btTypedConstraint.h:28
btRigidBody
The btRigidBody is the main class for rigid body objects.
Definition: btRigidBody.h:62
D6_SPRING_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:44
btTypedConstraintType
btTypedConstraintType
Definition: btTypedConstraint.h:36
btRigidBodyFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 ...
Definition: btRigidBody.h:561
btTypedConstraintData
this structure is not used, except for loading pre-2.82 .bullet files
Definition: btTypedConstraint.h:398
SLIDER_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:42
btTypedConstraint::m_isEnabled
bool m_isEnabled
Definition: btTypedConstraint.h:89
btTypedConstraintFloatData::m_isEnabled
int m_isEnabled
Definition: btTypedConstraint.h:389
btTypedConstraint::m_dbgDrawSize
btScalar m_dbgDrawSize
Definition: btTypedConstraint.h:105
btTypedConstraint::isEnabled
bool isEnabled() const
Definition: btTypedConstraint.h:212
btSolverConstraint.h
btTypedConstraintData::m_needsFeedback
int m_needsFeedback
Definition: btTypedConstraint.h:407
btAdjustAngleToLimits
btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)
Definition: btTypedConstraint.h:346
btTypedConstraintDoubleData::m_rbA
btRigidBodyDoubleData * m_rbA
Definition: btTypedConstraint.h:423
btVector3
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:83
ATTRIBUTE_ALIGNED16
#define ATTRIBUTE_ALIGNED16(a)
Definition: btScalar.h:64
btTypedConstraint::setUserConstraintType
void setUserConstraintType(int userConstraintType)
Definition: btTypedConstraint.h:250
btNormalizeAngle
btScalar btNormalizeAngle(btScalar angleInRadians)
Definition: btScalar.h:724
btTypedConstraint::btConstraintInfo2::rowskip
int rowskip
Definition: btTypedConstraint.h:138
btTypedConstraintData::m_objectType
int m_objectType
Definition: btTypedConstraint.h:404
btTypedConstraint::solveConstraintObsolete
virtual void solveConstraintObsolete(btSolverBody &, btSolverBody &, btScalar)
internal method used by the constraint solver, don&#39;t use them directly
Definition: btTypedConstraint.h:224
btTypedConstraintData::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:413
btTypedConstraint::m_rbB
btRigidBody & m_rbB
Definition: btTypedConstraint.h:103
btTypedConstraintData::m_breakingImpulseThreshold
float m_breakingImpulseThreshold
Definition: btTypedConstraint.h:415
MAX_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:48
btTypedObject
rudimentary class to provide type info
Definition: btScalar.h:744
btJointFeedback::m_appliedTorqueBodyB
btVector3 m_appliedTorqueBodyB
Definition: btTypedConstraint.h:73
btSolverBody
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
Definition: btSolverBody.h:108
btTypedConstraint::btConstraintInfo2::m_J2linearAxis
btScalar * m_J2linearAxis
Definition: btTypedConstraint.h:135
btAngularLimit::getRelaxationFactor
btScalar getRelaxationFactor() const
Returns limit&#39;s relaxation factor.
Definition: btTypedConstraint.h:502
btTypedConstraint::setupSolverConstraint
virtual void setupSolverConstraint(btConstraintArray &ca, int solverBodyA, int solverBodyB, btScalar timeStep)
internal method used by the constraint solver, don&#39;t use them directly
Definition: btTypedConstraint.h:176
CONETWIST_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:40
btTypedConstraint
TypedConstraint is the baseclass for Bullet constraints and vehicles.
Definition: btTypedConstraint.h:78
btTypedConstraintFloatData::m_dbgDrawSize
float m_dbgDrawSize
Definition: btTypedConstraint.h:383
btTypedConstraint::internalGetAppliedImpulse
btScalar internalGetAppliedImpulse()
internal method used by the constraint solver, don&#39;t use them directly
Definition: btTypedConstraint.h:196
btTypedConstraint::getRigidBodyA
const btRigidBody & getRigidBodyA() const
Definition: btTypedConstraint.h:227
btTypedConstraint::setEnabled
void setEnabled(bool enabled)
Definition: btTypedConstraint.h:217
btTypedConstraint::btConstraintInfo1::nub
int nub
Definition: btTypedConstraint.h:121
BT_DECLARE_ALIGNED_ALLOCATOR
#define BT_DECLARE_ALIGNED_ALLOCATOR()
Definition: btScalar.h:388
btTypedConstraintDoubleData::m_needsFeedback
int m_needsFeedback
Definition: btTypedConstraint.h:430
btTypedConstraint::calculateSerializeBufferSize
virtual int calculateSerializeBufferSize() const
Definition: btTypedConstraint.h:445
btTypedConstraint::getRigidBodyB
btRigidBody & getRigidBodyB()
Definition: btTypedConstraint.h:240
btTypedConstraint::btConstraintInfo2::fps
btScalar fps
Definition: btTypedConstraint.h:129
BT_CONSTRAINT_ERP
Definition: btTypedConstraint.h:54
btJointFeedback::m_appliedTorqueBodyA
btVector3 m_appliedTorqueBodyA
Definition: btTypedConstraint.h:71
btTypedConstraint::m_appliedImpulse
btScalar m_appliedImpulse
Definition: btTypedConstraint.h:104
btAngularLimit::getCorrection
btScalar getCorrection() const
Returns correction value evaluated when test() was invoked.
Definition: btTypedConstraint.h:508
btTypedConstraintFloatData::m_rbA
btRigidBodyFloatData * m_rbA
Definition: btTypedConstraint.h:373
POINT2POINT_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:38
D6_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:41
btTypedConstraintDoubleData::m_dbgDrawSize
double m_dbgDrawSize
Definition: btTypedConstraint.h:433
btAngularLimit::btAngularLimit
btAngularLimit()
Default constructor initializes limit as inactive, allowing free constraint movement.
Definition: btTypedConstraint.h:469
btAngularLimit::m_softness
btScalar m_softness
Definition: btTypedConstraint.h:456
btTypedConstraint::getAppliedImpulse
btScalar getAppliedImpulse() const
getAppliedImpulse is an estimated total applied impulse.
Definition: btTypedConstraint.h:310
btConstraintParams
btConstraintParams
Definition: btTypedConstraint.h:52
HINGE_CONSTRAINT_TYPE
Definition: btTypedConstraint.h:39
btTypedConstraint::internalSetAppliedImpulse
void internalSetAppliedImpulse(btScalar appliedImpulse)
internal method used by the constraint solver, don&#39;t use them directly
Definition: btTypedConstraint.h:191
btTypedConstraint::getRigidBodyA
btRigidBody & getRigidBodyA()
Definition: btTypedConstraint.h:236
btAngularLimit::m_solveLimit
bool m_solveLimit
Definition: btTypedConstraint.h:465
btTypedConstraint::getUserConstraintPtr
void * getUserConstraintPtr()
Definition: btTypedConstraint.h:270
btTypedConstraintData::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:405
btTypedConstraint::btConstraintInfo1
Definition: btTypedConstraint.h:120
btTypedConstraintFloatData::m_needsFeedback
int m_needsFeedback
Definition: btTypedConstraint.h:380
btTypedConstraint::btConstraintInfo2::m_numIterations
int m_numIterations
Definition: btTypedConstraint.h:154
btTypedConstraint::getDbgDrawSize
btScalar getDbgDrawSize()
Definition: btTypedConstraint.h:325
btTypedConstraintDoubleData::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:436
btTypedConstraintDoubleData::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:428
btTypedConstraintData::m_isEnabled
int m_isEnabled
Definition: btTypedConstraint.h:416
btTypedConstraint::getUid
int getUid() const
Definition: btTypedConstraint.h:291
btTypedConstraint::getRigidBodyB
const btRigidBody & getRigidBodyB() const
Definition: btTypedConstraint.h:231
btTypedConstraint::getOverrideNumSolverIterations
int getOverrideNumSolverIterations() const
Definition: btTypedConstraint.h:160
btTypedConstraint::m_userConstraintType
int m_userConstraintType
Definition: btTypedConstraint.h:80
btTypedConstraintFloatData::m_overrideNumSolverIterations
int m_overrideNumSolverIterations
Definition: btTypedConstraint.h:386
btTypedConstraint::buildJacobian
virtual void buildJacobian()
internal method used by the constraint solver, don&#39;t use them directly
Definition: btTypedConstraint.h:173
btTypedConstraintFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64 ...
Definition: btTypedConstraint.h:371
btScalar
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:278
btTypedConstraintDoubleData::m_rbB
btRigidBodyDoubleData * m_rbB
Definition: btTypedConstraint.h:424
btTypedConstraint::getJointFeedback
btJointFeedback * getJointFeedback()
Definition: btTypedConstraint.h:285
btScalar.h
btFabs
btScalar btFabs(btScalar x)
Definition: btScalar.h:449
btTypedConstraint::m_userConstraintId
int m_userConstraintId
Definition: btTypedConstraint.h:84