more work on serialization, initial for btTriangleMeshShape/btBvhTriangleMeshShape (only for floating point vertices, integer indices) work-in-progress

This commit is contained in:
erwin.coumans
2010-01-23 20:59:41 +00:00
parent e459145b91
commit 9d7d1c3983
11 changed files with 342 additions and 100 deletions

View File

@@ -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"

View File

@@ -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;

View File

@@ -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__

View File

@@ -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__

View File

@@ -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__

View File

@@ -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__

View File

@@ -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;i<trimesh->m_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);

View File

@@ -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",

View File

@@ -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;part<graphicssubparts ;part++)
for (part=0;part<graphicssubparts ;part++,memPtr++)
{
getLockedReadOnlyVertexIndexBase(&vertexbase,numverts,type,stride,&indexbase,indexstride,numtriangles,gfxindextype,part);
memPtr->m_numTriangles = numtriangles;//indices = 3*numtriangles
@@ -230,17 +230,37 @@ const char* btStridingMeshInterface::serialize(void* dataBuffer, btSerializer* s
{
case PHY_INTEGER:
{
for (gfxindex=0;gfxindex<numtriangles;gfxindex++)
{
unsigned int* tri_indices= (unsigned int*)(indexbase+gfxindex*indexstride);
graphicsbase = (float*)(vertexbase+tri_indices[0]*stride);
triangle[0].setValue(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(),graphicsbase[2]*meshScaling.getZ());
graphicsbase = (float*)(vertexbase+tri_indices[1]*stride);
triangle[1].setValue(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(), graphicsbase[2]*meshScaling.getZ());
graphicsbase = (float*)(vertexbase+tri_indices[2]*stride);
triangle[2].setValue(graphicsbase[0]*meshScaling.getX(),graphicsbase[1]*meshScaling.getY(), graphicsbase[2]*meshScaling.getZ());
}
int numindices = numtriangles*3;
memPtr->m_indices = 0;
if (numindices)
{
btChunk* chunk = serializer->allocate(sizeof(btIntIndexData),numindices);
btIntIndexData* tmpIndices = (btIntIndexData*)chunk->m_oldPtr;
memPtr->m_indices = tmpIndices;
for (gfxindex=0;gfxindex<numtriangles;gfxindex++)
{
unsigned int* tri_indices= (unsigned int*)(indexbase+gfxindex*indexstride);
tmpIndices[gfxindex*3].m_value = tri_indices[0];
tmpIndices[gfxindex*3+1].m_value = tri_indices[1];
tmpIndices[gfxindex*3+2].m_value = tri_indices[2];
}
serializer->finalizeChunk(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;i<numverts;i++)
{
graphicsbase = (float*)(vertexbase+i*stride);
tmpVertices[i].m_floats[0] = graphicsbase[0];
tmpVertices[i].m_floats[1] = graphicsbase[1];
tmpVertices[i].m_floats[2] = graphicsbase[2];
}
serializer->finalizeChunk(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);
}

View File

@@ -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];
};

View File

@@ -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);