[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19702] trunk/blender/source/gameengine/ Physics/Bullet/CcdPhysicsEnvironment.cpp: Bullet integration uninitialised values.
Campbell Barton
ideasman42 at gmail.com
Mon Apr 13 06:54:14 CEST 2009
Revision: 19702
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19702
Author: campbellbarton
Date: 2009-04-13 06:54:12 +0200 (Mon, 13 Apr 2009)
Log Message:
-----------
Bullet integration uninitialised values.
Erwin, r16812 "Add Fh/Rot Fh to Bullet" - added this function
ClosestRayResultCallbackNotMe(rayFromWorld,rayToWorld,body,parentBody)
...but parentBody was being ignored and the m_parent value wasn't being initialized.
Run memset() on CcdConstructionInfo which had some unset members for CreateSphereController() and CreateConeController().
Modified Paths:
--------------
trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2009-04-13 03:43:16 UTC (rev 19701)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp 2009-04-13 04:54:12 UTC (rev 19702)
@@ -660,9 +660,10 @@
public:
ClosestRayResultCallbackNotMe(const btVector3& rayFromWorld,const btVector3& rayToWorld,btCollisionObject* owner,btCollisionObject* parent)
:btCollisionWorld::ClosestRayResultCallback(rayFromWorld,rayToWorld),
- m_owner(owner)
+ m_owner(owner),
+ m_parent(parent)
{
-
+
}
virtual bool needsCollision(btBroadphaseProxy* proxy0) const
@@ -710,7 +711,7 @@
//btVector3 rayToWorld = rayFromWorld + body->getCenterOfMassTransform().getBasis() * rayDirLocal;
//ray always points down the z axis in world space...
btVector3 rayToWorld = rayFromWorld + rayDirLocal;
-
+
ClosestRayResultCallbackNotMe resultCallback(rayFromWorld,rayToWorld,body,parentBody);
m_dynamicsWorld->rayTest(rayFromWorld,rayToWorld,resultCallback);
@@ -1558,8 +1559,8 @@
{
CcdConstructionInfo cinfo;
- // memory leak! The shape is not deleted by Bullet and we cannot add it to the KX_Scene.m_shapes list
- cinfo.m_collisionShape = new btSphereShape(radius);
+ memset(&cinfo, 0, sizeof(cinfo)); /* avoid uninitialized values */
+ cinfo.m_collisionShape = new btSphereShape(radius); // memory leak! The shape is not deleted by Bullet and we cannot add it to the KX_Scene.m_shapes list
cinfo.m_MotionState = 0;
cinfo.m_physicsEnv = this;
// declare this object as Dyamic rather then static!!
@@ -2018,7 +2019,7 @@
PHY_IPhysicsController* CcdPhysicsEnvironment::CreateConeController(float coneradius,float coneheight)
{
CcdConstructionInfo cinfo;
-
+ memset(&cinfo, 0, sizeof(cinfo)); /* avoid uninitialized values */
// we don't need a CcdShapeConstructionInfo for this shape:
// it is simple enough for the standard copy constructor (see CcdPhysicsController::GetReplica)
cinfo.m_collisionShape = new btConeShape(coneradius,coneheight);
More information about the Bf-blender-cvs
mailing list