void btGeneric6DofConstraint::calculateTransforms() { m_calculatedTransformA = m_rbA.getCenterOfMassTransform() * m_frameInA; m_calculatedTransformB = m_rbB.getCenterOfMassTransform() * m_frameInB; calculateLinearInfo(); calculateAngleInfo(); }
void btGeneric6DofSpring2Constraint::calculateTransforms(const btTransform& transA,const btTransform& transB) { m_calculatedTransformA = transA * m_frameInA; m_calculatedTransformB = transB * m_frameInB; calculateLinearInfo(); calculateAngleInfo(); btScalar miA = getRigidBodyA().getInvMass(); btScalar miB = getRigidBodyB().getInvMass(); m_hasStaticBody = (miA < SIMD_EPSILON) || (miB < SIMD_EPSILON); btScalar miS = miA + miB; if(miS > btScalar(0.f)) { m_factA = miB / miS; } else { m_factA = btScalar(0.5f); } m_factB = btScalar(1.0f) - m_factA; }
void b3Generic6DofConstraint::calculateTransforms(const b3Transform& transA,const b3Transform& transB,const b3RigidBodyData* bodies) { m_calculatedTransformA = transA * m_frameInA; m_calculatedTransformB = transB * m_frameInB; calculateLinearInfo(); calculateAngleInfo(); if(m_useOffsetForConstraintFrame) { // get weight factors depending on masses b3Scalar miA = bodies[m_rbA].m_invMass; b3Scalar miB = bodies[m_rbB].m_invMass; m_hasStaticBody = (miA < B3_EPSILON) || (miB < B3_EPSILON); b3Scalar miS = miA + miB; if(miS > b3Scalar(0.f)) { m_factA = miB / miS; } else { m_factA = b3Scalar(0.5f); } m_factB = b3Scalar(1.0f) - m_factA; } }