[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16368] branches/sim_physics/source/ gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp: Partial repair of raycast system with Bullet 2.71.

Benoit Bolsee benoit.bolsee at online.be
Fri Sep 5 01:07:52 CEST 2008


Revision: 16368
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16368
Author:   ben2610
Date:     2008-09-05 01:07:43 +0200 (Fri, 05 Sep 2008)

Log Message:
-----------
Partial repair of raycast system with Bullet 2.71. Still to be done: face and normal information

Modified Paths:
--------------
    branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp

Modified: branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
===================================================================
--- branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp	2008-09-04 23:05:00 UTC (rev 16367)
+++ branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp	2008-09-04 23:07:43 UTC (rev 16368)
@@ -721,17 +721,20 @@
 	{
 	}
 
-	virtual bool    NeedRayCast(btCollisionObject* object)
+	virtual bool needsCollision(btBroadphaseProxy* proxy0) const
 	{
+		if (!(proxy0->m_collisionFilterGroup & m_collisionFilterMask))
+			return false;
+		if (!(m_collisionFilterGroup & proxy0->m_collisionFilterMask))
+			return false;
+		btCollisionObject* object = (btCollisionObject*)proxy0->m_clientObject;
 		CcdPhysicsController* phyCtrl = static_cast<CcdPhysicsController*>(object->getUserPointer());
-		if (phyCtrl != m_phyRayFilter.m_ignoreController)
-		{
-			return m_phyRayFilter.needBroadphaseRayCast(phyCtrl);
-		}
-		return false;
+		if (phyCtrl == m_phyRayFilter.m_ignoreController)
+			return false;
+		return m_phyRayFilter.needBroadphaseRayCast(phyCtrl);
 	}
 
-	virtual	float	AddSingleResult( btCollisionWorld::LocalRayResult& rayResult)
+	virtual	btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult,bool normalInWorldSpace)
 	{
 		CcdPhysicsController* curHit = static_cast<CcdPhysicsController*>(rayResult.m_collisionObject->getUserPointer());
 		// save shape information as ClosestRayResultCallback::AddSingleResult() does not do it
@@ -744,8 +747,7 @@
 			m_hitTriangleShape = NULL;
 			m_hitTriangleIndex = 0;
 		}
-		bool normalInWorldspace = true;
-		return ClosestRayResultCallback::addSingleResult(rayResult,normalInWorldspace);
+		return ClosestRayResultCallback::addSingleResult(rayResult,normalInWorldSpace);
 	}
 
 };





More information about the Bf-blender-cvs mailing list