You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-26 15:46:23 +00:00
Update to bullet master (2.90)
This commit is contained in:
@@ -46,7 +46,7 @@ struct btContactSolverInfoData
|
||||
btScalar m_sor; //successive over-relaxation term
|
||||
btScalar m_erp; //error reduction for non-contact constraints
|
||||
btScalar m_erp2; //error reduction for contact constraints
|
||||
btScalar m_deformable_erp; //error reduction for deformable constraints
|
||||
btScalar m_deformable_erp; //error reduction for deformable constraints
|
||||
btScalar m_globalCfm; //constraint force mixing for contacts and non-contacts
|
||||
btScalar m_frictionERP; //error reduction for friction constraints
|
||||
btScalar m_frictionCFM; //constraint force mixing for friction constraints
|
||||
@@ -67,6 +67,7 @@ struct btContactSolverInfoData
|
||||
bool m_jointFeedbackInWorldSpace;
|
||||
bool m_jointFeedbackInJointFrame;
|
||||
int m_reportSolverAnalytics;
|
||||
int m_numNonContactInnerIterations;
|
||||
};
|
||||
|
||||
struct btContactSolverInfo : public btContactSolverInfoData
|
||||
@@ -82,7 +83,7 @@ struct btContactSolverInfo : public btContactSolverInfoData
|
||||
m_numIterations = 10;
|
||||
m_erp = btScalar(0.2);
|
||||
m_erp2 = btScalar(0.2);
|
||||
m_deformable_erp = btScalar(0.);
|
||||
m_deformable_erp = btScalar(0.1);
|
||||
m_globalCfm = btScalar(0.);
|
||||
m_frictionERP = btScalar(0.2); //positional friction 'anchors' are disabled by default
|
||||
m_frictionCFM = btScalar(0.);
|
||||
@@ -104,6 +105,7 @@ struct btContactSolverInfo : public btContactSolverInfoData
|
||||
m_jointFeedbackInWorldSpace = false;
|
||||
m_jointFeedbackInJointFrame = false;
|
||||
m_reportSolverAnalytics = 0;
|
||||
m_numNonContactInnerIterations = 1; // the number of inner iterations for solving motor constraint in a single iteration of the constraint solve
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -876,7 +876,10 @@ int btGeneric6DofSpring2Constraint::get_limit_motor_info2(
|
||||
// will we not request a velocity with the wrong direction ?
|
||||
// and the answer is not, because in practice during the solving the current velocity is subtracted from the m_constraintError
|
||||
// so the sign of the force that is really matters
|
||||
info->m_constraintError[srow] = (rotational ? -1 : 1) * (f < 0 ? -SIMD_INFINITY : SIMD_INFINITY);
|
||||
if (m_flags & BT_6DOF_FLAGS_USE_INFINITE_ERROR)
|
||||
info->m_constraintError[srow] = (rotational ? -1 : 1) * (f < 0 ? -SIMD_INFINITY : SIMD_INFINITY);
|
||||
else
|
||||
info->m_constraintError[srow] = vel + f / m * (rotational ? -1 : 1);
|
||||
|
||||
btScalar minf = f < fd ? f : fd;
|
||||
btScalar maxf = f < fd ? fd : f;
|
||||
|
||||
@@ -265,6 +265,7 @@ enum bt6DofFlags2
|
||||
BT_6DOF_FLAGS_ERP_STOP2 = 2,
|
||||
BT_6DOF_FLAGS_CFM_MOTO2 = 4,
|
||||
BT_6DOF_FLAGS_ERP_MOTO2 = 8,
|
||||
BT_6DOF_FLAGS_USE_INFINITE_ERROR = (1<<16)
|
||||
};
|
||||
#define BT_6DOF_FLAGS_AXIS_SHIFT2 4 // bits per axis
|
||||
|
||||
|
||||
@@ -14,7 +14,9 @@ subject to the following restrictions:
|
||||
*/
|
||||
|
||||
//#define COMPUTE_IMPULSE_DENOM 1
|
||||
//#define BT_ADDITIONAL_DEBUG
|
||||
#ifdef BT_DEBUG
|
||||
# define BT_ADDITIONAL_DEBUG
|
||||
#endif
|
||||
|
||||
//It is not necessary (redundant) to refresh contact manifolds, this refresh has been moved to the collision algorithms.
|
||||
|
||||
@@ -690,8 +692,10 @@ int btSequentialImpulseConstraintSolver::getOrInitSolverBody(btCollisionObject&
|
||||
{
|
||||
#if BT_THREADSAFE
|
||||
int solverBodyId = -1;
|
||||
bool isRigidBodyType = btRigidBody::upcast(&body) != NULL;
|
||||
if (isRigidBodyType && !body.isStaticOrKinematicObject())
|
||||
const bool isRigidBodyType = btRigidBody::upcast(&body) != NULL;
|
||||
const bool isStaticOrKinematic = body.isStaticOrKinematicObject();
|
||||
const bool isKinematic = body.isKinematicObject();
|
||||
if (isRigidBodyType && !isStaticOrKinematic)
|
||||
{
|
||||
// dynamic body
|
||||
// Dynamic bodies can only be in one island, so it's safe to write to the companionId
|
||||
@@ -704,7 +708,7 @@ int btSequentialImpulseConstraintSolver::getOrInitSolverBody(btCollisionObject&
|
||||
body.setCompanionId(solverBodyId);
|
||||
}
|
||||
}
|
||||
else if (isRigidBodyType && body.isKinematicObject())
|
||||
else if (isRigidBodyType && isKinematic)
|
||||
{
|
||||
//
|
||||
// NOTE: must test for kinematic before static because some kinematic objects also
|
||||
|
||||
Reference in New Issue
Block a user