32 #ifndef BT_CONETWISTCONSTRAINT_H 33 #define BT_CONETWISTCONSTRAINT_H 39 #ifdef BT_USE_DOUBLE_PRECISION 40 #define btConeTwistConstraintData2 btConeTwistConstraintDoubleData 41 #define btConeTwistConstraintDataName "btConeTwistConstraintDoubleData" 43 #define btConeTwistConstraintData2 btConeTwistConstraintData 44 #define btConeTwistConstraintDataName "btConeTwistConstraintData" 45 #endif //BT_USE_DOUBLE_PRECISION 60 #ifdef IN_PARALLELL_SOLVER 128 void adjustSwingAxisToUseEllipseNormal(
btVector3 & vSwingAxis)
const;
137 virtual void buildJacobian();
162 m_angularOnly = angularOnly;
167 return m_angularOnly;
176 m_twistSpan = limitValue;
181 m_swingSpan2 = limitValue;
186 m_swingSpan1 = limitValue;
216 btAssert(0 &&
"Invalid limitIndex specified for btConeTwistConstraint");
235 m_swingSpan1 = _swingSpan1;
236 m_swingSpan2 = _swingSpan2;
237 m_twistSpan = _twistSpan;
239 m_limitSoftness = _softness;
240 m_biasFactor = _biasFactor;
241 m_relaxationFactor = _relaxationFactor;
249 return m_solveTwistLimit;
254 return m_solveSwingLimit;
259 return m_twistLimitSign;
262 void calcAngleInfo();
279 return m_limitSoftness;
287 return m_relaxationFactor;
304 m_maxMotorImpulse = maxMotorImpulse;
305 m_bNormalizedMotorStrength =
false;
309 m_maxMotorImpulse = maxMotorImpulse;
310 m_bNormalizedMotorStrength =
true;
324 void setMotorTargetInConstraintSpace(
const btQuaternion& q);
330 virtual void setParam(
int num,
btScalar value,
int axis = -1);
345 virtual btScalar getParam(
int num,
int axis = -1)
const;
375 #ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION 395 #endif //BT_BACKWARDS_COMPATIBLE_SERIALIZATION 423 #endif //BT_CONETWISTCONSTRAINT_H
const btRigidBody & getRigidBodyA() const
void setMaxMotorImpulseNormalized(btScalar maxMotorImpulse)
void setLimit(int limitIndex, btScalar limitValue)
btTransformDoubleData m_rbAFrame
btScalar m_maxMotorImpulse
btTransformFloatData m_rbAFrame
btScalar m_swingCorrection
btTypedConstraintDoubleData m_typeConstraintData
Jacobian entry is an abstraction that allows to describe constraints it can be used in combination wi...
#define btConeTwistConstraintData2
btScalar getTwistLimitSign()
btScalar getMaxMotorImpulse() const
void setMaxMotorImpulse(btScalar maxMotorImpulse)
const btRigidBody & getRigidBodyB() const
btScalar getDamping() const
virtual int calculateSerializeBufferSize() const
#define SIMD_FORCE_INLINE
void setDamping(btScalar damping)
btTransformFloatData m_rbBFrame
btScalar m_twistLimitRatio
double m_relaxationFactor
const btTransform & getAFrame() const
btScalar m_relaxationFactor
btScalar getTwistAngle() const
void setLimit(btScalar _swingSpan1, btScalar _swingSpan2, btScalar _twistSpan, btScalar _softness=1.f, btScalar _biasFactor=0.3f, btScalar _relaxationFactor=1.0f)
btScalar getLimit(int limitIndex) const
btScalar getSwingSpan1() const
btScalar m_twistLimitSign
btTypedConstraintData m_typeConstraintData
btVector3 m_accMotorImpulse
The btRigidBody is the main class for rigid body objects.
bool m_useSolveConstraintObsolete
const btQuaternion & getMotorTarget() const
btScalar m_twistCorrection
this structure is not used, except for loading pre-2.82 .bullet files
bool isMotorEnabled() const
void setAngularOnly(bool angularOnly)
btTransformDoubleData m_rbBFrame
btVector3 can be used to represent 3D points and vectors.
#define ATTRIBUTE_ALIGNED16(a)
btScalar getSwingSpan2() const
btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc) ...
void setFixThresh(btScalar fixThresh)
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
bool getAngularOnly() const
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btScalar getBiasFactor() const
const btTransform & getFrameOffsetA() const
#define BT_DECLARE_ALIGNED_ALLOCATOR()
btScalar m_accSwingLimitImpulse
btScalar getRelaxationFactor() const
virtual int calculateSerializeBufferSize() const
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
this structure is not used, except for loading pre-2.82 .bullet files
btScalar getTwistSpan() const
btScalar m_swingLimitRatio
btScalar m_accTwistLimitImpulse
The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatr...
const btTransform & getFrameOffsetB() const
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
bool isMaxMotorImpulseNormalized() const
bool m_bNormalizedMotorStrength
btScalar getLimitSoftness() const
virtual const char * serialize(void *dataBuffer, class btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
const btTransform & getBFrame() const
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define btConeTwistConstraintDataName