[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14643] trunk/blender/source/gameengine: Fix BGE bug: dynamic-but-not-rigid objects are added as rigid body during the game.

Benoit Bolsee benoit.bolsee at online.be
Thu May 1 18:00:59 CEST 2008


Revision: 14643
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14643
Author:   ben2610
Date:     2008-05-01 18:00:59 +0200 (Thu, 01 May 2008)

Log Message:
-----------
Fix BGE bug: dynamic-but-not-rigid objects are added as rigid body during the game.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h

Modified: trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp	2008-05-01 14:51:06 UTC (rev 14642)
+++ trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp	2008-05-01 16:00:59 UTC (rev 14643)
@@ -1123,7 +1123,7 @@
 	ci.m_inertiaFactor = shapeprops->m_inertia/0.4f;//defaults to 0.4, don't want to change behaviour
 	ci.m_collisionFilterGroup = (isbulletdyna) ? short(CcdConstructionInfo::DefaultFilter) : short(CcdConstructionInfo::StaticFilter);
 	ci.m_collisionFilterMask = (isbulletdyna) ? short(CcdConstructionInfo::AllFilter) : short(CcdConstructionInfo::AllFilter ^ CcdConstructionInfo::StaticFilter);
-
+	ci.m_bRigid = objprop->m_dyna && objprop->m_angular_rigidbody;
 	KX_BulletPhysicsController* physicscontroller = new KX_BulletPhysicsController(ci,isbulletdyna);
 	//remember that we created a shape so that we can delete it when the scene is removed (bullet will not delete it) 
 	kxscene->AddShape(bm);
@@ -1147,6 +1147,7 @@
 	//{
 	//	rbody->setCollisionFlags(rbody->getCollisionFlags() | btCollisionObject::CF_NO_CONTACT_RESPONSE);
 	//}
+	
 	if (objprop->m_dyna && !objprop->m_angular_rigidbody)
 	{
 		/*
@@ -1161,8 +1162,10 @@
 		*/
 
 		//env->createConstraint(physicscontroller,0,PHY_ANGULAR_CONSTRAINT,0,0,0,0,0,1);
-		physicscontroller->GetRigidBody()->setAngularFactor(0.f);
-
+	
+		//Now done directly in ci.m_bRigid so that it propagates to replica
+		//physicscontroller->GetRigidBody()->setAngularFactor(0.f);
+		;
 	}
 
 	bool isActor = objprop->m_isactor;

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp	2008-05-01 14:51:06 UTC (rev 14642)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp	2008-05-01 16:00:59 UTC (rev 14643)
@@ -137,6 +137,10 @@
 	m_body->setGravity( m_cci.m_gravity);
 	m_body->setDamping(m_cci.m_linearDamping, m_cci.m_angularDamping);
 
+	if (!m_cci.m_bRigid)
+	{
+		m_body->setAngularFactor(0.f);
+	}
 }
 
 CcdPhysicsController::~CcdPhysicsController()

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h	2008-05-01 14:51:06 UTC (rev 14642)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h	2008-05-01 16:00:59 UTC (rev 14643)
@@ -60,6 +60,7 @@
 		m_linearDamping(0.1f),
 		m_angularDamping(0.1f),
 		m_collisionFlags(0),
+		m_bRigid(false),
 		m_collisionFilterGroup(DefaultFilter),
 		m_collisionFilterMask(AllFilter),
 		m_collisionShape(0),
@@ -78,6 +79,7 @@
 	btScalar	m_linearDamping;
 	btScalar	m_angularDamping;
 	int			m_collisionFlags;
+	bool		m_bRigid;
 
 	///optional use of collision group/mask:
 	///only collision with object goups that match the collision mask.





More information about the Bf-blender-cvs mailing list