fixes in Bullet stuff, roll influence for raycast vehicles was broken,
enable the setPhysicsTicRate for BGE Python
This commit is contained in:
@@ -254,20 +254,21 @@ void btGjkPairDetector::getClosestPointsNonVirtual(const ClosestPointInput& inpu
|
|||||||
}
|
}
|
||||||
#endif //
|
#endif //
|
||||||
|
|
||||||
m_cachedSeparatingAxis = newCachedSeparatingAxis;
|
|
||||||
|
|
||||||
//redundant m_simplexSolver->compute_points(pointOnA, pointOnB);
|
//redundant m_simplexSolver->compute_points(pointOnA, pointOnB);
|
||||||
|
|
||||||
//are we getting any closer ?
|
//are we getting any closer ?
|
||||||
if (previousSquaredDistance - squaredDistance <= SIMD_EPSILON * previousSquaredDistance)
|
if (previousSquaredDistance - squaredDistance <= SIMD_EPSILON * previousSquaredDistance)
|
||||||
{
|
{
|
||||||
m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
|
// m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
|
||||||
checkSimplex = true;
|
checkSimplex = true;
|
||||||
m_degenerateSimplex = 12;
|
m_degenerateSimplex = 12;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_cachedSeparatingAxis = newCachedSeparatingAxis;
|
||||||
|
|
||||||
//degeneracy, this is typically due to invalid/uninitialized worldtransforms for a btCollisionObject
|
//degeneracy, this is typically due to invalid/uninitialized worldtransforms for a btCollisionObject
|
||||||
if (m_curIter++ > gGjkMaxIter)
|
if (m_curIter++ > gGjkMaxIter)
|
||||||
{
|
{
|
||||||
@@ -294,7 +295,7 @@ void btGjkPairDetector::getClosestPointsNonVirtual(const ClosestPointInput& inpu
|
|||||||
if (!check)
|
if (!check)
|
||||||
{
|
{
|
||||||
//do we need this backup_closest here ?
|
//do we need this backup_closest here ?
|
||||||
m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
|
// m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
|
||||||
m_degenerateSimplex = 13;
|
m_degenerateSimplex = 13;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -303,7 +304,7 @@ void btGjkPairDetector::getClosestPointsNonVirtual(const ClosestPointInput& inpu
|
|||||||
if (checkSimplex)
|
if (checkSimplex)
|
||||||
{
|
{
|
||||||
m_simplexSolver->compute_points(pointOnA, pointOnB);
|
m_simplexSolver->compute_points(pointOnA, pointOnB);
|
||||||
normalInB = pointOnA-pointOnB;
|
normalInB = m_cachedSeparatingAxis;
|
||||||
btScalar lenSqr =m_cachedSeparatingAxis.length2();
|
btScalar lenSqr =m_cachedSeparatingAxis.length2();
|
||||||
|
|
||||||
//valid normal
|
//valid normal
|
||||||
|
@@ -698,7 +698,7 @@ void btRaycastVehicle::updateFriction(btScalar timeStep)
|
|||||||
btVector3 sideImp = m_axle[wheel] * m_sideImpulse[wheel];
|
btVector3 sideImp = m_axle[wheel] * m_sideImpulse[wheel];
|
||||||
|
|
||||||
#if defined ROLLING_INFLUENCE_FIX // fix. It only worked if car's up was along Y - VT.
|
#if defined ROLLING_INFLUENCE_FIX // fix. It only worked if car's up was along Y - VT.
|
||||||
btVector3 vChassisWorldUp = getRigidBody()->getCenterOfMassTransform().getBasis().getColumn(1);
|
btVector3 vChassisWorldUp = getRigidBody()->getCenterOfMassTransform().getBasis().getColumn(m_indexUpAxis);
|
||||||
rel_pos -= vChassisWorldUp * (vChassisWorldUp.dot(rel_pos) * (1.f-wheelInfo.m_rollInfluence));
|
rel_pos -= vChassisWorldUp * (vChassisWorldUp.dot(rel_pos) * (1.f-wheelInfo.m_rollInfluence));
|
||||||
#else
|
#else
|
||||||
rel_pos[m_indexUpAxis] *= wheelInfo.m_rollInfluence;
|
rel_pos[m_indexUpAxis] *= wheelInfo.m_rollInfluence;
|
||||||
|
@@ -125,7 +125,11 @@ protected:
|
|||||||
virtual void debugDrawWorld();
|
virtual void debugDrawWorld();
|
||||||
// virtual bool proceedDeltaTimeOneStep(float timeStep);
|
// virtual bool proceedDeltaTimeOneStep(float timeStep);
|
||||||
|
|
||||||
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep){};
|
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep)
|
||||||
|
{
|
||||||
|
//based on DEFAULT_PHYSICS_TIC_RATE of 60 hertz
|
||||||
|
setNumTimeSubSteps(fixedTimeStep/60.f);
|
||||||
|
}
|
||||||
//returns 0.f if no fixed timestep is used
|
//returns 0.f if no fixed timestep is used
|
||||||
|
|
||||||
virtual float getFixedTimeStep(){ return 0.f;};
|
virtual float getFixedTimeStep(){ return 0.f;};
|
||||||
|
Reference in New Issue
Block a user