From a7a6ab8835a16bf6e2503d3498aae28b31441967 Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Mon, 25 Jan 2010 21:58:32 +0000 Subject: [PATCH] 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 --- Demos/ConvexDecompositionDemo/CMakeLists.txt | 13 +- .../ConvexDecompositionDemo.cpp | 27 +++- .../testFile32Single.bullet | Bin 48704 -> 74536 bytes Demos/SerializeDemo/CMakeLists.txt | 5 +- Demos/SerializeDemo/SerializeDemo.cpp | 4 +- .../Serialize/BulletFileLoader/CMakeLists.txt | 2 - Extras/Serialize/BulletFileLoader/bChunk.cpp | 2 +- Extras/Serialize/BulletFileLoader/bChunk.h | 2 +- .../BulletWorldImporter/CMakeLists.txt | 10 ++ .../btBulletWorldImporter.cpp} | 36 ++--- .../btBulletWorldImporter.h} | 13 +- Extras/Serialize/CMakeLists.txt | 4 +- src/LinearMath/btSerializer.cpp | 145 ------------------ 13 files changed, 76 insertions(+), 187 deletions(-) create mode 100644 Extras/Serialize/BulletWorldImporter/CMakeLists.txt rename Extras/Serialize/{BulletFileLoader/btBulletFileLoader.cpp => BulletWorldImporter/btBulletWorldImporter.cpp} (83%) rename Extras/Serialize/{BulletFileLoader/btBulletFileLoader.h => BulletWorldImporter/btBulletWorldImporter.h} (88%) diff --git a/Demos/ConvexDecompositionDemo/CMakeLists.txt b/Demos/ConvexDecompositionDemo/CMakeLists.txt index a07ec45ab..666d31c99 100644 --- a/Demos/ConvexDecompositionDemo/CMakeLists.txt +++ b/Demos/ConvexDecompositionDemo/CMakeLists.txt @@ -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} +) + diff --git a/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp b/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp index 411176512..fd61d31d5 100644 --- a/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp +++ b/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp @@ -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"); diff --git a/Demos/ConvexDecompositionDemo/testFile32Single.bullet b/Demos/ConvexDecompositionDemo/testFile32Single.bullet index 75f1104c4e8d11d34e3959df84957139e3a62a37..3dd6b385ef96b8316b5f0c5397bbd99849e99c54 100644 GIT binary patch delta 13426 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 O@ekEaw{1G!^}hi!+{E4h delta 200 zcmZ2+jOD-|rU@d#1tFrWq6`cSj6e(m27aQO`B@$^iWnrX#{dI}a#leg4bu+NaTW-CST1l(p5v-v0Alb%71*d>-~ciiDu7}j`Uw*Q!x|vV zF~~7;gAzo1^B30xN-Q9in|EYf=wbm|8}P@Lc`nfU2j4|l1VD@@pMP$5lwf?$1pv_R BF^vEK diff --git a/Demos/SerializeDemo/CMakeLists.txt b/Demos/SerializeDemo/CMakeLists.txt index 3e68f7320..da3f85180 100644 --- a/Demos/SerializeDemo/CMakeLists.txt +++ b/Demos/SerializeDemo/CMakeLists.txt @@ -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 diff --git a/Demos/SerializeDemo/SerializeDemo.cpp b/Demos/SerializeDemo/SerializeDemo.cpp index 320bb4ac4..44618de58 100644 --- a/Demos/SerializeDemo/SerializeDemo.cpp +++ b/Demos/SerializeDemo/SerializeDemo.cpp @@ -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"); diff --git a/Extras/Serialize/BulletFileLoader/CMakeLists.txt b/Extras/Serialize/BulletFileLoader/CMakeLists.txt index e6208d30f..fefe62f92 100644 --- a/Extras/Serialize/BulletFileLoader/CMakeLists.txt +++ b/Extras/Serialize/BulletFileLoader/CMakeLists.txt @@ -14,6 +14,4 @@ bFile.cpp bFile.h btBulletFile.cpp btBulletFile.h -btBulletFileLoader.cpp -btBulletFileLoader.h ) diff --git a/Extras/Serialize/BulletFileLoader/bChunk.cpp b/Extras/Serialize/BulletFileLoader/bChunk.cpp index 737e60bb5..4e52a2d4e 100644 --- a/Extras/Serialize/BulletFileLoader/bChunk.cpp +++ b/Extras/Serialize/BulletFileLoader/bChunk.cpp @@ -64,7 +64,7 @@ int ChunkUtils::getOffset(int flags) // ----------------------------------------------------- // -int ChunkUtils::getNextBlock(bChunkInd *dataChunk, char *dataPtr, const int flags) +int ChunkUtils::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags) { bool swap = false; bool varies = false; diff --git a/Extras/Serialize/BulletFileLoader/bChunk.h b/Extras/Serialize/BulletFileLoader/bChunk.h index 524c78442..c2d9763d9 100644 --- a/Extras/Serialize/BulletFileLoader/bChunk.h +++ b/Extras/Serialize/BulletFileLoader/bChunk.h @@ -65,7 +65,7 @@ namespace bParse { { public: // buffer offset util - static int getNextBlock(bChunkInd *dataChunk, char *dataPtr, const int flags); + static int getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags); // file chunk offset static int getOffset(int flags); diff --git a/Extras/Serialize/BulletWorldImporter/CMakeLists.txt b/Extras/Serialize/BulletWorldImporter/CMakeLists.txt new file mode 100644 index 000000000..29adf3395 --- /dev/null +++ b/Extras/Serialize/BulletWorldImporter/CMakeLists.txt @@ -0,0 +1,10 @@ +INCLUDE_DIRECTORIES( + ${BULLET_PHYSICS_SOURCE_DIR}/src + ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader +) + +ADD_LIBRARY( +BulletWorldImporter +btBulletWorldImporter.cpp +btBulletWorldImporter.h +) diff --git a/Extras/Serialize/BulletFileLoader/btBulletFileLoader.cpp b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp similarity index 83% rename from Extras/Serialize/BulletFileLoader/btBulletFileLoader.cpp rename to Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp index 95d8b6cf8..1ec28cf41 100644 --- a/Extras/Serialize/BulletFileLoader/btBulletFileLoader.cpp +++ b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp @@ -1,17 +1,17 @@ -#include "btBulletFileLoader.h" +#include "btBulletWorldImporter.h" #include "btBulletFile.h" #include "btBulletDynamicsCommon.h" -btBulletFileLoader::btBulletFileLoader(btDynamicsWorld* world) +btBulletWorldImporter::btBulletWorldImporter(btDynamicsWorld* world) :m_dynamicsWorld(world), m_verboseDumpAllTypes(false) { } -bool btBulletFileLoader::loadFileFromMemory( char* fileName) +bool btBulletWorldImporter::loadFileFromMemory( const char* fileName) { bParse::btBulletFile* bulletFile2 = new bParse::btBulletFile(fileName); @@ -25,7 +25,7 @@ bool btBulletFileLoader::loadFileFromMemory( char* fileName) -bool btBulletFileLoader::loadFileFromMemory( char* memoryBuffer, int len) +bool btBulletWorldImporter::loadFileFromMemory( char* memoryBuffer, int len) { bParse::btBulletFile* bulletFile2 = new bParse::btBulletFile(memoryBuffer,len); @@ -37,7 +37,7 @@ bool btBulletFileLoader::loadFileFromMemory( char* memoryBuffer, int len) } -bool btBulletFileLoader::loadFileFromMemory( bParse::btBulletFile* bulletFile2) +bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFile2) { @@ -270,7 +270,7 @@ bool btBulletFileLoader::loadFileFromMemory( bParse::btBulletFile* bulletFile2) return false; } -btTypedConstraint* btBulletFileLoader::createUniversalD6Constraint(class btRigidBody* body0,class btRigidBody* otherBody, +btTypedConstraint* btBulletWorldImporter::createUniversalD6Constraint(class btRigidBody* body0,class btRigidBody* otherBody, btTransform& localAttachmentFrameRef, btTransform& localAttachmentOther, const btVector3& linearMinLimits, @@ -282,7 +282,7 @@ btTypedConstraint* btBulletFileLoader::createUniversalD6Constraint(class btRig return 0; } -btRigidBody* btBulletFileLoader::createRigidBody(bool isDynamic, btScalar mass, const btTransform& startTransform,btCollisionShape* shape) +btRigidBody* btBulletWorldImporter::createRigidBody(bool isDynamic, btScalar mass, const btTransform& startTransform,btCollisionShape* shape) { btVector3 localInertia; @@ -297,52 +297,52 @@ btRigidBody* btBulletFileLoader::createRigidBody(bool isDynamic, btScalar mass, return body; } -btCollisionShape* btBulletFileLoader::createPlaneShape(const btVector3& planeNormal,btScalar planeConstant) +btCollisionShape* btBulletWorldImporter::createPlaneShape(const btVector3& planeNormal,btScalar planeConstant) { return 0; } -btCollisionShape* btBulletFileLoader::createBoxShape(const btVector3& halfExtents) +btCollisionShape* btBulletWorldImporter::createBoxShape(const btVector3& halfExtents) { return new btBoxShape(halfExtents); } -btCollisionShape* btBulletFileLoader::createSphereShape(btScalar radius) +btCollisionShape* btBulletWorldImporter::createSphereShape(btScalar radius) { return new btSphereShape(radius); } -btCollisionShape* btBulletFileLoader::createCapsuleShape(btScalar radius, btScalar height) +btCollisionShape* btBulletWorldImporter::createCapsuleShape(btScalar radius, btScalar height) { return new btCapsuleShape(radius,height); } -btCollisionShape* btBulletFileLoader::createCylinderShapeY(btScalar radius,btScalar height) +btCollisionShape* btBulletWorldImporter::createCylinderShapeY(btScalar radius,btScalar height) { return new btCylinderShape(btVector3(radius,height,radius)); } -btTriangleMesh* btBulletFileLoader::createTriangleMeshContainer() +btTriangleMesh* btBulletWorldImporter::createTriangleMeshContainer() { return 0; } -btCollisionShape* btBulletFileLoader::createBvhTriangleMeshShape(btTriangleMesh* trimesh) +btCollisionShape* btBulletWorldImporter::createBvhTriangleMeshShape(btTriangleMesh* trimesh) { return 0; } -btCollisionShape* btBulletFileLoader::createConvexTriangleMeshShape(btTriangleMesh* trimesh) +btCollisionShape* btBulletWorldImporter::createConvexTriangleMeshShape(btTriangleMesh* trimesh) { return 0; } -btCollisionShape* btBulletFileLoader::createGimpactShape(btTriangleMesh* trimesh) +btCollisionShape* btBulletWorldImporter::createGimpactShape(btTriangleMesh* trimesh) { return 0; } -btConvexHullShape* btBulletFileLoader::createConvexHullShape() +btConvexHullShape* btBulletWorldImporter::createConvexHullShape() { return 0; } -btCompoundShape* btBulletFileLoader::createCompoundShape() +btCompoundShape* btBulletWorldImporter::createCompoundShape() { return 0; } \ No newline at end of file diff --git a/Extras/Serialize/BulletFileLoader/btBulletFileLoader.h b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h similarity index 88% rename from Extras/Serialize/BulletFileLoader/btBulletFileLoader.h rename to Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h index a6e31793e..60a72f720 100644 --- a/Extras/Serialize/BulletFileLoader/btBulletFileLoader.h +++ b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.h @@ -14,8 +14,8 @@ subject to the following restrictions: */ -#ifndef BULLET_FILE_LOADER_H -#define BULLET_FILE_LOADER_H +#ifndef BULLET_WORLD_IMPORTER_H +#define BULLET_WORLD_IMPORTER_H #include "LinearMath/btTransform.h" #include "LinearMath/btVector3.h" @@ -36,7 +36,7 @@ namespace bParse }; -class btBulletFileLoader +class btBulletWorldImporter { btDynamicsWorld* m_dynamicsWorld; @@ -44,10 +44,11 @@ class btBulletFileLoader public: - btBulletFileLoader(btDynamicsWorld* world); + btBulletWorldImporter(btDynamicsWorld* world); - bool loadFileFromMemory(char* fileName); + bool loadFileFromMemory(const char* fileName); + ///the memoryBuffer might be modified (for example if endian swaps are necessary) bool loadFileFromMemory(char *memoryBuffer, int len); bool loadFileFromMemory(bParse::btBulletFile* file); @@ -93,4 +94,4 @@ public: }; -#endif //BULLET_FILE_LOADER_H \ No newline at end of file +#endif //BULLET_WORLD_IMPORTER_H \ No newline at end of file diff --git a/Extras/Serialize/CMakeLists.txt b/Extras/Serialize/CMakeLists.txt index ae5bb00f3..694ef5d5b 100644 --- a/Extras/Serialize/CMakeLists.txt +++ b/Extras/Serialize/CMakeLists.txt @@ -1,9 +1,9 @@ -SUBDIRS ( BulletFileLoader ) +SUBDIRS ( BulletFileLoader BulletWorldImporter ) # makesdna and HeaderGenerator are for advanced use only # makesdna can re-generate the binary DNA representing the Bullet serialization structures # Be very careful modifying any of this, otherwise the .bullet format becomes incompatible -#SUBDIRS ( BulletFileLoader BlenderSerialize HeaderGenerator makesdna) +#SUBDIRS ( BulletFileLoader BulletWorldImporter BlenderSerialize HeaderGenerator makesdna) diff --git a/src/LinearMath/btSerializer.cpp b/src/LinearMath/btSerializer.cpp index 6eb43a8c0..cd3a1e39e 100644 --- a/src/LinearMath/btSerializer.cpp +++ b/src/LinearMath/btSerializer.cpp @@ -1,148 +1,3 @@ - -unsigned char sBulletDNAstr64[]= { -83,68,78,65,78,65,77,69,85,0,0,0,109,95,115,105,122,101,0,109, -95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, -99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, -108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, -115,116,114,97,105,110,116,115,0,42,102,105,114,115,116,0,42,108,97,115, -116,0,109,95,102,108,111,97,116,115,91,52,93,0,109,95,101,108,91,51, -93,0,109,95,98,97,115,105,115,0,109,95,111,114,105,103,105,110,0,42, -109,95,117,115,101,114,80,111,105,110,116,101,114,0,109,95,115,104,97,112, -101,84,121,112,101,0,109,95,112,97,100,100,105,110,103,91,52,93,0,109, -95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,0, -109,95,108,111,99,97,108,83,99,97,108,105,110,103,0,109,95,105,109,112, -108,105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115, -0,109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109, -95,112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100, -105,117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108, -83,104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111, -115,105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99, -97,108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0, -109,95,118,97,108,117,101,0,105,110,116,0,42,109,95,118,101,114,116,105, -99,101,115,51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0, -42,109,95,105,110,100,105,99,101,115,51,50,0,42,109,95,105,110,100,105, -99,101,115,49,54,0,109,95,110,117,109,84,114,105,97,110,103,108,101,115, -0,109,95,110,117,109,86,101,114,116,105,99,101,115,0,42,109,95,109,101, -115,104,80,97,114,116,115,80,116,114,0,109,95,115,99,97,108,105,110,103, -0,109,95,110,117,109,77,101,115,104,80,97,114,116,115,0,109,95,109,101, -115,104,73,110,116,101,114,102,97,99,101,0,42,109,95,117,110,115,99,97, -108,101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114,0,42,109, -95,117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111,117,98,108, -101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101,100,80,111, -105,110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42, -109,95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42, -109,95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95, -114,111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42, -109,95,117,115,101,114,79,98,106,101,99,116,80,111,105,110,116,101,114,0, -109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109,95,105, -110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84,114,97, -110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97,116,105, -111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109,95,105, -110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97,114,86, -101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111,112,105, -99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99,116,80, -114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100,0,109, -95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0,109,95, -102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117,116,105, -111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109,95,99, -99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117,115,0, -109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111,108,100, -0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70,114,105, -99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70,108,97, -103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,111, -109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,105, -111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97,108,84, -121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101,87,105, -116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101,99,116, -68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84,101,110, -115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86,101,108, -111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108,111,99, -105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0, -109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97, -118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108, -101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97, -76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109, -95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118,101,114, -115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109,112,105, -110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110,103,0, -109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110,103,70, -97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108,76,105, -110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100, -83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117, -108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83, -113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108, -97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95,108,105, -110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108, -100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110,103,84, -104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111,110,97, -108,68,97,109,112,105,110,103,0,0,0,0,84,89,80,69,33,0,0,0, -99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,0,117,115,104, -111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,110,103,0,102, -108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105, -110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115,105,99,115,83, -121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98,116,86,101,99, -116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116,86,101,99,116, -111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116,77,97,116,114, -105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98,116,77,97,116, -114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97,0,98,116,84, -114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116,97,0,98,116, -84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68,97,116,97,0, -98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97, -0,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97, -112,101,68,97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100, -82,97,100,105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101, -83,104,97,112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120, -68,97,116,97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120, -68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0, -98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102, -97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103,108,101,77,101, -115,104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,110,118,101,120, -72,117,108,108,83,104,97,112,101,68,97,116,97,0,98,116,67,111,108,108, -105,115,105,111,110,79,98,106,101,99,116,68,111,117,98,108,101,68,97,116, -97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,70, -108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100,121, -70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100, -121,68,111,117,98,108,101,68,97,116,97,0,84,76,69,78,1,0,1,0, -2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,16,0,48,0, -16,0,16,0,32,0,48,0,96,0,64,0,-128,0,16,0,56,0,20,0, -72,0,4,0,4,0,40,0,32,0,56,0,80,0,-40,1,8,1,-16,1, --88,3,0,0,83,84,82,67,23,0,0,0,10,0,3,0,4,0,0,0, -4,0,1,0,9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0, -10,0,5,0,12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0, -7,0,8,0,14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0, -16,0,1,0,14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0, -18,0,2,0,16,0,10,0,14,0,11,0,19,0,3,0,9,0,12,0, -4,0,13,0,0,0,14,0,20,0,5,0,19,0,15,0,13,0,16,0, -13,0,17,0,7,0,18,0,4,0,19,0,21,0,2,0,13,0,20,0, -7,0,21,0,22,0,4,0,20,0,22,0,21,0,23,0,4,0,24,0, -0,0,14,0,23,0,1,0,4,0,25,0,24,0,2,0,2,0,26,0, -2,0,25,0,25,0,6,0,13,0,27,0,14,0,28,0,23,0,29,0, -24,0,30,0,4,0,31,0,4,0,32,0,26,0,4,0,25,0,33,0, -13,0,34,0,4,0,35,0,0,0,14,0,27,0,4,0,19,0,15,0, -26,0,36,0,7,0,18,0,0,0,14,0,28,0,5,0,20,0,22,0, -13,0,37,0,14,0,38,0,4,0,39,0,0,0,40,0,29,0,24,0, -9,0,41,0,9,0,42,0,19,0,43,0,9,0,44,0,18,0,45,0, -18,0,46,0,14,0,47,0,14,0,48,0,14,0,49,0,8,0,50,0, -8,0,51,0,8,0,52,0,8,0,53,0,8,0,54,0,8,0,55,0, -8,0,56,0,4,0,57,0,4,0,58,0,4,0,59,0,4,0,60,0, -4,0,61,0,4,0,62,0,4,0,63,0,0,0,14,0,30,0,23,0, -9,0,41,0,9,0,42,0,19,0,43,0,9,0,44,0,17,0,45,0, -17,0,46,0,13,0,47,0,13,0,48,0,13,0,49,0,7,0,50,0, -7,0,51,0,7,0,52,0,7,0,53,0,7,0,54,0,7,0,55,0, -7,0,56,0,4,0,57,0,4,0,58,0,4,0,59,0,4,0,60,0, -4,0,61,0,4,0,62,0,4,0,63,0,31,0,21,0,30,0,64,0, -15,0,65,0,13,0,66,0,13,0,67,0,13,0,68,0,13,0,69,0, -13,0,70,0,13,0,71,0,13,0,72,0,13,0,73,0,13,0,74,0, -7,0,75,0,7,0,76,0,7,0,77,0,7,0,78,0,7,0,79,0, -7,0,80,0,7,0,81,0,7,0,82,0,7,0,83,0,4,0,84,0, -32,0,22,0,29,0,64,0,16,0,65,0,14,0,66,0,14,0,67,0, -14,0,68,0,14,0,69,0,14,0,70,0,14,0,71,0,14,0,72,0, -14,0,73,0,14,0,74,0,8,0,75,0,8,0,76,0,8,0,77,0, -8,0,78,0,8,0,79,0,8,0,80,0,8,0,81,0,8,0,82,0, -8,0,83,0,4,0,84,0,0,0,14,0,}; -int sBulletDNAlen64= sizeof(sBulletDNAstr64); - - unsigned char sBulletDNAstr[]= { 83,68,78,65,78,65,77,69,85,0,0,0,109,95,115,105,122,101,0,109, 95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95,