Revision: 16007 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16007 Author: ben2610 Date: 2008-08-07 19:29:06 +0200 (Thu, 07 Aug 2008)
Log Message: ----------- BGE bug #17408 fixed: Radar sensor is oriented the wrong way when the set along negative axis. Improve reliability of Radar detection by clearing the manifold cache instead of updating it. Modified Paths: -------------- trunk/blender/source/gameengine/Ketsji/KX_RadarSensor.cpp trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp Modified: trunk/blender/source/gameengine/Ketsji/KX_RadarSensor.cpp =================================================================== --- trunk/blender/source/gameengine/Ketsji/KX_RadarSensor.cpp 2008-08-07 17:27:29 UTC (rev 16006) +++ trunk/blender/source/gameengine/Ketsji/KX_RadarSensor.cpp 2008-08-07 17:29:06 UTC (rev 16007) @@ -147,23 +147,23 @@ }; case 3: // -X Axis { - MT_Quaternion rotquatje(MT_Vector3(0,0,1),MT_radians(90)); + MT_Quaternion rotquatje(MT_Vector3(0,0,1),MT_radians(-90)); trans.rotate(rotquatje); - trans.translate(MT_Vector3 (0, m_coneheight/2.0 ,0)); + trans.translate(MT_Vector3 (0, -m_coneheight/2.0 ,0)); break; }; case 4: // -Y Axis { - MT_Quaternion rotquatje(MT_Vector3(1,0,0),MT_radians(-180)); - trans.rotate(rotquatje); - trans.translate(MT_Vector3 (0, m_coneheight/2.0 ,0)); + //MT_Quaternion rotquatje(MT_Vector3(1,0,0),MT_radians(-180)); + //trans.rotate(rotquatje); + trans.translate(MT_Vector3 (0, -m_coneheight/2.0 ,0)); break; }; case 5: // -Z Axis { - MT_Quaternion rotquatje(MT_Vector3(1,0,0),MT_radians(-90)); + MT_Quaternion rotquatje(MT_Vector3(1,0,0),MT_radians(90)); trans.rotate(rotquatje); - trans.translate(MT_Vector3 (0, m_coneheight/2.0 ,0)); + trans.translate(MT_Vector3 (0, -m_coneheight/2.0 ,0)); break; }; default: Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp =================================================================== --- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2008-08-07 17:27:29 UTC (rev 16006) +++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2008-08-07 17:29:06 UTC (rev 16007) @@ -966,15 +966,6 @@ { btRigidBody* rb0 = static_cast<btRigidBody*>(manifold->getBody0()); btRigidBody* rb1 = static_cast<btRigidBody*>(manifold->getBody1()); - // Bullet does not refresh the manifold contact point for object without contact response - // may need to remove this when a newer Bullet version is integrated - if (!dispatcher->needsResponse(rb0, rb1)) - { - manifold->refreshContactPoints(rb0->getCenterOfMassTransform(),rb1->getCenterOfMassTransform()); - numContacts = manifold->getNumContacts(); - if (!numContacts) - continue; - } if (m_debugDrawer && (m_debugDrawer->getDebugMode() & btIDebugDraw::DBG_DrawContactPoints)) { for (int j=0;j<numContacts;j++) @@ -1003,6 +994,15 @@ m_triggerCallbacks[PHY_OBJECT_RESPONSE](m_triggerCallbacksUserPtrs[PHY_OBJECT_RESPONSE], ctrl0,ctrl1,0); } + // Bullet does not refresh the manifold contact point for object without contact response + // may need to remove this when a newer Bullet version is integrated + if (!dispatcher->needsResponse(rb0, rb1)) + { + // Refresh algorithm fails sometimes when there is penetration + // (usuall the case with ghost and sensor objects) + // Let's just clear the manifold, in any case, it is recomputed on each frame. + manifold->clearManifold(); //refreshContactPoints(rb0->getCenterOfMassTransform(),rb1->getCenterOfMassTransform()); + } } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs