Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/bullet2/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h')
-rw-r--r--extern/bullet2/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h230
1 files changed, 108 insertions, 122 deletions
diff --git a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h
index b55db0c1bfb..d30f3dee5c5 100644
--- a/extern/bullet2/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h
+++ b/extern/bullet2/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h
@@ -16,26 +16,24 @@ subject to the following restrictions:
#ifndef BT_TYPED_CONSTRAINT_H
#define BT_TYPED_CONSTRAINT_H
-
#include "LinearMath/btScalar.h"
#include "btSolverConstraint.h"
#include "BulletDynamics/Dynamics/btRigidBody.h"
#ifdef BT_USE_DOUBLE_PRECISION
-#define btTypedConstraintData2 btTypedConstraintDoubleData
-#define btTypedConstraintDataName "btTypedConstraintDoubleData"
+#define btTypedConstraintData2 btTypedConstraintDoubleData
+#define btTypedConstraintDataName "btTypedConstraintDoubleData"
#else
-#define btTypedConstraintData2 btTypedConstraintFloatData
-#define btTypedConstraintDataName "btTypedConstraintFloatData"
-#endif //BT_USE_DOUBLE_PRECISION
-
+#define btTypedConstraintData2 btTypedConstraintFloatData
+#define btTypedConstraintDataName "btTypedConstraintFloatData"
+#endif //BT_USE_DOUBLE_PRECISION
class btSerializer;
//Don't change any of the existing enum values, so add enum types at the end for serialization compatibility
enum btTypedConstraintType
{
- POINT2POINT_CONSTRAINT_TYPE=3,
+ POINT2POINT_CONSTRAINT_TYPE = 3,
HINGE_CONSTRAINT_TYPE,
CONETWIST_CONSTRAINT_TYPE,
D6_CONSTRAINT_TYPE,
@@ -48,91 +46,88 @@ enum btTypedConstraintType
MAX_CONSTRAINT_TYPE
};
-
enum btConstraintParams
{
- BT_CONSTRAINT_ERP=1,
+ BT_CONSTRAINT_ERP = 1,
BT_CONSTRAINT_STOP_ERP,
BT_CONSTRAINT_CFM,
BT_CONSTRAINT_STOP_CFM
};
#if 1
- #define btAssertConstrParams(_par) btAssert(_par)
+#define btAssertConstrParams(_par) btAssert(_par)
#else
- #define btAssertConstrParams(_par)
+#define btAssertConstrParams(_par)
#endif
-
-ATTRIBUTE_ALIGNED16(struct) btJointFeedback
+ATTRIBUTE_ALIGNED16(struct)
+btJointFeedback
{
BT_DECLARE_ALIGNED_ALLOCATOR();
- btVector3 m_appliedForceBodyA;
- btVector3 m_appliedTorqueBodyA;
- btVector3 m_appliedForceBodyB;
- btVector3 m_appliedTorqueBodyB;
+ btVector3 m_appliedForceBodyA;
+ btVector3 m_appliedTorqueBodyA;
+ btVector3 m_appliedForceBodyB;
+ btVector3 m_appliedTorqueBodyB;
};
-
///TypedConstraint is the baseclass for Bullet constraints and vehicles
-ATTRIBUTE_ALIGNED16(class) btTypedConstraint : public btTypedObject
+ATTRIBUTE_ALIGNED16(class)
+btTypedConstraint : public btTypedObject
{
- int m_userConstraintType;
+ int m_userConstraintType;
- union
- {
- int m_userConstraintId;
+ union {
+ int m_userConstraintId;
void* m_userConstraintPtr;
};
- btScalar m_breakingImpulseThreshold;
- bool m_isEnabled;
- bool m_needsFeedback;
- int m_overrideNumSolverIterations;
+ btScalar m_breakingImpulseThreshold;
+ bool m_isEnabled;
+ bool m_needsFeedback;
+ int m_overrideNumSolverIterations;
-
- btTypedConstraint& operator=(btTypedConstraint& other)
+ btTypedConstraint& operator=(btTypedConstraint& other)
{
btAssert(0);
- (void) other;
+ (void)other;
return *this;
}
protected:
- btRigidBody& m_rbA;
- btRigidBody& m_rbB;
- btScalar m_appliedImpulse;
- btScalar m_dbgDrawSize;
- btJointFeedback* m_jointFeedback;
+ btRigidBody& m_rbA;
+ btRigidBody& m_rbB;
+ btScalar m_appliedImpulse;
+ btScalar m_dbgDrawSize;
+ btJointFeedback* m_jointFeedback;
///internal method used by the constraint solver, don't use them directly
btScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact);
-
public:
-
BT_DECLARE_ALIGNED_ALLOCATOR();
- virtual ~btTypedConstraint() {};
- btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA);
- btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA,btRigidBody& rbB);
+ virtual ~btTypedConstraint(){};
+ btTypedConstraint(btTypedConstraintType type, btRigidBody & rbA);
+ btTypedConstraint(btTypedConstraintType type, btRigidBody & rbA, btRigidBody & rbB);
- struct btConstraintInfo1 {
- int m_numConstraintRows,nub;
+ struct btConstraintInfo1
+ {
+ int m_numConstraintRows, nub;
};
static btRigidBody& getFixedBody();
- struct btConstraintInfo2 {
+ struct btConstraintInfo2
+ {
// integrator parameters: frames per second (1/stepsize), default error
// reduction parameter (0..1).
- btScalar fps,erp;
+ btScalar fps, erp;
// for the first and second body, pointers to two (linear and angular)
// n*3 jacobian sub matrices, stored by rows. these matrices will have
// been initialized to 0 on entry. if the second body is zero then the
// J2xx pointers may be 0.
- btScalar *m_J1linearAxis,*m_J1angularAxis,*m_J2linearAxis,*m_J2angularAxis;
+ btScalar *m_J1linearAxis, *m_J1angularAxis, *m_J2linearAxis, *m_J2angularAxis;
// elements to jump from one row to the next in J's
int rowskip;
@@ -140,24 +135,19 @@ public:
// right hand sides of the equation J*v = c + cfm * lambda. cfm is the
// "constraint force mixing" vector. c is set to zero on entry, cfm is
// set to a constant value (typically very small or zero) value on entry.
- btScalar *m_constraintError,*cfm;
+ btScalar *m_constraintError, *cfm;
// lo and hi limits for variables (set to -/+ infinity on entry).
- btScalar *m_lowerLimit,*m_upperLimit;
+ btScalar *m_lowerLimit, *m_upperLimit;
- // findex vector for variables. see the LCP solver interface for a
- // description of what this does. this is set to -1 on entry.
- // note that the returned indexes are relative to the first index of
- // the constraint.
- int *findex;
// number of solver iterations
int m_numIterations;
//damping of the velocity
- btScalar m_damping;
+ btScalar m_damping;
};
- int getOverrideNumSolverIterations() const
+ int getOverrideNumSolverIterations() const
{
return m_overrideNumSolverIterations;
}
@@ -170,60 +160,57 @@ public:
}
///internal method used by the constraint solver, don't use them directly
- virtual void buildJacobian() {};
+ virtual void buildJacobian(){};
///internal method used by the constraint solver, don't use them directly
- virtual void setupSolverConstraint(btConstraintArray& ca, int solverBodyA,int solverBodyB, btScalar timeStep)
+ virtual void setupSolverConstraint(btConstraintArray & ca, int solverBodyA, int solverBodyB, btScalar timeStep)
{
- (void)ca;
- (void)solverBodyA;
- (void)solverBodyB;
- (void)timeStep;
+ (void)ca;
+ (void)solverBodyA;
+ (void)solverBodyB;
+ (void)timeStep;
}
-
+
///internal method used by the constraint solver, don't use them directly
- virtual void getInfo1 (btConstraintInfo1* info)=0;
+ virtual void getInfo1(btConstraintInfo1 * info) = 0;
///internal method used by the constraint solver, don't use them directly
- virtual void getInfo2 (btConstraintInfo2* info)=0;
+ virtual void getInfo2(btConstraintInfo2 * info) = 0;
///internal method used by the constraint solver, don't use them directly
- void internalSetAppliedImpulse(btScalar appliedImpulse)
+ void internalSetAppliedImpulse(btScalar appliedImpulse)
{
m_appliedImpulse = appliedImpulse;
}
///internal method used by the constraint solver, don't use them directly
- btScalar internalGetAppliedImpulse()
+ btScalar internalGetAppliedImpulse()
{
return m_appliedImpulse;
}
-
- btScalar getBreakingImpulseThreshold() const
+ btScalar getBreakingImpulseThreshold() const
{
- return m_breakingImpulseThreshold;
+ return m_breakingImpulseThreshold;
}
- void setBreakingImpulseThreshold(btScalar threshold)
+ void setBreakingImpulseThreshold(btScalar threshold)
{
m_breakingImpulseThreshold = threshold;
}
- bool isEnabled() const
+ bool isEnabled() const
{
return m_isEnabled;
}
- void setEnabled(bool enabled)
+ void setEnabled(bool enabled)
{
- m_isEnabled=enabled;
+ m_isEnabled = enabled;
}
-
///internal method used by the constraint solver, don't use them directly
- virtual void solveConstraintObsolete(btSolverBody& /*bodyA*/,btSolverBody& /*bodyB*/,btScalar /*timeStep*/) {};
+ virtual void solveConstraintObsolete(btSolverBody& /*bodyA*/, btSolverBody& /*bodyB*/, btScalar /*timeStep*/){};
-
const btRigidBody& getRigidBodyA() const
{
return m_rbA;
@@ -233,7 +220,7 @@ public:
return m_rbB;
}
- btRigidBody& getRigidBodyA()
+ btRigidBody& getRigidBodyA()
{
return m_rbA;
}
@@ -244,15 +231,15 @@ public:
int getUserConstraintType() const
{
- return m_userConstraintType ;
+ return m_userConstraintType;
}
- void setUserConstraintType(int userConstraintType)
+ void setUserConstraintType(int userConstraintType)
{
m_userConstraintType = userConstraintType;
};
- void setUserConstraintId(int uid)
+ void setUserConstraintId(int uid)
{
m_userConstraintId = uid;
}
@@ -262,17 +249,17 @@ public:
return m_userConstraintId;
}
- void setUserConstraintPtr(void* ptr)
+ void setUserConstraintPtr(void* ptr)
{
m_userConstraintPtr = ptr;
}
- void* getUserConstraintPtr()
+ void* getUserConstraintPtr()
{
return m_userConstraintPtr;
}
- void setJointFeedback(btJointFeedback* jointFeedback)
+ void setJointFeedback(btJointFeedback * jointFeedback)
{
m_jointFeedback = jointFeedback;
}
@@ -287,37 +274,36 @@ public:
return m_jointFeedback;
}
-
int getUid() const
{
- return m_userConstraintId;
- }
+ return m_userConstraintId;
+ }
- bool needsFeedback() const
+ bool needsFeedback() const
{
return m_needsFeedback;
}
///enableFeedback will allow to read the applied linear and angular impulse
///use getAppliedImpulse, getAppliedLinearImpulse and getAppliedAngularImpulse to read feedback information
- void enableFeedback(bool needsFeedback)
+ void enableFeedback(bool needsFeedback)
{
m_needsFeedback = needsFeedback;
}
- ///getAppliedImpulse is an estimated total applied impulse.
+ ///getAppliedImpulse is an estimated total applied impulse.
///This feedback could be used to determine breaking constraints or playing sounds.
- btScalar getAppliedImpulse() const
+ btScalar getAppliedImpulse() const
{
btAssert(m_needsFeedback);
return m_appliedImpulse;
}
- btTypedConstraintType getConstraintType () const
+ btTypedConstraintType getConstraintType() const
{
return btTypedConstraintType(m_objectType);
}
-
+
void setDbgDrawSize(btScalar dbgDrawSize)
{
m_dbgDrawSize = dbgDrawSize;
@@ -327,35 +313,34 @@ public:
return m_dbgDrawSize;
}
- ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).
+ ///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).
///If no axis is provided, it uses the default axis for this constraint.
- virtual void setParam(int num, btScalar value, int axis = -1) = 0;
+ virtual void setParam(int num, btScalar value, int axis = -1) = 0;
///return the local value of parameter
- virtual btScalar getParam(int num, int axis = -1) const = 0;
-
- virtual int calculateSerializeBufferSize() const;
+ virtual btScalar getParam(int num, int axis = -1) const = 0;
- ///fills the dataBuffer and returns the struct name (and 0 on failure)
- virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
+ virtual int calculateSerializeBufferSize() const;
+ ///fills the dataBuffer and returns the struct name (and 0 on failure)
+ virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
};
-// returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits
+// returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits
// all arguments should be normalized angles (i.e. in range [-SIMD_PI, SIMD_PI])
SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)
{
- if(angleLowerLimitInRadians >= angleUpperLimitInRadians)
+ if (angleLowerLimitInRadians >= angleUpperLimitInRadians)
{
return angleInRadians;
}
- else if(angleInRadians < angleLowerLimitInRadians)
+ else if (angleInRadians < angleLowerLimitInRadians)
{
btScalar diffLo = btFabs(btNormalizeAngle(angleLowerLimitInRadians - angleInRadians));
btScalar diffHi = btFabs(btNormalizeAngle(angleUpperLimitInRadians - angleInRadians));
return (diffLo < diffHi) ? angleInRadians : (angleInRadians + SIMD_2_PI);
}
- else if(angleInRadians > angleUpperLimitInRadians)
+ else if (angleInRadians > angleUpperLimitInRadians)
{
btScalar diffHi = btFabs(btNormalizeAngle(angleInRadians - angleUpperLimitInRadians));
btScalar diffLo = btFabs(btNormalizeAngle(angleInRadians - angleLowerLimitInRadians));
@@ -367,6 +352,8 @@ SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScal
}
}
+// clang-format off
+
///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
struct btTypedConstraintFloatData
{
@@ -390,6 +377,8 @@ struct btTypedConstraintFloatData
};
+
+
///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
#define BT_BACKWARDS_COMPATIBLE_SERIALIZATION
@@ -441,18 +430,17 @@ struct btTypedConstraintDoubleData
};
+// clang-format on
-SIMD_FORCE_INLINE int btTypedConstraint::calculateSerializeBufferSize() const
+SIMD_FORCE_INLINE int btTypedConstraint::calculateSerializeBufferSize() const
{
return sizeof(btTypedConstraintData2);
}
-
-
class btAngularLimit
{
private:
- btScalar
+ btScalar
m_center,
m_halfRange,
m_softness,
@@ -467,15 +455,16 @@ private:
public:
/// Default constructor initializes limit as inactive, allowing free constraint movement
btAngularLimit()
- :m_center(0.0f),
- m_halfRange(-1.0f),
- m_softness(0.9f),
- m_biasFactor(0.3f),
- m_relaxationFactor(1.0f),
- m_correction(0.0f),
- m_sign(0.0f),
- m_solveLimit(false)
- {}
+ : m_center(0.0f),
+ m_halfRange(-1.0f),
+ m_softness(0.9f),
+ m_biasFactor(0.3f),
+ m_relaxationFactor(1.0f),
+ m_correction(0.0f),
+ m_sign(0.0f),
+ m_solveLimit(false)
+ {
+ }
/// Sets all limit's parameters.
/// When low > high limit becomes inactive.
@@ -504,13 +493,13 @@ public:
return m_relaxationFactor;
}
- /// Returns correction value evaluated when test() was invoked
+ /// Returns correction value evaluated when test() was invoked
inline btScalar getCorrection() const
{
return m_correction;
}
- /// Returns sign value evaluated when test() was invoked
+ /// Returns sign value evaluated when test() was invoked
inline btScalar getSign() const
{
return m_sign;
@@ -538,9 +527,6 @@ public:
btScalar getLow() const;
btScalar getHigh() const;
-
};
-
-
-#endif //BT_TYPED_CONSTRAINT_H
+#endif //BT_TYPED_CONSTRAINT_H