[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31636] trunk/blender/source: BGE patch #22623 applied: new bound type: Capsule.

Benoit Bolsee benoit.bolsee at online.be
Sat Aug 28 22:56:54 CEST 2010


Revision: 31636
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31636
Author:   ben2610
Date:     2010-08-28 22:56:54 +0200 (Sat, 28 Aug 2010)

Log Message:
-----------
BGE patch #22623 applied: new bound type: Capsule.

Modified Paths:
--------------
    trunk/blender/source/blender/makesdna/DNA_object_types.h
    trunk/blender/source/blender/makesrna/intern/rna_object.c
    trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h
    trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
    trunk/blender/source/gameengine/Physics/common/PHY_DynamicTypes.h

Modified: trunk/blender/source/blender/makesdna/DNA_object_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_object_types.h	2010-08-28 15:10:37 UTC (rev 31635)
+++ trunk/blender/source/blender/makesdna/DNA_object_types.h	2010-08-28 20:56:54 UTC (rev 31636)
@@ -402,6 +402,7 @@
 #define OB_BOUND_POLYH		4
 #define OB_BOUND_POLYT		5
 #define OB_BOUND_DYN_MESH   6
+#define OB_BOUND_CAPSULE	7
 
 
 /* **************** BASE ********************* */
@@ -564,4 +565,3 @@
 
 #endif
 
-

Modified: trunk/blender/source/blender/makesrna/intern/rna_object.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_object.c	2010-08-28 15:10:37 UTC (rev 31635)
+++ trunk/blender/source/blender/makesrna/intern/rna_object.c	2010-08-28 20:56:54 UTC (rev 31636)
@@ -76,6 +76,7 @@
 	{OB_BOUND_CONE, "CONE", 0, "Cone", ""},
 	{OB_BOUND_POLYT, "CONVEX_HULL", 0, "Convex Hull", ""},
 	{OB_BOUND_POLYH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""},
+	{OB_BOUND_CAPSULE, "CAPSULE", 0, "Capsule", ""},
 	//{OB_DYN_MESH, "DYNAMIC_MESH", 0, "Dynamic Mesh", ""},
 	{0, NULL, 0, NULL, NULL}};
 
@@ -384,6 +385,7 @@
 		RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CYLINDER);
 		RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_SPHERE);
 		RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_BOX);
+		RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CAPSULE);
 	}
 
 	RNA_enum_item_end(&item, &totitem);
@@ -1599,6 +1601,7 @@
 		{OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""},
 		{OB_BOUND_CONE, "CONE", 0, "Cone", ""},
 		{OB_BOUND_POLYH, "POLYHEDRON", 0, "Polyhedron", ""},
+		{OB_BOUND_CAPSULE, "CAPSULE", 0, "Capsule", ""},
 		{0, NULL, 0, NULL, NULL}};
 
 	static EnumPropertyItem dupli_items[] = {
@@ -2231,4 +2234,3 @@
 }
 
 #endif
-

Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2010-08-28 15:10:37 UTC (rev 31635)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2010-08-28 20:56:54 UTC (rev 31636)
@@ -1570,6 +1570,15 @@
 				objprop.m_boundobject.c.m_height = 2.f*bb.m_extends[2];
 				break;
 			}
+			case OB_BOUND_CAPSULE:
+			{
+				objprop.m_boundclass = KX_BOUNDCAPSULE;
+				objprop.m_boundobject.c.m_radius = MT_max(bb.m_extends[0], bb.m_extends[1]);
+				objprop.m_boundobject.c.m_height = 2.f*(bb.m_extends[2]-objprop.m_boundobject.c.m_radius);
+				if (objprop.m_boundobject.c.m_height < 0.f)
+					objprop.m_boundobject.c.m_height = 0.f;
+				break;
+			}
 		}
 	}
 

Modified: trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h	2010-08-28 15:10:37 UTC (rev 31635)
+++ trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h	2010-08-28 20:56:54 UTC (rev 31636)
@@ -53,7 +53,8 @@
 	KX_BOUNDCONE,
 	KX_BOUNDMESH,
 	KX_BOUNDPOLYTOPE,
-	KX_BOUND_DYN_MESH
+	KX_BOUND_DYN_MESH,
+	KX_BOUNDCAPSULE
 } KX_BoundBoxClass;
 
 struct KX_BoxBounds
@@ -168,4 +169,3 @@
 
 #endif
 #endif //KX_CONVERTPHYSICSOBJECTS
-

Modified: trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp	2010-08-28 15:10:37 UTC (rev 31635)
+++ trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp	2010-08-28 20:56:54 UTC (rev 31636)
@@ -184,6 +184,14 @@
 			bm = shapeInfo->CreateBulletShape(ci.m_margin);
 			break;
 		}
+	case KX_BOUNDCAPSULE:
+		{
+			shapeInfo->m_radius = objprop->m_boundobject.c.m_radius;
+			shapeInfo->m_height = objprop->m_boundobject.c.m_height;
+			shapeInfo->m_shapeType = PHY_SHAPE_CAPSULE;
+			bm = shapeInfo->CreateBulletShape(ci.m_margin);
+			break;
+		}
 	case KX_BOUNDMESH:
 		{
 			// mesh shapes can be shared, check first if we already have a shape on that mesh
@@ -553,4 +561,4 @@
 	spc->ReplaceControllerShape(bm);
 	return true;
 }
-#endif
+#endif
\ No newline at end of file

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp	2010-08-28 15:10:37 UTC (rev 31635)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp	2010-08-28 20:56:54 UTC (rev 31636)
@@ -2027,6 +2027,11 @@
 		collisionShape->setMargin(margin);
 		break;
 
+	case PHY_SHAPE_CAPSULE:
+		collisionShape = new btCapsuleShapeZ(m_radius, m_height);
+		collisionShape->setMargin(margin);
+		break;
+
 	case PHY_SHAPE_MESH:
 		// Let's use the latest btScaledBvhTriangleMeshShape: it allows true sharing of 
 		// triangle mesh information between duplicates => drastic performance increase when 
@@ -2162,4 +2167,3 @@
 	}
 }
 
-

Modified: trunk/blender/source/gameengine/Physics/common/PHY_DynamicTypes.h
===================================================================
--- trunk/blender/source/gameengine/Physics/common/PHY_DynamicTypes.h	2010-08-28 15:10:37 UTC (rev 31635)
+++ trunk/blender/source/gameengine/Physics/common/PHY_DynamicTypes.h	2010-08-28 20:56:54 UTC (rev 31636)
@@ -138,6 +138,7 @@
 	PHY_SHAPE_SPHERE,
 	PHY_SHAPE_CYLINDER,
 	PHY_SHAPE_CONE,
+	PHY_SHAPE_CAPSULE,
 	PHY_SHAPE_MESH,
 	PHY_SHAPE_POLYTOPE,
 	PHY_SHAPE_COMPOUND,
@@ -148,4 +149,3 @@
 typedef float	PHY_Vector3[3];
 
 #endif //__PHY_DYNAMIC_TYPES
-





More information about the Bf-blender-cvs mailing list