Revision: 35884
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35884
Author:   erwin
Date:     2011-03-29 18:44:18 +0000 (Tue, 29 Mar 2011)
Log Message:
-----------
fixes in Bullet stuff, roll influence for raycast vehicles was broken,
enable the setPhysicsTicRate for BGE Python

Modified Paths:
--------------
    
trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
    trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h

Modified: 
trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
===================================================================
--- 
trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
 2011-03-29 16:52:26 UTC (rev 35883)
+++ 
trunk/blender/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
 2011-03-29 18:44:18 UTC (rev 35884)
@@ -254,20 +254,21 @@
                        }
 #endif //
                        
-                       m_cachedSeparatingAxis = newCachedSeparatingAxis;
 
                        //redundant m_simplexSolver->compute_points(pointOnA, 
pointOnB);
 
                        //are we getting any closer ?
                        if (previousSquaredDistance - squaredDistance <= 
SIMD_EPSILON * previousSquaredDistance) 
                        { 
-                               
m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
+//                             
m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
                                checkSimplex = true;
                                m_degenerateSimplex = 12;
                                
                                break;
                        }
 
+                       m_cachedSeparatingAxis = newCachedSeparatingAxis;
+
                          //degeneracy, this is typically due to 
invalid/uninitialized worldtransforms for a btCollisionObject   
               if (m_curIter++ > gGjkMaxIter)   
               {   
@@ -294,7 +295,7 @@
                        if (!check)
                        {
                                //do we need this backup_closest here ?
-                               
m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
+//                             
m_simplexSolver->backup_closest(m_cachedSeparatingAxis);
                                m_degenerateSimplex = 13;
                                break;
                        }
@@ -303,7 +304,7 @@
                if (checkSimplex)
                {
                        m_simplexSolver->compute_points(pointOnA, pointOnB);
-                       normalInB = pointOnA-pointOnB;
+                       normalInB = m_cachedSeparatingAxis;
                        btScalar lenSqr =m_cachedSeparatingAxis.length2();
                        
                        //valid normal

Modified: 
trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
===================================================================
--- 
trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp    
    2011-03-29 16:52:26 UTC (rev 35883)
+++ 
trunk/blender/extern/bullet2/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp    
    2011-03-29 18:44:18 UTC (rev 35884)
@@ -698,7 +698,7 @@
                                        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.
-                                       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));
 #else
                                        rel_pos[m_indexUpAxis] *= 
wheelInfo.m_rollInfluence;

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h      
2011-03-29 16:52:26 UTC (rev 35883)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h      
2011-03-29 18:44:18 UTC (rev 35884)
@@ -125,7 +125,11 @@
                virtual void            debugDrawWorld();
 //             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
 
                virtual float           getFixedTimeStep(){ return 0.f;};

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to