Fixed memory leaks in ConvexDecomposition and ColladaConverter libraries
Added ConvexDecompositionDemo to CMake build
This commit is contained in:
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.4)
|
||||
PROJECT(BULLET_PHYSICS)
|
||||
|
||||
IF (NOT CMAKE_BUILD_TYPE)
|
||||
SET(CMAKE_BUILD_TYPE "Release")
|
||||
SET(CMAKE_BUILD_TYPE "Debug")
|
||||
ENDIF (NOT CMAKE_BUILD_TYPE)
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ MESSAGE("OPENGL NOT FOUND")
|
||||
SET(OPENGL_gl_LIBRARY opengl32)
|
||||
SET(OPENGL_glu_LIBRARY glu32)
|
||||
ENDIF (OPENGL_FOUND)
|
||||
ADD_DEFINITIONS(-DBT_USE_FREEGLUT)
|
||||
|
||||
FIND_PACKAGE(GLU)
|
||||
|
||||
|
||||
26
Demos/ConvexDecompositionDemo/CMakeLists.txt
Normal file
26
Demos/ConvexDecompositionDemo/CMakeLists.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
# This is basically the overall name of the project in Visual Studio this is the name of the Solution File
|
||||
|
||||
|
||||
# For every executable you have with a main method you should have an add_executable line below.
|
||||
# For every add executable line you should list every .cpp and .h file you have associated with that executable.
|
||||
|
||||
|
||||
# This is the variable for Windows. I use this to define the root of my directory structure.
|
||||
SET(GLUT_ROOT ${BULLET_PHYSICS_SOURCE_DIR}/Glut)
|
||||
|
||||
# You shouldn't have to modify anything below this line
|
||||
########################################################
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${BULLET_PHYSICS_SOURCE_DIR}/src ${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL ${BULLET_PHYSICS_SOURCE_DIR}/Extras/ConvexDecomposition
|
||||
)
|
||||
|
||||
LINK_LIBRARIES(
|
||||
LibOpenGLSupport LibBulletDynamics LibBulletCollision LibLinearMath LibConvexDecomposition ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(ConvexDecompositionDemo
|
||||
main.cpp
|
||||
ConvexDecompositionDemo.cpp
|
||||
)
|
||||
|
||||
@@ -351,6 +351,8 @@ void ConvexDecompositionDemo::initPhysics(const char* filename)
|
||||
startTransform.setOrigin(convexDecompositionObjectOffset);
|
||||
localCreateRigidBody(0.f,startTransform,concaveShape);
|
||||
|
||||
m_collisionShapes.push_back (concaveShape);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,10 @@ int main(int argc,char** argv)
|
||||
|
||||
|
||||
|
||||
return glutmain(argc, argv,640,480,"Bullet Physics Demo. http://www.continuousphysics.com/Bullet/phpBB2/",convexDecompDemo);
|
||||
glutmain(argc, argv,640,480,"Bullet Physics Demo. http://www.continuousphysics.com/Bullet/phpBB2/",convexDecompDemo);
|
||||
|
||||
delete convexDecompDemo;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -176,6 +176,19 @@ ColladaConverter::~ColladaConverter ()
|
||||
|
||||
m_collada = NULL;
|
||||
m_dom = NULL;
|
||||
|
||||
for(int i=0;i<m_rbUserInfoHashMap.size();i++)
|
||||
{
|
||||
btRigidBodyColladaInfo* rbci = *(m_rbUserInfoHashMap.getAtIndex(i));
|
||||
delete rbci;
|
||||
}
|
||||
|
||||
for(int i=0;i<m_constraintUserInfoHashMap.size();i++)
|
||||
{
|
||||
btRigidConstraintColladaInfo* rcci = *(m_constraintUserInfoHashMap.getAtIndex(i));
|
||||
delete rcci;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -226,6 +239,18 @@ bool ColladaConverter::load(const char* orgfilename)
|
||||
// resets the collada converter state
|
||||
void ColladaConverter::reset ()
|
||||
{
|
||||
for(int i=0;i<m_rbUserInfoHashMap.size();i++)
|
||||
{
|
||||
btRigidBodyColladaInfo* rbci = *(m_rbUserInfoHashMap.getAtIndex(i));
|
||||
delete rbci;
|
||||
}
|
||||
|
||||
for(int i=0;i<m_constraintUserInfoHashMap.size();i++)
|
||||
{
|
||||
btRigidConstraintColladaInfo* rcci = *(m_constraintUserInfoHashMap.getAtIndex(i));
|
||||
delete rcci;
|
||||
}
|
||||
|
||||
// clear the maps
|
||||
m_rbUserInfoHashMap.clear ();
|
||||
m_constraintUserInfoHashMap.clear ();
|
||||
@@ -2808,9 +2833,7 @@ void ColladaConverter::ConvertRigidBodyRef( btRigidBodyInput& rbInput,btRigidBod
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (rbOutput.m_isDynamics)
|
||||
{
|
||||
@@ -2828,7 +2851,6 @@ void ColladaConverter::ConvertRigidBodyRef( btRigidBodyInput& rbInput,btRigidBod
|
||||
}
|
||||
//rbOutput.m_colShape->setTypedUserInfo (new btShapeColladaInfo (geom));
|
||||
|
||||
}
|
||||
} else
|
||||
{
|
||||
|
||||
|
||||
@@ -150,7 +150,10 @@ CHull * ConvexBuilder::canMerge(CHull *a,CHull *b)
|
||||
|
||||
//don't do anything if hull is empty
|
||||
if (!tcount)
|
||||
{
|
||||
Vl_releaseVertexLookup (vc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
HullResult hresult;
|
||||
HullLibrary hl;
|
||||
@@ -323,6 +326,8 @@ unsigned int ConvexBuilder::process(const DecompDesc &desc)
|
||||
mCallback->ConvexDecompResult(r);
|
||||
}
|
||||
|
||||
hl.ReleaseResult (result);
|
||||
|
||||
|
||||
delete cr;
|
||||
}
|
||||
|
||||
@@ -204,6 +204,7 @@ void calcConvexDecomposition(unsigned int vcount,
|
||||
}
|
||||
#endif
|
||||
|
||||
hl.ReleaseResult (result);
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
@@ -816,8 +816,8 @@ WavefrontObj::WavefrontObj(void)
|
||||
|
||||
WavefrontObj::~WavefrontObj(void)
|
||||
{
|
||||
delete mIndices;
|
||||
delete mVertices;
|
||||
delete [] mIndices;
|
||||
delete [] mVertices;
|
||||
}
|
||||
|
||||
unsigned int WavefrontObj::loadObj(const char *fname) // load a wavefront obj returns number of triangles that were loaded. Data is persists until the class is destructed.
|
||||
@@ -825,9 +825,9 @@ unsigned int WavefrontObj::loadObj(const char *fname) // load a wavefront obj re
|
||||
|
||||
unsigned int ret = 0;
|
||||
|
||||
delete mVertices;
|
||||
delete [] mVertices;
|
||||
mVertices = 0;
|
||||
delete mIndices;
|
||||
delete [] mIndices;
|
||||
mIndices = 0;
|
||||
mVertexCount = 0;
|
||||
mTriCount = 0;
|
||||
|
||||
@@ -97,6 +97,8 @@ btSoftBody::~btSoftBody()
|
||||
delete m_collisionShape;
|
||||
int i;
|
||||
|
||||
for(i=0;i<m_clusters.size();++i)
|
||||
btAlignedFree(m_clusters[i]);
|
||||
for(i=0;i<m_materials.size();++i)
|
||||
btAlignedFree(m_materials[i]);
|
||||
for(i=0;i<m_joints.size();++i)
|
||||
|
||||
Reference in New Issue
Block a user