Add BulletWorldImporter: it takes the in-memory data from BulletFileLoader and instantiates objects in a BulletDynamicsWorld.

Note that BulletFileLoader is has no dependencies on BulletDynamics/BulletCollision.
Also added a custom build step to copy asset (.bullet and .obj file) into the executable folder
Made a few 'char*' 'const char*' to avoid compiler warnings
This commit is contained in:
erwin.coumans
2010-01-25 21:58:32 +00:00
parent b68f2710cd
commit a7a6ab8835
13 changed files with 76 additions and 187 deletions

View File

@@ -16,12 +16,13 @@ ${BULLET_PHYSICS_SOURCE_DIR}/src
${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL
${BULLET_PHYSICS_SOURCE_DIR}/Extras/ConvexDecomposition
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter
)
IF (USE_GLUT)
LINK_LIBRARIES(
OpenGLSupport BulletFileLoader BulletDynamics BulletCollision LinearMath ConvexDecomposition ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
OpenGLSupport BulletWorldImporter BulletDynamics BulletCollision LinearMath BulletFileLoader ConvexDecomposition ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
)
ADD_EXECUTABLE(AppConvexDecompositionDemo
@@ -32,7 +33,7 @@ IF (USE_GLUT)
ELSE (USE_GLUT)
LINK_LIBRARIES(
OpenGLSupport BulletFileLoader BulletDynamics BulletCollision LinearMath ConvexDecomposition ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
OpenGLSupport BulletWorldImporter BulletDynamics BulletCollision LinearMath BulletFileLoader ConvexDecomposition ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
)
ADD_EXECUTABLE(AppConvexDecompositionDemo
@@ -45,3 +46,11 @@ LINK_LIBRARIES(
ENDIF (USE_GLUT)
ADD_CUSTOM_COMMAND(
TARGET AppConvexDecompositionDemo
POST_BUILD
COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/Demos/ConvexDecompositionDemo/testFile32Single.bullet ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${BULLET_PHYSICS_SOURCE_DIR}/file.obj ${CMAKE_CURRENT_BINARY_DIR}
)

View File

@@ -24,11 +24,12 @@ subject to the following restrictions:
#include "BulletCollision/CollisionShapes/btShapeHull.h"
#define TEST_SERIALIZATION
#define NO_OBJ_TO_BULLET
#ifdef TEST_SERIALIZATION
#include "LinearMath/btSerializer.h"
#include "btBulletFile.h"
#include "btBulletFileLoader.h"
#include "btBulletWorldImporter.h"
#endif
//#define USE_PARALLEL_DISPATCHER 1
@@ -145,13 +146,20 @@ m_collisionConfiguration = new btDefaultCollisionConfiguration();
void ConvexDecompositionDemo::initPhysics(const char* filename)
{
gContactAddedCallback = &MyContactCallback;
setupEmptyDynamicsWorld();
setTexturing(true);
setShadows(true);
setCameraDistance(26.f);
#ifndef NO_OBJ_TO_BULLET
ConvexDecomposition::WavefrontObj wo;
tcount = wo.loadObj(filename);
@@ -163,7 +171,8 @@ void ConvexDecompositionDemo::initPhysics(const char* filename)
}
setupEmptyDynamicsWorld();
btTransform startTransform;
startTransform.setIdentity();
@@ -483,6 +492,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename)
}
#ifdef TEST_SERIALIZATION
//test serializing this
@@ -499,14 +509,19 @@ void ConvexDecompositionDemo::initPhysics(const char* filename)
//now try again from the loaded file
setupEmptyDynamicsWorld();
#endif //TEST_SERIALIZATION
btBulletFileLoader* fileLoader = new btBulletFileLoader(m_dynamicsWorld);
fileLoader->setVerboseMode(true);
#endif //NO_OBJ_TO_BULLET
fileLoader->loadFileFromMemory("testFile.bullet");
#ifdef TEST_SERIALIZATION
btBulletWorldImporter* fileLoader = new btBulletWorldImporter(m_dynamicsWorld);
//fileLoader->setVerboseMode(true);
//fileLoader->loadFileFromMemory("testFile.bullet");
//fileLoader->loadFileFromMemory("testFile64Double.bullet");
//fileLoader->loadFileFromMemory("testFile64Single.bullet");
//fileLoader->loadFileFromMemory("testFile32Single.bullet");
fileLoader->loadFileFromMemory("testFile32Single.bullet");

View File

@@ -15,12 +15,13 @@ INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter
)
IF (USE_GLUT)
LINK_LIBRARIES(
OpenGLSupport BulletDynamics BulletCollision LinearMath BulletFileLoader ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
OpenGLSupport BulletWorldImporter BulletDynamics BulletCollision LinearMath BulletFileLoader ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
)
ADD_EXECUTABLE(AppSerializeDemo
@@ -31,7 +32,7 @@ IF (USE_GLUT)
ELSE (USE_GLUT)
LINK_LIBRARIES(
OpenGLSupport BulletDynamics BulletCollision LinearMath BulletFileLoader ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
OpenGLSupport BulletWorldImporter BulletDynamics BulletCollision LinearMath BulletFileLoader ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
)
ADD_EXECUTABLE(AppSerializeDemo

View File

@@ -37,7 +37,7 @@ subject to the following restrictions:
#ifdef TEST_SERIALIZATION
#include "LinearMath/btSerializer.h"
#include "btBulletFile.h"
#include "btBulletFileLoader.h"
#include "btBulletWorldImporter.h"
@@ -229,7 +229,7 @@ void SerializeDemo::initPhysics()
//now try again from the loaded file
setupEmptyDynamicsWorld();
btBulletFileLoader* fileLoader = new btBulletFileLoader(m_dynamicsWorld);
btBulletWorldImporter* fileLoader = new btBulletWorldImporter(m_dynamicsWorld);
fileLoader->loadFileFromMemory("testFile.bullet");