diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h index 8c0fb4210..6cd0756d0 100644 --- a/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h @@ -29,6 +29,10 @@ #include "bullet_btConvexInternalShapeData.h" #include "bullet_btPositionAndRadius.h" #include "bullet_btMultiSphereShapeData.h" +#include "bullet_btIntIndexData.h" +#include "bullet_btMeshPartData.h" +#include "bullet_btStridingMeshInterfaceData.h" +#include "bullet_btTriangleMeshShapeData.h" #include "bullet_btConvexHullShapeData.h" #include "bullet_btCollisionObjectData.h" #include "bullet_btRigidBodyData.h" diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h index fee91f1a6..5e42b868d 100644 --- a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h @@ -36,6 +36,10 @@ namespace Bullet { class btConvexInternalShapeData; class btPositionAndRadius; class btMultiSphereShapeData; + class btIntIndexData; + class btMeshPartData; + class btStridingMeshInterfaceData; + class btTriangleMeshShapeData; class btConvexHullShapeData; class btCollisionObjectData; class btRigidBodyData; diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btIntIndexData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btIntIndexData.h new file mode 100644 index 000000000..d89b0cd8f --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btIntIndexData.h @@ -0,0 +1,39 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_BTINTINDEXDATA__H__ +#define __BULLET_BTINTINDEXDATA__H__ + + +// -------------------------------------------------- // +#include "bullet_Common.h" + +namespace Bullet { + + + // ---------------------------------------------- // + class btIntIndexData + { + public: + int m_value; + }; +} + + +#endif//__BULLET_BTINTINDEXDATA__H__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btMeshPartData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btMeshPartData.h new file mode 100644 index 000000000..31ce67977 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btMeshPartData.h @@ -0,0 +1,42 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_BTMESHPARTDATA__H__ +#define __BULLET_BTMESHPARTDATA__H__ + + +// -------------------------------------------------- // +#include "bullet_Common.h" + +namespace Bullet { + + + // ---------------------------------------------- // + class btMeshPartData + { + public: + btVector3Data *m_vertices; + btIntIndexData *m_indices; + int m_numTriangles; + int m_numVertices; + }; +} + + +#endif//__BULLET_BTMESHPARTDATA__H__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btStridingMeshInterfaceData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btStridingMeshInterfaceData.h new file mode 100644 index 000000000..2341cead9 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btStridingMeshInterfaceData.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_BTSTRIDINGMESHINTERFACEDATA__H__ +#define __BULLET_BTSTRIDINGMESHINTERFACEDATA__H__ + + +// -------------------------------------------------- // +#include "bullet_Common.h" +#include "bullet_btVector3Data.h" + +namespace Bullet { + + + // ---------------------------------------------- // + class btStridingMeshInterfaceData + { + public: + btMeshPartData *m_meshPartsPtr; + int m_numMeshParts; + btVector3Data m_scaling; + char m_padding[4]; + }; +} + + +#endif//__BULLET_BTSTRIDINGMESHINTERFACEDATA__H__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btTriangleMeshShapeData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btTriangleMeshShapeData.h new file mode 100644 index 000000000..c1a39f8a5 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btTriangleMeshShapeData.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_BTTRIANGLEMESHSHAPEDATA__H__ +#define __BULLET_BTTRIANGLEMESHSHAPEDATA__H__ + + +// -------------------------------------------------- // +#include "bullet_Common.h" +#include "bullet_btStridingMeshInterfaceData.h" + +namespace Bullet { + + + // ---------------------------------------------- // + class btTriangleMeshShapeData + { + public: + bInvalidHandle btCollisionShapeData; + bInvalidHandle m_collisionShapeData; + btStridingMeshInterfaceData m_meshInterface; + btScalar m_collisionMargin; + }; +} + + +#endif//__BULLET_BTTRIANGLEMESHSHAPEDATA__H__ diff --git a/Extras/Serialize/BulletFileLoader/btBulletFileLoader.cpp b/Extras/Serialize/BulletFileLoader/btBulletFileLoader.cpp index d7510fc99..29faae6ea 100644 --- a/Extras/Serialize/BulletFileLoader/btBulletFileLoader.cpp +++ b/Extras/Serialize/BulletFileLoader/btBulletFileLoader.cpp @@ -144,6 +144,31 @@ bool btBulletFileLoader::loadFileFromMemory( bParse::btBulletFile* bulletFile2) } break; } + case TRIANGLE_MESH_SHAPE_PROXYTYPE: + { + btTriangleMeshShapeData* trimesh = (btTriangleMeshShapeData*)shapeData; + btTriangleIndexVertexArray* meshInterface = new btTriangleIndexVertexArray(); + for (int i=0;im_meshInterface.m_numMeshParts;i++) + { + btIndexedMesh meshPart; + meshPart.m_triangleIndexStride = 3*sizeof(int); + meshPart.m_vertexStride = sizeof(btVector3Data); + meshPart.m_numTriangles = trimesh->m_meshInterface.m_meshPartsPtr[i].m_numTriangles; + meshPart.m_numVertices = trimesh->m_meshInterface.m_meshPartsPtr[i].m_numVertices; + meshPart.m_triangleIndexBase = (const unsigned char*)trimesh->m_meshInterface.m_meshPartsPtr[i].m_indices; + meshPart.m_vertexBase = (const unsigned char*)trimesh->m_meshInterface.m_meshPartsPtr[i].m_vertices; + meshInterface->addIndexedMesh(meshPart); + } + btVector3 scaling; scaling.deSerialize(trimesh->m_meshInterface.m_scaling); + meshInterface->setScaling(scaling); + + btBvhTriangleMeshShape* trimeshShape = new btBvhTriangleMeshShape(meshInterface,true); + trimeshShape->setMargin(trimesh->m_collisionMargin); + shapeMap.insert(shapeData,trimeshShape); + + //printf("trimesh->m_collisionMargin=%f\n",trimesh->m_collisionMargin); + break; + } default: { printf("unsupported shape type (%d)\n",shapeData->m_shapeType); diff --git a/Extras/Serialize/makesdna/makesdna.cpp b/Extras/Serialize/makesdna/makesdna.cpp index cde5b7b03..f22a546b2 100644 --- a/Extras/Serialize/makesdna/makesdna.cpp +++ b/Extras/Serialize/makesdna/makesdna.cpp @@ -126,6 +126,8 @@ typedef unsigned long uintptr_t; #include "BulletCollision/CollisionShapes/btConvexInternalShape.h" #include "BulletCollision/CollisionShapes/btMultiSphereShape.h" #include "BulletCollision/CollisionShapes/btConvexHullShape.h" +#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h" +#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h" #include "BulletCollision/CollisionDispatch/btCollisionObject.h" #include "BulletDynamics/Dynamics/btRigidBody.h" @@ -149,6 +151,8 @@ char *includefiles[] = { "../../../src/BulletCollision/CollisionShapes/btCollisionShape.h", "../../../src/BulletCollision/CollisionShapes/btConvexInternalShape.h", "../../../src/BulletCollision/CollisionShapes/btMultiSphereShape.h", + "../../../src/BulletCollision/CollisionShapes/btStridingMeshInterface.h", + "../../../src/BulletCollision/CollisionShapes/btTriangleMeshShape.h", "../../../src/BulletCollision/CollisionShapes/btConvexHullShape.h", "../../../src/BulletCollision/CollisionDispatch/btCollisionObject.h", "../../../src/BulletDynamics/Dynamics/btRigidBody.h", diff --git a/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp b/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp index 8e0bef07b..95c87568d 100644 --- a/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp +++ b/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp @@ -192,14 +192,14 @@ const char* btStridingMeshInterface::serialize(void* dataBuffer, btSerializer* s void* uniquePtr = 0; - trimeshData->m_meshPartsPtr = trimeshData->m_numMeshParts ? (btMeshPartData*) uniquePtr : 0; + trimeshData->m_meshPartsPtr = 0; if (trimeshData->m_numMeshParts) { btChunk* chunk = serializer->allocate(sizeof(btMeshPartData),trimeshData->m_numMeshParts); btMeshPartData* memPtr = (btMeshPartData*)chunk->m_oldPtr; + trimeshData->m_meshPartsPtr = memPtr; - int numtotalphysicsverts = 0; int part,graphicssubparts = getNumSubParts(); @@ -215,7 +215,7 @@ const char* btStridingMeshInterface::serialize(void* dataBuffer, btSerializer* s btVector3 meshScaling = getScaling(); ///if the number of parts is big, the performance might drop due to the innerloop switch on indextype - for (part=0;partm_numTriangles = numtriangles;//indices = 3*numtriangles @@ -230,17 +230,37 @@ const char* btStridingMeshInterface::serialize(void* dataBuffer, btSerializer* s { case PHY_INTEGER: { - for (gfxindex=0;gfxindexm_indices = 0; + if (numindices) + { + btChunk* chunk = serializer->allocate(sizeof(btIntIndexData),numindices); + btIntIndexData* tmpIndices = (btIntIndexData*)chunk->m_oldPtr; + memPtr->m_indices = tmpIndices; + for (gfxindex=0;gfxindexfinalizeChunk(chunk,"btIntIndexData",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); + } + memPtr->m_vertices = 0; + if (numverts) + { + btChunk* chunk = serializer->allocate(sizeof(btVector3Data),numverts); + btVector3Data* tmpVertices = (btVector3Data*) chunk->m_oldPtr; + memPtr->m_vertices = tmpVertices; + for (int i=0;ifinalizeChunk(chunk,"btVector3Data",BT_ARRAY_CODE,(void*)chunk->m_oldPtr); + } break; } case PHY_SHORT: @@ -311,7 +331,7 @@ const char* btStridingMeshInterface::serialize(void* dataBuffer, btSerializer* s unLockReadOnlyVertexBase(part); } - serializer->finalizeChunk(chunk,"btMeshPartData",BT_ARRAY_CODE,uniquePtr); + serializer->finalizeChunk(chunk,"btMeshPartData",BT_ARRAY_CODE,chunk->m_oldPtr); } diff --git a/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h b/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h index 164a5c362..4f2d25e40 100644 --- a/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h +++ b/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h @@ -106,7 +106,7 @@ struct btMeshPartData { btVector3Data *m_vertices; btIntIndexData *m_indices; - int m_numTriangles; + int m_numTriangles;//length of m_indices = 3*m_numTriangles int m_numVertices; }; @@ -118,6 +118,8 @@ struct btStridingMeshInterfaceData btVector3Data m_scaling; + char m_padding[4]; + }; diff --git a/src/LinearMath/btSerializer.cpp b/src/LinearMath/btSerializer.cpp index 38ba54d2f..cbef74b04 100644 --- a/src/LinearMath/btSerializer.cpp +++ b/src/LinearMath/btSerializer.cpp @@ -1,5 +1,5 @@ unsigned char sBulletDNAstr[]= { -83,68,78,65,78,65,77,69,70,0,0,0,109,95,115,105,122,101,0,109, +83,68,78,65,78,65,77,69,80,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, @@ -16,89 +16,105 @@ unsigned char sBulletDNAstr[]= { 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,42,109,95,117,110,115,99,97,108,101, -100,80,111,105,110,116,115,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,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,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,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,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,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, -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,105,110,116,101,114,110,97,108,84,121,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, -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,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,105,110, -118,101,114,115,101,77,97,115,115,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,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,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,0,0,0,84,89,80,69,24,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,98,116,83,99,97,108,97,114,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,68,97,116,97,0,98,116,77,97,116,114,105,120,51,120, -51,68,97,116,97,0,98,116,84,114,97,110,115,102,111,114,109,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,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,97,116,97,0,98,116,82,105, -103,105,100,66,111,100,121,68,97,116,97,0,84,76,69,78,1,0,1,0, +65,114,114,97,121,83,105,122,101,0,109,95,118,97,108,117,101,0,42,109, +95,118,101,114,116,105,99,101,115,0,42,109,95,105,110,100,105,99,101,115, +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,110,117,109,77,101,115,104,80,97,114,116,115, +0,109,95,115,99,97,108,105,110,103,0,98,116,67,111,108,108,105,115,105, +111,110,83,104,97,112,101,68,97,116,97,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,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,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,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,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,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,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,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,105,110,116,101,114,110,97,108,84,121,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,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,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,105,110,118,101, +114,115,101,77,97,115,115,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,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,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,0, +84,89,80,69,29,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,98,116,83,99,97,108,97,114,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,68,97,116,97,0,98,116,77,97,116,114,105,120,51,120,51,68,97,116, +97,0,98,116,84,114,97,110,115,102,111,114,109,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,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,109,95,99,111,110,99,97,118,101,83, +104,97,112,101,68,97,116,97,59,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,97,116,97,0,98,116,82,105,103,105, +100,66,111,100,121,68,97,116,97,0,0,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,4,0,12,0, -36,0,8,0,16,0,48,0,64,0,12,0,52,0,20,0,64,0,64,0, --8,0,-32,1,83,84,82,67,13,0,0,0,11,0,3,0,4,0,0,0, -4,0,1,0,9,0,2,0,12,0,3,0,11,0,3,0,11,0,4,0, -11,0,5,0,13,0,2,0,9,0,6,0,9,0,7,0,14,0,1,0, -10,0,8,0,15,0,1,0,14,0,9,0,16,0,2,0,15,0,10,0, -14,0,11,0,17,0,3,0,9,0,12,0,4,0,13,0,0,0,14,0, -18,0,5,0,17,0,15,0,14,0,16,0,14,0,17,0,10,0,18,0, -0,0,14,0,19,0,2,0,14,0,19,0,10,0,20,0,20,0,4,0, -18,0,21,0,19,0,22,0,4,0,23,0,0,0,14,0,21,0,4,0, -18,0,21,0,14,0,24,0,4,0,25,0,0,0,14,0,22,0,23,0, -16,0,26,0,16,0,27,0,14,0,28,0,14,0,29,0,14,0,30,0, -4,0,31,0,10,0,32,0,9,0,33,0,9,0,34,0,17,0,35,0, -4,0,36,0,4,0,37,0,4,0,38,0,4,0,39,0,10,0,40,0, -10,0,41,0,10,0,42,0,4,0,43,0,9,0,44,0,10,0,45,0, -10,0,46,0,10,0,47,0,4,0,48,0,23,0,21,0,22,0,49,0, -15,0,50,0,14,0,51,0,14,0,52,0,10,0,53,0,14,0,54,0, -14,0,55,0,14,0,56,0,14,0,57,0,14,0,58,0,14,0,59,0, -14,0,60,0,10,0,61,0,10,0,62,0,4,0,63,0,10,0,64,0, -10,0,65,0,10,0,66,0,10,0,67,0,10,0,68,0,10,0,69,0, +36,0,8,0,16,0,48,0,64,0,12,0,52,0,20,0,64,0,4,0, +16,0,28,0,0,0,0,0,64,0,-8,0,-32,1,0,0,83,84,82,67, +17,0,0,0,11,0,3,0,4,0,0,0,4,0,1,0,9,0,2,0, +12,0,3,0,11,0,3,0,11,0,4,0,11,0,5,0,13,0,2,0, +9,0,6,0,9,0,7,0,14,0,1,0,10,0,8,0,15,0,1,0, +14,0,9,0,16,0,2,0,15,0,10,0,14,0,11,0,17,0,3,0, +9,0,12,0,4,0,13,0,0,0,14,0,18,0,5,0,17,0,15,0, +14,0,16,0,14,0,17,0,10,0,18,0,0,0,14,0,19,0,2,0, +14,0,19,0,10,0,20,0,20,0,4,0,18,0,21,0,19,0,22,0, +4,0,23,0,0,0,14,0,21,0,1,0,4,0,24,0,22,0,4,0, +14,0,25,0,21,0,26,0,4,0,27,0,4,0,28,0,23,0,4,0, +22,0,29,0,4,0,30,0,14,0,31,0,0,0,14,0,24,0,4,0, +25,0,32,0,25,0,15,0,23,0,33,0,10,0,18,0,26,0,4,0, +18,0,21,0,14,0,34,0,4,0,35,0,0,0,14,0,27,0,23,0, +16,0,36,0,16,0,37,0,14,0,38,0,14,0,39,0,14,0,40,0, +4,0,41,0,10,0,42,0,9,0,43,0,9,0,44,0,17,0,45,0, +4,0,46,0,4,0,47,0,4,0,48,0,4,0,49,0,10,0,50,0, +10,0,51,0,10,0,52,0,4,0,53,0,9,0,54,0,10,0,55,0, +10,0,56,0,10,0,57,0,4,0,58,0,28,0,21,0,27,0,59,0, +15,0,60,0,14,0,61,0,14,0,62,0,10,0,63,0,14,0,64,0, +14,0,65,0,14,0,66,0,14,0,67,0,14,0,68,0,14,0,69,0, +14,0,70,0,10,0,71,0,10,0,72,0,4,0,73,0,10,0,74,0, +10,0,75,0,10,0,76,0,10,0,77,0,10,0,78,0,10,0,79,0, }; int sBulletDNAlen= sizeof(sBulletDNAstr);