mirror of
https://github.com/bulletphysics/bullet3
synced 2025-01-10 01:20:05 +00:00
Improved BulletSoftBody serialization, added cluster support. Joints and copying data from GPU back to softbody are the main todo.
Updated the Bullet/Demos/SerializeDemo to load .bullet files with the softbody data. BulletSoftBody should use getWorldTransform and not getInterpolationWorldTransform Fix btBulletWorldImporter so that it creates a copy of the index/vertex data, this prevents crashes when deleting the .bullet file with triangle meshes.
This commit is contained in:
parent
032c6bfe2c
commit
6173a30bce
@ -15,7 +15,7 @@ subject to the following restrictions:
|
||||
|
||||
|
||||
#define TEST_SERIALIZATION 1
|
||||
//#define DESERIALIZE_SOFT_BODIES 1
|
||||
//#undef DESERIALIZE_SOFT_BODIES
|
||||
|
||||
#ifdef BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
|
||||
#define CREATE_NEW_BULLETFILE 1
|
||||
@ -49,7 +49,9 @@ subject to the following restrictions:
|
||||
#include <stdio.h> //printf debugging
|
||||
|
||||
|
||||
|
||||
#ifdef DESERIALIZE_SOFT_BODIES
|
||||
#include "BulletSoftBody/btSoftBodyHelpers.h"
|
||||
#include "BulletSoftBody/btSoftRigidDynamicsWorld.h"
|
||||
#include "BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h"
|
||||
#endif
|
||||
@ -65,6 +67,7 @@ void SerializeDemo::clientMoveAndDisplay()
|
||||
///step the simulation
|
||||
if (m_dynamicsWorld)
|
||||
{
|
||||
|
||||
m_dynamicsWorld->stepSimulation(ms / 1000000.f);
|
||||
//optional but useful: debug drawing
|
||||
m_dynamicsWorld->debugDrawWorld();
|
||||
@ -114,12 +117,15 @@ void SerializeDemo::setupEmptyDynamicsWorld()
|
||||
|
||||
m_broadphase = new btDbvtBroadphase();
|
||||
|
||||
|
||||
///the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded)
|
||||
btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver;
|
||||
m_solver = sol;
|
||||
|
||||
#ifdef DESERIALIZE_SOFT_BODIES
|
||||
m_dynamicsWorld = new btSoftRigidDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration);
|
||||
btSoftRigidDynamicsWorld* world = new btSoftRigidDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration);
|
||||
m_dynamicsWorld = world;
|
||||
//world->setDrawFlags(world->getDrawFlags()^fDrawFlags::Clusters);
|
||||
#else
|
||||
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration);
|
||||
#endif //DESERIALIZE_SOFT_BODIES
|
||||
@ -130,8 +136,6 @@ void SerializeDemo::setupEmptyDynamicsWorld()
|
||||
|
||||
}
|
||||
|
||||
btAlignedObjectArray<btVector3> vtx;
|
||||
btAlignedObjectArray<btScalar> masses;
|
||||
|
||||
#ifdef DESERIALIZE_SOFT_BODIES
|
||||
#include "BulletSoftBody/btSoftBodyData.h"
|
||||
@ -139,6 +143,11 @@ class MySoftBulletWorldImporter : public btBulletWorldImporter
|
||||
{
|
||||
|
||||
btSoftRigidDynamicsWorld* m_softRigidWorld;
|
||||
|
||||
btHashMap<btHashPtr,btSoftBody::Material*> m_materialMap;
|
||||
|
||||
|
||||
|
||||
public:
|
||||
|
||||
MySoftBulletWorldImporter(btSoftRigidDynamicsWorld* world)
|
||||
@ -148,6 +157,11 @@ public:
|
||||
|
||||
}
|
||||
|
||||
virtual ~MySoftBulletWorldImporter()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
virtual bool convertAllObjects( bParse::btBulletFile* bulletFile2)
|
||||
{
|
||||
bool result = btBulletWorldImporter::convertAllObjects(bulletFile2);
|
||||
@ -158,84 +172,109 @@ public:
|
||||
if (bulletFile2->getFlags() & bParse::FD_DOUBLE_PRECISION)
|
||||
{
|
||||
btAssert(0); //not yet
|
||||
//btSoftBodyFloatData* colObjData = (btSoftBodyFloatData*)bulletFile2->m_softBodies[i];
|
||||
//btSoftBodyFloatData* softBodyData = (btSoftBodyFloatData*)bulletFile2->m_softBodies[i];
|
||||
} else
|
||||
{
|
||||
btSoftBodyFloatData* colObjData = (btSoftBodyFloatData*)bulletFile2->m_softBodies[i];
|
||||
btSoftBodyFloatData* softBodyData = (btSoftBodyFloatData*)bulletFile2->m_softBodies[i];
|
||||
int i;
|
||||
int numNodes = colObjData->m_numNodes;
|
||||
int numNodes = softBodyData->m_numNodes;
|
||||
|
||||
for (i=0;i<colObjData->m_numLinks;i++)
|
||||
|
||||
btSoftBody* psb=new btSoftBody(&m_softRigidWorld->getWorldInfo());
|
||||
|
||||
//materials
|
||||
for (i=0;i<softBodyData->m_numMaterials;i++)
|
||||
{
|
||||
SoftBodyLinkData& link = colObjData->m_links[i];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
vtx.resize(numNodes);
|
||||
masses.resize(numNodes);
|
||||
|
||||
for (i=0;i<numNodes;i++)
|
||||
{
|
||||
SoftBodyNodeData& node = colObjData->m_nodes[i];
|
||||
vtx[i].deSerializeFloat(node.m_position);
|
||||
masses[i] = node.m_inverseMass? 1./node.m_inverseMass : 0.f;
|
||||
}
|
||||
|
||||
btSoftBody* psb=new btSoftBody(&m_softRigidWorld->getWorldInfo(),numNodes,&vtx[0],&masses[0]);
|
||||
|
||||
#if 0
|
||||
for (i=0;i<numNodes;i++)
|
||||
{
|
||||
SoftBodyNodeData& node = colObjData->m_nodes[i];
|
||||
if (!node.m_inverseMass)
|
||||
SoftBodyMaterialData* matData = softBodyData->m_materials[i];
|
||||
btSoftBody::Material** matPtr = m_materialMap.find(matData);
|
||||
btSoftBody::Material* mat = 0;
|
||||
if (matPtr&& *matPtr)
|
||||
{
|
||||
btScalar mass = node.m_inverseMass? 1.f/node.m_inverseMass : 0;
|
||||
psb->setMass(i,mass);
|
||||
mat = *matPtr;
|
||||
} else
|
||||
{
|
||||
mat = psb->appendMaterial();
|
||||
mat->m_flags = matData->m_flags;
|
||||
mat->m_kAST = matData->m_angularStiffness;
|
||||
mat->m_kLST = matData->m_linearStiffness;
|
||||
mat->m_kVST = matData->m_volumeStiffness;
|
||||
m_materialMap.insert(matData,mat);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
for (i=0;i<colObjData->m_numLinks;i++)
|
||||
|
||||
|
||||
for (i=0;i<numNodes;i++)
|
||||
{
|
||||
SoftBodyLinkData& link = colObjData->m_links[i];
|
||||
psb->appendLink(link.m_nodeIndices[0],link.m_nodeIndices[1]);
|
||||
SoftBodyNodeData& nodeData = softBodyData->m_nodes[i];
|
||||
btVector3 position;
|
||||
position.deSerializeFloat(nodeData.m_position);
|
||||
btScalar mass = nodeData.m_inverseMass? 1./nodeData.m_inverseMass : 0.f;
|
||||
psb->appendNode(position,mass);
|
||||
btSoftBody::Node* node = &psb->m_nodes[psb->m_nodes.size()-1];
|
||||
node->m_area = nodeData.m_area;
|
||||
node->m_battach = nodeData.m_attach;
|
||||
node->m_f.deSerializeFloat(nodeData.m_accumulatedForce);
|
||||
node->m_im = nodeData.m_inverseMass;
|
||||
|
||||
btSoftBody::Material** matPtr = m_materialMap.find(nodeData.m_material);
|
||||
if (matPtr && *matPtr)
|
||||
{
|
||||
node->m_material = *matPtr;
|
||||
} else
|
||||
{
|
||||
printf("no mat?\n");
|
||||
}
|
||||
|
||||
node->m_n.deSerializeFloat(nodeData.m_normal);
|
||||
node->m_q = node->m_x;
|
||||
node->m_v.deSerializeFloat(nodeData.m_velocity);
|
||||
|
||||
}
|
||||
|
||||
for (i=0;i<colObjData->m_numFaces;i++)
|
||||
for (i=0;i<softBodyData->m_numLinks;i++)
|
||||
{
|
||||
SoftBodyFaceData& face = colObjData->m_faces[i];
|
||||
psb->appendFace(face.m_nodeIndices[0],face.m_nodeIndices[1],face.m_nodeIndices[2]);
|
||||
SoftBodyLinkData& linkData = softBodyData->m_links[i];
|
||||
btSoftBody::Material** matPtr = m_materialMap.find(linkData.m_material);
|
||||
if (matPtr && *matPtr)
|
||||
{
|
||||
psb->appendLink(linkData.m_nodeIndices[0],linkData.m_nodeIndices[1],*matPtr);
|
||||
} else
|
||||
{
|
||||
psb->appendLink(linkData.m_nodeIndices[0],linkData.m_nodeIndices[1]);
|
||||
}
|
||||
btSoftBody::Link* link = &psb->m_links[psb->m_links.size()-1];
|
||||
link->m_bbending = linkData.m_bbending;
|
||||
link->m_c0 = linkData.m_c0;
|
||||
link->m_c1 = linkData.m_c1;
|
||||
link->m_c2 = linkData.m_c2;
|
||||
link->m_c3.deSerializeFloat(linkData.m_c3);
|
||||
link->m_rl = linkData.m_restLength;
|
||||
}
|
||||
|
||||
for (i=0;i<softBodyData->m_numFaces;i++)
|
||||
{
|
||||
SoftBodyFaceData& faceData = softBodyData->m_faces[i];
|
||||
btSoftBody::Material** matPtr = m_materialMap.find(faceData.m_material);
|
||||
if (matPtr && *matPtr)
|
||||
{
|
||||
psb->appendFace(faceData.m_nodeIndices[0],faceData.m_nodeIndices[1],faceData.m_nodeIndices[2],*matPtr);
|
||||
} else
|
||||
{
|
||||
psb->appendFace(faceData.m_nodeIndices[0],faceData.m_nodeIndices[1],faceData.m_nodeIndices[2]);
|
||||
}
|
||||
btSoftBody::Face* face = &psb->m_faces[psb->m_faces.size()-1];
|
||||
face->m_normal.deSerializeFloat(faceData.m_normal);
|
||||
face->m_ra = faceData.m_restArea;
|
||||
}
|
||||
|
||||
// psb->randomizeConstraints();
|
||||
|
||||
|
||||
//psb->updateNormals();
|
||||
//psb->updateBounds();
|
||||
//psb->updateConstants();
|
||||
|
||||
|
||||
psb->m_cfg.piterations=colObjData->m_config.m_positionIterations;
|
||||
psb->m_cfg.diterations=colObjData->m_config.m_driftIterations;
|
||||
psb->m_cfg.citerations=colObjData->m_config.m_clusterIterations;
|
||||
psb->m_cfg.viterations=colObjData->m_config.m_velocityIterations;
|
||||
|
||||
|
||||
//psb->setTotalMass(0.1);
|
||||
psb->m_cfg.aeromodel = (btSoftBody::eAeroModel::_)colObjData->m_config.m_aeroModel;
|
||||
psb->m_cfg.kLF = colObjData->m_config.m_lift;
|
||||
psb->m_cfg.kDG = colObjData->m_config.m_drag;
|
||||
//psb->addForce(btVector3(0,2,0),0);
|
||||
|
||||
|
||||
//anchors
|
||||
for (i=0;i<colObjData->m_numAnchors;i++)
|
||||
for (i=0;i<softBodyData->m_numAnchors;i++)
|
||||
{
|
||||
btCollisionObject** colAptr = m_bodyMap.find(colObjData->m_anchors[i].m_rigidBody);
|
||||
btCollisionObject** colAptr = m_bodyMap.find(softBodyData->m_anchors[i].m_rigidBody);
|
||||
if (colAptr && *colAptr)
|
||||
{
|
||||
btRigidBody* body = btRigidBody::upcast(*colAptr);
|
||||
@ -243,13 +282,131 @@ public:
|
||||
{
|
||||
bool disableCollision = false;
|
||||
btVector3 localPivot;
|
||||
localPivot.deSerializeFloat(colObjData->m_anchors[i].m_localFrame);
|
||||
psb->appendAnchor(colObjData->m_anchors[i].m_nodeIndex,body,localPivot, disableCollision);
|
||||
localPivot.deSerializeFloat(softBodyData->m_anchors[i].m_localFrame);
|
||||
psb->appendAnchor(softBodyData->m_anchors[i].m_nodeIndex,body,localPivot, disableCollision);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (softBodyData->m_pose)
|
||||
{
|
||||
psb->m_pose.m_aqq.deSerializeFloat( softBodyData->m_pose->m_aqq);
|
||||
psb->m_pose.m_bframe = softBodyData->m_pose->m_bframe;
|
||||
psb->m_pose.m_bvolume = softBodyData->m_pose->m_bvolume;
|
||||
psb->m_pose.m_com.deSerializeFloat(softBodyData->m_pose->m_com);
|
||||
|
||||
psb->m_pose.m_pos.resize(softBodyData->m_pose->m_numPositions);
|
||||
for (i=0;i<softBodyData->m_pose->m_numPositions;i++)
|
||||
{
|
||||
psb->m_pose.m_pos[i].deSerializeFloat(softBodyData->m_pose->m_positions[i]);
|
||||
}
|
||||
psb->m_pose.m_rot.deSerializeFloat(softBodyData->m_pose->m_rot);
|
||||
psb->m_pose.m_scl.deSerializeFloat(softBodyData->m_pose->m_scale);
|
||||
psb->m_pose.m_wgh.resize(softBodyData->m_pose->m_numWeigts);
|
||||
for (i=0;i<softBodyData->m_pose->m_numWeigts;i++)
|
||||
{
|
||||
psb->m_pose.m_wgh[i] = softBodyData->m_pose->m_weights[i];
|
||||
}
|
||||
psb->m_pose.m_volume = softBodyData->m_pose->m_restVolume;
|
||||
}
|
||||
|
||||
#if 1
|
||||
psb->m_cfg.piterations=softBodyData->m_config.m_positionIterations;
|
||||
psb->m_cfg.diterations=softBodyData->m_config.m_driftIterations;
|
||||
psb->m_cfg.citerations=softBodyData->m_config.m_clusterIterations;
|
||||
psb->m_cfg.viterations=softBodyData->m_config.m_velocityIterations;
|
||||
|
||||
//psb->setTotalMass(0.1);
|
||||
psb->m_cfg.aeromodel = (btSoftBody::eAeroModel::_)softBodyData->m_config.m_aeroModel;
|
||||
psb->m_cfg.kLF = softBodyData->m_config.m_lift;
|
||||
psb->m_cfg.kDG = softBodyData->m_config.m_drag;
|
||||
psb->m_cfg.kMT = softBodyData->m_config.m_poseMatch;
|
||||
psb->m_cfg.collisions = softBodyData->m_config.m_collisionFlags;
|
||||
psb->m_cfg.kDF = softBodyData->m_config.m_dynamicFriction;
|
||||
psb->m_cfg.kDP = softBodyData->m_config.m_damping;
|
||||
psb->m_cfg.kPR = softBodyData->m_config.m_pressure;
|
||||
psb->m_cfg.kVC = softBodyData->m_config.m_volume;
|
||||
psb->m_cfg.kAHR = softBodyData->m_config.m_anchorHardness;
|
||||
psb->m_cfg.kKHR = softBodyData->m_config.m_kineticContactHardness;
|
||||
psb->m_cfg.kSHR = softBodyData->m_config.m_softContactHardness;
|
||||
psb->m_cfg.kSRHR_CL = softBodyData->m_config.m_softRigidClusterHardness;
|
||||
psb->m_cfg.kSKHR_CL = softBodyData->m_config.m_softKineticClusterHardness;
|
||||
psb->m_cfg.kSSHR_CL = softBodyData->m_config.m_softSoftClusterHardness;
|
||||
#endif
|
||||
|
||||
// pm->m_kLST = 1;
|
||||
|
||||
#if 1
|
||||
//clusters
|
||||
if (softBodyData->m_numClusters)
|
||||
{
|
||||
int j;
|
||||
psb->m_clusters.resize(softBodyData->m_numClusters);
|
||||
for (i=0;i<softBodyData->m_numClusters;i++)
|
||||
{
|
||||
psb->m_clusters[i] = new(btAlignedAlloc(sizeof(btSoftBody::Cluster),16)) btSoftBody::Cluster();
|
||||
psb->m_clusters[i]->m_adamping = softBodyData->m_clusters[i].m_adamping;
|
||||
psb->m_clusters[i]->m_av.deSerializeFloat(softBodyData->m_clusters[i].m_av);
|
||||
psb->m_clusters[i]->m_clusterIndex = softBodyData->m_clusters[i].m_clusterIndex;
|
||||
psb->m_clusters[i]->m_collide = softBodyData->m_clusters[i].m_collide;
|
||||
psb->m_clusters[i]->m_com.deSerializeFloat(softBodyData->m_clusters[i].m_com);
|
||||
psb->m_clusters[i]->m_containsAnchor = softBodyData->m_clusters[i].m_containsAnchor;
|
||||
psb->m_clusters[i]->m_dimpulses[0].deSerializeFloat(softBodyData->m_clusters[i].m_dimpulses[0]);
|
||||
psb->m_clusters[i]->m_dimpulses[1].deSerializeFloat(softBodyData->m_clusters[i].m_dimpulses[1]);
|
||||
|
||||
psb->m_clusters[i]->m_framerefs.resize(softBodyData->m_clusters[i].m_numFrameRefs);
|
||||
for (j=0;j<softBodyData->m_clusters[i].m_numFrameRefs;j++)
|
||||
{
|
||||
psb->m_clusters[i]->m_framerefs[j].deSerializeFloat(softBodyData->m_clusters[i].m_framerefs[j]);
|
||||
}
|
||||
psb->m_clusters[i]->m_nodes.resize(softBodyData->m_clusters[i].m_numNodes);
|
||||
for (j=0;j<softBodyData->m_clusters[i].m_numNodes;j++)
|
||||
{
|
||||
int nodeIndex = softBodyData->m_clusters[i].m_nodeIndices[j];
|
||||
psb->m_clusters[i]->m_nodes[j] = &psb->m_nodes[nodeIndex];
|
||||
}
|
||||
|
||||
psb->m_clusters[i]->m_masses.resize(softBodyData->m_clusters[i].m_numMasses);
|
||||
for (j=0;j<softBodyData->m_clusters[i].m_numMasses;j++)
|
||||
{
|
||||
psb->m_clusters[i]->m_masses[j] = softBodyData->m_clusters[i].m_masses[j];
|
||||
}
|
||||
psb->m_clusters[i]->m_framexform.deSerializeFloat(softBodyData->m_clusters[i].m_framexform);
|
||||
psb->m_clusters[i]->m_idmass = softBodyData->m_clusters[i].m_idmass;
|
||||
psb->m_clusters[i]->m_imass = softBodyData->m_clusters[i].m_imass;
|
||||
psb->m_clusters[i]->m_invwi.deSerializeFloat(softBodyData->m_clusters[i].m_invwi);
|
||||
psb->m_clusters[i]->m_ldamping = softBodyData->m_clusters[i].m_ldamping;
|
||||
psb->m_clusters[i]->m_locii.deSerializeFloat(softBodyData->m_clusters[i].m_locii);
|
||||
psb->m_clusters[i]->m_lv.deSerializeFloat(softBodyData->m_clusters[i].m_lv);
|
||||
psb->m_clusters[i]->m_matching = softBodyData->m_clusters[i].m_matching;
|
||||
psb->m_clusters[i]->m_maxSelfCollisionImpulse = 0;//softBodyData->m_clusters[i].m_maxSelfCollisionImpulse;
|
||||
psb->m_clusters[i]->m_ndamping = softBodyData->m_clusters[i].m_ndamping;
|
||||
psb->m_clusters[i]->m_ndimpulses = softBodyData->m_clusters[i].m_ndimpulses;
|
||||
psb->m_clusters[i]->m_nvimpulses = softBodyData->m_clusters[i].m_nvimpulses;
|
||||
psb->m_clusters[i]->m_selfCollisionImpulseFactor = softBodyData->m_clusters[i].m_selfCollisionImpulseFactor;
|
||||
psb->m_clusters[i]->m_vimpulses[0].deSerializeFloat(softBodyData->m_clusters[i].m_vimpulses[0]);
|
||||
psb->m_clusters[i]->m_vimpulses[1].deSerializeFloat(softBodyData->m_clusters[i].m_vimpulses[1]);
|
||||
|
||||
}
|
||||
//psb->initializeClusters();
|
||||
//psb->updateClusters();
|
||||
|
||||
}
|
||||
#else
|
||||
|
||||
psb->m_cfg.piterations = 2;
|
||||
psb->m_cfg.collisions = btSoftBody::fCollision::CL_SS+ btSoftBody::fCollision::CL_RS;
|
||||
//psb->setTotalMass(50,true);
|
||||
//psb->generateClusters(64);
|
||||
//psb->m_cfg.kDF=1;
|
||||
psb->generateClusters(8);
|
||||
|
||||
|
||||
#endif //
|
||||
|
||||
|
||||
m_softRigidWorld->getWorldInfo().m_dispatcher = m_softRigidWorld->getDispatcher();
|
||||
|
||||
m_softRigidWorld->addSoftBody(psb);
|
||||
|
||||
|
||||
@ -279,7 +436,7 @@ void SerializeDemo::initPhysics()
|
||||
#endif //DESERIALIZE_SOFT_BODIES
|
||||
// fileLoader->setVerboseMode(true);
|
||||
|
||||
if (!fileLoader->loadFile("testFile.bullet"))
|
||||
if (!fileLoader->loadFile("../SoftDemo/testFile.bullet"))
|
||||
{
|
||||
///create a few basic rigid bodies and save them to testFile.bullet
|
||||
btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(50.),btScalar(50.)));
|
||||
|
@ -52,8 +52,8 @@ static btRigidBody* staticBody = 0;
|
||||
static float waveheight = 5.f;
|
||||
|
||||
const float TRIANGLE_SIZE=8.f;
|
||||
|
||||
#define DEMO_MODE_TIMEOUT 500.f
|
||||
unsigned current_demo=23;
|
||||
#define DEMO_MODE_TIMEOUT 15.f //15 seconds for each demo
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
@ -769,6 +769,7 @@ static void Init_Torus(SoftDemo* pdemo)
|
||||
pdemo->getSoftDynamicsWorld()->addSoftBody(psb);
|
||||
pdemo->m_cutting=true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
@ -1255,7 +1256,7 @@ static void Init_TetraCube(SoftDemo* pdemo)
|
||||
|
||||
|
||||
|
||||
unsigned current_demo=19;
|
||||
|
||||
|
||||
/* Init */
|
||||
void (*demofncs[])(SoftDemo*)=
|
||||
@ -1329,10 +1330,6 @@ void SoftDemo::clientResetScene()
|
||||
delete obj;
|
||||
}
|
||||
|
||||
m_softBodyWorldInfo.m_sparsesdf.Reset();
|
||||
|
||||
current_demo=current_demo%(sizeof(demofncs)/sizeof(demofncs[0]));
|
||||
|
||||
|
||||
//create ground object
|
||||
btTransform tr;
|
||||
@ -1352,6 +1349,13 @@ void SoftDemo::clientResetScene()
|
||||
|
||||
m_dynamicsWorld->addCollisionObject(newOb);
|
||||
|
||||
m_softBodyWorldInfo.m_sparsesdf.Reset();
|
||||
|
||||
current_demo=current_demo%(sizeof(demofncs)/sizeof(demofncs[0]));
|
||||
|
||||
|
||||
|
||||
|
||||
motorcontrol.goal = 0;
|
||||
motorcontrol.maxtorque = 0;
|
||||
|
||||
|
@ -65,6 +65,28 @@ void btBulletWorldImporter::deleteAllData()
|
||||
}
|
||||
m_allocatedNames.clear();
|
||||
|
||||
|
||||
for (i=0;i<m_indexArrays.size();i++)
|
||||
{
|
||||
btAlignedFree(m_indexArrays[i]);
|
||||
}
|
||||
|
||||
for (i=0;i<m_shortIndexArrays.size();i++)
|
||||
{
|
||||
btAlignedFree(m_shortIndexArrays[i]);
|
||||
|
||||
}
|
||||
for (i=0;i<m_floatVertexArrays.size();i++)
|
||||
{
|
||||
btAlignedFree(m_floatVertexArrays[i]);
|
||||
}
|
||||
|
||||
for (i=0;i<m_doubleVertexArrays.size();i++)
|
||||
{
|
||||
btAlignedFree(m_doubleVertexArrays[i]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -100,23 +122,51 @@ btTriangleIndexVertexArray* btBulletWorldImporter::createMeshInterface(btStridin
|
||||
for (int i=0;i<meshData.m_numMeshParts;i++)
|
||||
{
|
||||
btIndexedMesh meshPart;
|
||||
meshPart.m_numTriangles = meshData.m_meshPartsPtr[i].m_numTriangles;
|
||||
meshPart.m_numVertices = meshData.m_meshPartsPtr[i].m_numVertices;
|
||||
|
||||
|
||||
if (meshData.m_meshPartsPtr[i].m_indices32)
|
||||
{
|
||||
meshPart.m_indexType = PHY_INTEGER;
|
||||
meshPart.m_triangleIndexStride = 3*sizeof(int);
|
||||
meshPart.m_triangleIndexBase = (const unsigned char*)meshData.m_meshPartsPtr[i].m_indices32;
|
||||
int* indexArray = (int*)btAlignedAlloc(sizeof(int)*3*meshPart.m_numTriangles,16);
|
||||
m_indexArrays.push_back(indexArray);
|
||||
for (int j=0;j<3*meshPart.m_numTriangles;j++)
|
||||
{
|
||||
indexArray[j] = meshData.m_meshPartsPtr[i].m_indices32[j].m_value;
|
||||
}
|
||||
meshPart.m_triangleIndexBase = (const unsigned char*)indexArray;
|
||||
} else
|
||||
{
|
||||
meshPart.m_indexType = PHY_SHORT;
|
||||
if (meshData.m_meshPartsPtr[i].m_3indices16)
|
||||
{
|
||||
meshPart.m_triangleIndexStride = sizeof(btShortIntIndexTripletData);
|
||||
meshPart.m_triangleIndexBase = (const unsigned char*)meshData.m_meshPartsPtr[i].m_3indices16;
|
||||
|
||||
short int* indexArray = (short int*)btAlignedAlloc(sizeof(short int)*3*meshPart.m_numTriangles,16);
|
||||
m_shortIndexArrays.push_back(indexArray);
|
||||
|
||||
for (int j=0;j<meshPart.m_numTriangles;j++)
|
||||
{
|
||||
indexArray[3*j] = meshData.m_meshPartsPtr[i].m_3indices16[j].m_values[0];
|
||||
indexArray[3*j+1] = meshData.m_meshPartsPtr[i].m_3indices16[j].m_values[1];
|
||||
indexArray[3*j+2] = meshData.m_meshPartsPtr[i].m_3indices16[j].m_values[2];
|
||||
}
|
||||
|
||||
meshPart.m_triangleIndexBase = (const unsigned char*)indexArray;
|
||||
}
|
||||
if (meshData.m_meshPartsPtr[i].m_indices16)
|
||||
{
|
||||
meshPart.m_triangleIndexStride = 3*sizeof(short int);
|
||||
meshPart.m_triangleIndexBase = (const unsigned char*)meshData.m_meshPartsPtr[i].m_indices16;
|
||||
short int* indexArray = (short int*)btAlignedAlloc(sizeof(short int)*3*meshPart.m_numTriangles,16);
|
||||
m_shortIndexArrays.push_back(indexArray);
|
||||
for (int j=0;j<3*meshPart.m_numTriangles;j++)
|
||||
{
|
||||
indexArray[j] = meshData.m_meshPartsPtr[i].m_indices16[j].m_value;
|
||||
}
|
||||
|
||||
meshPart.m_triangleIndexBase = (const unsigned char*)indexArray;
|
||||
}
|
||||
|
||||
}
|
||||
@ -125,15 +175,35 @@ btTriangleIndexVertexArray* btBulletWorldImporter::createMeshInterface(btStridin
|
||||
{
|
||||
meshPart.m_vertexType = PHY_FLOAT;
|
||||
meshPart.m_vertexStride = sizeof(btVector3FloatData);
|
||||
meshPart.m_vertexBase = (const unsigned char*)meshData.m_meshPartsPtr[i].m_vertices3f;
|
||||
btVector3FloatData* vertices = (btVector3FloatData*) btAlignedAlloc(sizeof(btVector3FloatData)*meshPart.m_numVertices,16);
|
||||
m_floatVertexArrays.push_back(vertices);
|
||||
|
||||
for (int j=0;j<meshPart.m_numVertices;j++)
|
||||
{
|
||||
vertices[j].m_floats[0] = meshData.m_meshPartsPtr[i].m_vertices3f[j].m_floats[0];
|
||||
vertices[j].m_floats[1] = meshData.m_meshPartsPtr[i].m_vertices3f[j].m_floats[1];
|
||||
vertices[j].m_floats[2] = meshData.m_meshPartsPtr[i].m_vertices3f[j].m_floats[2];
|
||||
vertices[j].m_floats[3] = meshData.m_meshPartsPtr[i].m_vertices3f[j].m_floats[3];
|
||||
}
|
||||
meshPart.m_vertexBase = (const unsigned char*)vertices;
|
||||
} else
|
||||
{
|
||||
meshPart.m_vertexType = PHY_DOUBLE;
|
||||
meshPart.m_vertexStride = sizeof(btVector3DoubleData);
|
||||
meshPart.m_vertexBase = (const unsigned char*)meshData.m_meshPartsPtr[i].m_vertices3d;
|
||||
|
||||
|
||||
btVector3DoubleData* vertices = (btVector3DoubleData*) btAlignedAlloc(sizeof(btVector3DoubleData)*meshPart.m_numVertices,16);
|
||||
m_doubleVertexArrays.push_back(vertices);
|
||||
|
||||
for (int j=0;j<meshPart.m_numVertices;j++)
|
||||
{
|
||||
vertices[j].m_floats[0] = meshData.m_meshPartsPtr[i].m_vertices3d[j].m_floats[0];
|
||||
vertices[j].m_floats[1] = meshData.m_meshPartsPtr[i].m_vertices3d[j].m_floats[1];
|
||||
vertices[j].m_floats[2] = meshData.m_meshPartsPtr[i].m_vertices3d[j].m_floats[2];
|
||||
vertices[j].m_floats[3] = meshData.m_meshPartsPtr[i].m_vertices3d[j].m_floats[3];
|
||||
}
|
||||
meshPart.m_vertexBase = (const unsigned char*)vertices;
|
||||
}
|
||||
meshPart.m_numTriangles = meshData.m_meshPartsPtr[i].m_numTriangles;
|
||||
meshPart.m_numVertices = meshData.m_meshPartsPtr[i].m_numVertices;
|
||||
|
||||
if (meshPart.m_triangleIndexBase && meshPart.m_vertexBase)
|
||||
{
|
||||
@ -433,6 +503,10 @@ btCollisionShape* btBulletWorldImporter::convertCollisionShape( btCollisionShap
|
||||
|
||||
break;
|
||||
}
|
||||
case SOFTBODY_SHAPE_PROXYTYPE:
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
{
|
||||
printf("unsupported shape type (%d)\n",shapeData->m_shapeType);
|
||||
|
@ -72,6 +72,12 @@ protected:
|
||||
btAlignedObjectArray<btTriangleIndexVertexArray*> m_allocatedTriangleIndexArrays;
|
||||
btAlignedObjectArray<char*> m_allocatedNames;
|
||||
|
||||
btAlignedObjectArray<int*> m_indexArrays;
|
||||
btAlignedObjectArray<short int*> m_shortIndexArrays;
|
||||
btAlignedObjectArray<btVector3FloatData*> m_floatVertexArrays;
|
||||
btAlignedObjectArray<btVector3DoubleData*> m_doubleVertexArrays;
|
||||
|
||||
|
||||
btHashMap<btHashPtr,btOptimizedBvh*> m_bvhMap;
|
||||
btHashMap<btHashPtr,btTriangleInfoMap*> m_timMap;
|
||||
|
||||
@ -83,9 +89,10 @@ protected:
|
||||
btHashMap<btHashPtr,btCollisionShape*> m_shapeMap;
|
||||
btHashMap<btHashPtr,btCollisionObject*> m_bodyMap;
|
||||
|
||||
|
||||
//methods
|
||||
|
||||
btTriangleIndexVertexArray* createMeshInterface(btStridingMeshInterfaceData& meshData);
|
||||
|
||||
|
||||
static btRigidBody& getFixedBody();
|
||||
|
||||
@ -163,6 +170,7 @@ public:
|
||||
virtual btGImpactMeshShape* createGimpactShape(btStridingMeshInterface* trimesh);
|
||||
virtual class btConvexHullShape* createConvexHullShape();
|
||||
virtual class btCompoundShape* createCompoundShape();
|
||||
virtual btTriangleIndexVertexArray* createMeshInterface(btStridingMeshInterfaceData& meshData);
|
||||
|
||||
///acceleration and connectivity structures
|
||||
virtual btOptimizedBvh* createOptimizedBvh();
|
||||
|
@ -24,6 +24,42 @@ btSoftBody::btSoftBody(btSoftBodyWorldInfo* worldInfo,int node_count, const btV
|
||||
:m_worldInfo(worldInfo)
|
||||
{
|
||||
/* Init */
|
||||
initDefaults();
|
||||
|
||||
/* Default material */
|
||||
Material* pm=appendMaterial();
|
||||
pm->m_kLST = 1;
|
||||
pm->m_kAST = 1;
|
||||
pm->m_kVST = 1;
|
||||
pm->m_flags = fMaterial::Default;
|
||||
|
||||
/* Nodes */
|
||||
const btScalar margin=getCollisionShape()->getMargin();
|
||||
m_nodes.resize(node_count);
|
||||
for(int i=0,ni=node_count;i<ni;++i)
|
||||
{
|
||||
Node& n=m_nodes[i];
|
||||
ZeroInitialize(n);
|
||||
n.m_x = x?*x++:btVector3(0,0,0);
|
||||
n.m_q = n.m_x;
|
||||
n.m_im = m?*m++:1;
|
||||
n.m_im = n.m_im>0?1/n.m_im:0;
|
||||
n.m_leaf = m_ndbvt.insert(btDbvtVolume::FromCR(n.m_x,margin),&n);
|
||||
n.m_material= pm;
|
||||
}
|
||||
updateBounds();
|
||||
|
||||
}
|
||||
|
||||
btSoftBody::btSoftBody(btSoftBodyWorldInfo* worldInfo)
|
||||
:m_worldInfo(worldInfo)
|
||||
{
|
||||
initDefaults();
|
||||
}
|
||||
|
||||
|
||||
void btSoftBody::initDefaults()
|
||||
{
|
||||
m_internalType = CO_SOFT_BODY;
|
||||
m_cfg.aeromodel = eAeroModel::V_Point;
|
||||
m_cfg.kVCF = 1;
|
||||
@ -64,35 +100,16 @@ btSoftBody::btSoftBody(btSoftBodyWorldInfo* worldInfo,int node_count, const btV
|
||||
m_bounds[1] = btVector3(0,0,0);
|
||||
m_worldTransform.setIdentity();
|
||||
setSolver(eSolverPresets::Positions);
|
||||
/* Default material */
|
||||
Material* pm=appendMaterial();
|
||||
pm->m_kLST = 1;
|
||||
pm->m_kAST = 1;
|
||||
pm->m_kVST = 1;
|
||||
pm->m_flags = fMaterial::Default;
|
||||
|
||||
/* Collision shape */
|
||||
///for now, create a collision shape internally
|
||||
m_collisionShape = new btSoftBodyCollisionShape(this);
|
||||
m_collisionShape->setMargin(0.25);
|
||||
/* Nodes */
|
||||
const btScalar margin=getCollisionShape()->getMargin();
|
||||
m_nodes.resize(node_count);
|
||||
for(int i=0,ni=node_count;i<ni;++i)
|
||||
{
|
||||
Node& n=m_nodes[i];
|
||||
ZeroInitialize(n);
|
||||
n.m_x = x?*x++:btVector3(0,0,0);
|
||||
n.m_q = n.m_x;
|
||||
n.m_im = m?*m++:1;
|
||||
n.m_im = n.m_im>0?1/n.m_im:0;
|
||||
n.m_leaf = m_ndbvt.insert(btDbvtVolume::FromCR(n.m_x,margin),&n);
|
||||
n.m_material= pm;
|
||||
}
|
||||
updateBounds();
|
||||
|
||||
m_initialWorldTransform.setIdentity();
|
||||
|
||||
m_windVelocity = btVector3(0,0,0);
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
@ -3016,6 +3033,7 @@ const char* btSoftBody::serialize(void* dataBuffer, class btSerializer* serializ
|
||||
|
||||
btCollisionObject::serialize(&sbd->m_collisionObjectData, serializer);
|
||||
|
||||
btHashMap<btHashPtr,int> m_nodeIndexMap;
|
||||
|
||||
sbd->m_numMaterials = m_materials.size();
|
||||
sbd->m_materials = sbd->m_numMaterials? (SoftBodyMaterialData**) serializer->getUniquePointer((void*)&m_materials): 0;
|
||||
@ -3068,6 +3086,7 @@ const char* btSoftBody::serialize(void* dataBuffer, class btSerializer* serializ
|
||||
m_nodes[i].m_x.serializeFloat(memPtr->m_position);
|
||||
m_nodes[i].m_q.serializeFloat(memPtr->m_previousPosition);
|
||||
m_nodes[i].m_v.serializeFloat(memPtr->m_velocity);
|
||||
m_nodeIndexMap.insert(&m_nodes[i],i);
|
||||
}
|
||||
serializer->finalizeChunk(chunk,"SoftBodyNodeData",BT_SBNODE_CODE,(void*) &m_nodes[0]);
|
||||
}
|
||||
@ -3167,7 +3186,7 @@ const char* btSoftBody::serialize(void* dataBuffer, class btSerializer* serializ
|
||||
}
|
||||
|
||||
|
||||
|
||||
sbd->m_config.m_dynamicFriction = m_cfg.kDF;
|
||||
sbd->m_config.m_baumgarte = m_cfg.kVCF;
|
||||
sbd->m_config.m_pressure = m_cfg.kPR;
|
||||
sbd->m_config.m_aeroModel = this->m_cfg.aeromodel;
|
||||
@ -3195,9 +3214,148 @@ const char* btSoftBody::serialize(void* dataBuffer, class btSerializer* serializ
|
||||
sbd->m_config.m_softKineticClusterImpulseSplit = m_cfg.kSK_SPLT_CL;
|
||||
sbd->m_config.m_softSoftClusterImpulseSplit = m_cfg.kSS_SPLT_CL;
|
||||
|
||||
//pose for shape matching
|
||||
{
|
||||
sbd->m_pose = (SoftBodyPoseData*)serializer->getUniquePointer((void*)&m_pose);
|
||||
|
||||
//not yet
|
||||
sbd->m_pose = 0;
|
||||
int sz = sizeof(SoftBodyPoseData);
|
||||
btChunk* chunk = serializer->allocate(sz,1);
|
||||
SoftBodyPoseData* memPtr = (SoftBodyPoseData*)chunk->m_oldPtr;
|
||||
|
||||
m_pose.m_aqq.serializeFloat(memPtr->m_aqq);
|
||||
memPtr->m_bframe = m_pose.m_bframe;
|
||||
memPtr->m_bvolume = m_pose.m_bvolume;
|
||||
m_pose.m_com.serializeFloat(memPtr->m_com);
|
||||
|
||||
memPtr->m_numPositions = m_pose.m_pos.size();
|
||||
memPtr->m_positions = memPtr->m_numPositions ? (btVector3FloatData*)serializer->getUniquePointer((void*)&m_pose.m_pos[0]): 0;
|
||||
if (memPtr->m_numPositions)
|
||||
{
|
||||
int numElem = memPtr->m_numPositions;
|
||||
int sz = sizeof(btVector3Data);
|
||||
btChunk* chunk = serializer->allocate(sz,numElem);
|
||||
btVector3FloatData* memPtr = (btVector3FloatData*)chunk->m_oldPtr;
|
||||
for (int i=0;i<numElem;i++,memPtr++)
|
||||
{
|
||||
m_pose.m_pos[i].serializeFloat(*memPtr);
|
||||
}
|
||||
serializer->finalizeChunk(chunk,"btVector3FloatData",BT_ARRAY_CODE,(void*)&m_pose.m_pos[0]);
|
||||
}
|
||||
memPtr->m_restVolume = m_pose.m_volume;
|
||||
m_pose.m_rot.serializeFloat(memPtr->m_rot);
|
||||
m_pose.m_scl.serializeFloat(memPtr->m_scale);
|
||||
|
||||
memPtr->m_numWeigts = m_pose.m_wgh.size();
|
||||
memPtr->m_weights = memPtr->m_numWeigts? (float*) serializer->getUniquePointer((void*) &m_pose.m_wgh[0]) : 0;
|
||||
if (memPtr->m_numWeigts)
|
||||
{
|
||||
|
||||
int numElem = memPtr->m_numWeigts;
|
||||
int sz = sizeof(float);
|
||||
btChunk* chunk = serializer->allocate(sz,numElem);
|
||||
float* memPtr = (float*) chunk->m_oldPtr;
|
||||
for (int i=0;i<numElem;i++,memPtr++)
|
||||
{
|
||||
*memPtr = m_pose.m_wgh[i];
|
||||
}
|
||||
serializer->finalizeChunk(chunk,"float",BT_ARRAY_CODE,(void*)&m_pose.m_wgh[0]);
|
||||
}
|
||||
|
||||
serializer->finalizeChunk(chunk,"SoftBodyPoseData",BT_ARRAY_CODE,(void*)&m_pose);
|
||||
}
|
||||
|
||||
//clusters for convex-cluster collision detection
|
||||
|
||||
sbd->m_numClusters = m_clusters.size();
|
||||
sbd->m_clusters = sbd->m_numClusters? (SoftBodyClusterData*) serializer->getUniquePointer((void*)&m_clusters[0]) : 0;
|
||||
if (sbd->m_numClusters)
|
||||
{
|
||||
int numElem = sbd->m_numClusters;
|
||||
int sz = sizeof(SoftBodyClusterData);
|
||||
btChunk* chunk = serializer->allocate(sz,numElem);
|
||||
SoftBodyClusterData* memPtr = (SoftBodyClusterData*) chunk->m_oldPtr;
|
||||
for (int i=0;i<numElem;i++,memPtr++)
|
||||
{
|
||||
memPtr->m_adamping= m_clusters[i]->m_adamping;
|
||||
m_clusters[i]->m_av.serializeFloat(memPtr->m_av);
|
||||
memPtr->m_clusterIndex = m_clusters[i]->m_clusterIndex;
|
||||
memPtr->m_collide = m_clusters[i]->m_collide;
|
||||
m_clusters[i]->m_com.serializeFloat(memPtr->m_com);
|
||||
memPtr->m_containsAnchor = m_clusters[i]->m_containsAnchor;
|
||||
m_clusters[i]->m_dimpulses[0].serializeFloat(memPtr->m_dimpulses[0]);
|
||||
m_clusters[i]->m_dimpulses[1].serializeFloat(memPtr->m_dimpulses[1]);
|
||||
m_clusters[i]->m_framexform.serializeFloat(memPtr->m_framexform);
|
||||
memPtr->m_idmass = m_clusters[i]->m_idmass;
|
||||
memPtr->m_imass = m_clusters[i]->m_imass;
|
||||
m_clusters[i]->m_invwi.serializeFloat(memPtr->m_invwi);
|
||||
memPtr->m_ldamping = m_clusters[i]->m_ldamping;
|
||||
m_clusters[i]->m_locii.serializeFloat(memPtr->m_locii);
|
||||
m_clusters[i]->m_lv.serializeFloat(memPtr->m_lv);
|
||||
memPtr->m_matching = m_clusters[i]->m_matching;
|
||||
memPtr->m_maxSelfCollisionImpulse = m_clusters[i]->m_maxSelfCollisionImpulse;
|
||||
memPtr->m_ndamping = m_clusters[i]->m_ndamping;
|
||||
memPtr->m_ldamping = m_clusters[i]->m_ldamping;
|
||||
memPtr->m_adamping = m_clusters[i]->m_adamping;
|
||||
memPtr->m_selfCollisionImpulseFactor = m_clusters[i]->m_selfCollisionImpulseFactor;
|
||||
|
||||
memPtr->m_numFrameRefs = m_clusters[i]->m_framerefs.size();
|
||||
memPtr->m_numMasses = m_clusters[i]->m_masses.size();
|
||||
memPtr->m_numNodes = m_clusters[i]->m_nodes.size();
|
||||
|
||||
memPtr->m_nvimpulses = m_clusters[i]->m_nvimpulses;
|
||||
m_clusters[i]->m_vimpulses[0].serializeFloat(memPtr->m_vimpulses[0]);
|
||||
m_clusters[i]->m_vimpulses[1].serializeFloat(memPtr->m_vimpulses[1]);
|
||||
memPtr->m_ndimpulses = m_clusters[i]->m_ndimpulses;
|
||||
|
||||
|
||||
|
||||
memPtr->m_framerefs = memPtr->m_numFrameRefs? (btVector3FloatData*)serializer->getUniquePointer((void*)&m_clusters[i]->m_framerefs[0]) : 0;
|
||||
if (memPtr->m_framerefs)
|
||||
{
|
||||
int numElem = memPtr->m_numFrameRefs;
|
||||
int sz = sizeof(btVector3FloatData);
|
||||
btChunk* chunk = serializer->allocate(sz,numElem);
|
||||
btVector3FloatData* memPtr = (btVector3FloatData*) chunk->m_oldPtr;
|
||||
for (int j=0;j<numElem;j++,memPtr++)
|
||||
{
|
||||
m_clusters[i]->m_framerefs[j].serializeFloat(*memPtr);
|
||||
}
|
||||
serializer->finalizeChunk(chunk,"btVector3FloatData",BT_ARRAY_CODE,(void*)&m_clusters[i]->m_framerefs[0]);
|
||||
}
|
||||
|
||||
memPtr->m_masses = memPtr->m_numMasses ? (float*) serializer->getUniquePointer((void*)&m_clusters[i]->m_masses[0]): 0;
|
||||
if (memPtr->m_masses)
|
||||
{
|
||||
int numElem = memPtr->m_numMasses;
|
||||
int sz = sizeof(float);
|
||||
btChunk* chunk = serializer->allocate(sz,numElem);
|
||||
float* memPtr = (float*) chunk->m_oldPtr;
|
||||
for (int j=0;j<numElem;j++,memPtr++)
|
||||
{
|
||||
*memPtr = m_clusters[i]->m_masses[j];
|
||||
}
|
||||
serializer->finalizeChunk(chunk,"float",BT_ARRAY_CODE,(void*)&m_clusters[i]->m_masses[0]);
|
||||
}
|
||||
|
||||
memPtr->m_nodeIndices = memPtr->m_numNodes ? (int*) serializer->getUniquePointer((void*) &m_clusters[i]->m_nodes) : 0;
|
||||
if (memPtr->m_nodeIndices )
|
||||
{
|
||||
int numElem = memPtr->m_numMasses;
|
||||
int sz = sizeof(int);
|
||||
btChunk* chunk = serializer->allocate(sz,numElem);
|
||||
int* memPtr = (int*) chunk->m_oldPtr;
|
||||
for (int j=0;j<numElem;j++,memPtr++)
|
||||
{
|
||||
int* indexPtr = m_nodeIndexMap.find(m_clusters[i]->m_nodes[j]);
|
||||
btAssert(indexPtr);
|
||||
*memPtr = *indexPtr;
|
||||
}
|
||||
serializer->finalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*)&m_clusters[i]->m_nodes);
|
||||
}
|
||||
}
|
||||
serializer->finalizeChunk(chunk,"SoftBodyClusterData",BT_ARRAY_CODE,(void*)&m_clusters[0]);
|
||||
|
||||
}
|
||||
|
||||
return btSoftBodyDataName;
|
||||
}
|
||||
|
@ -396,7 +396,7 @@ public:
|
||||
const btTransform& xform() const
|
||||
{
|
||||
static const btTransform identity=btTransform::getIdentity();
|
||||
if(m_collisionObject) return(m_collisionObject->getInterpolationWorldTransform());
|
||||
if(m_collisionObject) return(m_collisionObject->getWorldTransform());
|
||||
if(m_soft) return(m_soft->m_framexform);
|
||||
return(identity);
|
||||
}
|
||||
@ -665,9 +665,13 @@ public:
|
||||
//
|
||||
|
||||
/* ctor */
|
||||
btSoftBody( btSoftBodyWorldInfo* worldInfo,int node_count,
|
||||
const btVector3* x,
|
||||
const btScalar* m);
|
||||
btSoftBody( btSoftBodyWorldInfo* worldInfo,int node_count, const btVector3* x, const btScalar* m);
|
||||
|
||||
/* ctor */
|
||||
btSoftBody( btSoftBodyWorldInfo* worldInfo);
|
||||
|
||||
void initDefaults();
|
||||
|
||||
/* dtor */
|
||||
virtual ~btSoftBody();
|
||||
/* Check for existing link */
|
||||
|
@ -121,18 +121,52 @@ struct SoftBodyPoseData
|
||||
btMatrix3x3FloatData m_rot; // Rotation
|
||||
btMatrix3x3FloatData m_scale; // Scale
|
||||
btMatrix3x3FloatData m_aqq; // Base scaling
|
||||
btVector3FloatData m_positions; // Reference positions
|
||||
btVector3FloatData m_com; // COM
|
||||
|
||||
btVector3FloatData *m_positions; // Reference positions
|
||||
float *m_weights; // Weights
|
||||
int m_numPositions;
|
||||
int m_numWeigts;
|
||||
|
||||
int m_bvolume; // Is valid
|
||||
int m_bframe; // Is frame
|
||||
float m_restVolume; // Rest volume
|
||||
int m_numPositions;
|
||||
float *m_weights; // Weights
|
||||
int m_numWeigts;
|
||||
int m_pad;
|
||||
};
|
||||
|
||||
struct SoftBodyClusterData
|
||||
{
|
||||
btTransformFloatData m_framexform;
|
||||
btMatrix3x3FloatData m_locii;
|
||||
btMatrix3x3FloatData m_invwi;
|
||||
btVector3FloatData m_com;
|
||||
btVector3FloatData m_vimpulses[2];
|
||||
btVector3FloatData m_dimpulses[2];
|
||||
btVector3FloatData m_lv;
|
||||
btVector3FloatData m_av;
|
||||
|
||||
btVector3FloatData *m_framerefs;
|
||||
int *m_nodeIndices;
|
||||
float *m_masses;
|
||||
|
||||
int m_numFrameRefs;
|
||||
int m_numNodes;
|
||||
int m_numMasses;
|
||||
|
||||
float m_idmass;
|
||||
float m_imass;
|
||||
int m_nvimpulses;
|
||||
int m_ndimpulses;
|
||||
float m_ndamping;
|
||||
float m_ldamping;
|
||||
float m_adamping;
|
||||
float m_matching;
|
||||
float m_maxSelfCollisionImpulse;
|
||||
float m_selfCollisionImpulseFactor;
|
||||
int m_containsAnchor;
|
||||
int m_collide;
|
||||
int m_clusterIndex;
|
||||
};
|
||||
|
||||
///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
|
||||
struct btSoftBodyFloatData
|
||||
@ -146,6 +180,7 @@ struct btSoftBodyFloatData
|
||||
SoftBodyFaceData *m_faces;
|
||||
SoftBodyTetraData *m_tetrahedra;
|
||||
SoftRigidAnchorData *m_anchors;
|
||||
SoftBodyClusterData *m_clusters;
|
||||
|
||||
int m_numMaterials;
|
||||
int m_numNodes;
|
||||
@ -153,6 +188,8 @@ struct btSoftBodyFloatData
|
||||
int m_numFaces;
|
||||
int m_numTetrahedra;
|
||||
int m_numAnchors;
|
||||
int m_numClusters;
|
||||
int m_pad;
|
||||
|
||||
SoftBodyConfigData m_config;
|
||||
};
|
||||
|
@ -733,7 +733,7 @@ struct btSoftColliders
|
||||
|
||||
btGjkEpaSolver2::sResults res;
|
||||
if(btGjkEpaSolver2::SignedDistance( &cshape,btTransform::getIdentity(),
|
||||
rshape,m_colObj->getInterpolationWorldTransform(),
|
||||
rshape,m_colObj->getWorldTransform(),
|
||||
btVector3(1,0,0),res))
|
||||
{
|
||||
btSoftBody::CJoint joint;
|
||||
@ -766,7 +766,7 @@ struct btSoftColliders
|
||||
btVector3 maxs;
|
||||
|
||||
ATTRIBUTE_ALIGNED16(btDbvtVolume) volume;
|
||||
colOb->getCollisionShape()->getAabb(colOb->getInterpolationWorldTransform(),mins,maxs);
|
||||
colOb->getCollisionShape()->getAabb(colOb->getWorldTransform(),mins,maxs);
|
||||
volume=btDbvtVolume::FromMM(mins,maxs);
|
||||
volume.Expand(btVector3(1,1,1)*m_margin);
|
||||
ps->m_cdbvt.collideTV(ps->m_cdbvt.m_root,volume,*this);
|
||||
@ -849,7 +849,7 @@ struct btSoftColliders
|
||||
const btScalar ms=ima+imb;
|
||||
if(ms>0)
|
||||
{
|
||||
const btTransform& wtr=m_rigidBody?m_rigidBody->getInterpolationWorldTransform() : m_colObj1->getWorldTransform();
|
||||
const btTransform& wtr=m_rigidBody?m_rigidBody->getWorldTransform() : m_colObj1->getWorldTransform();
|
||||
static const btMatrix3x3 iwiStatic(0,0,0,0,0,0,0,0,0);
|
||||
const btMatrix3x3& iwi=m_rigidBody?m_rigidBody->getInvInertiaTensorWorld() : iwiStatic;
|
||||
const btVector3 ra=n.m_x-wtr.getOrigin();
|
||||
|
@ -1,5 +1,5 @@
|
||||
unsigned char sBulletDNAstr[]= {
|
||||
83,68,78,65,78,65,77,69,-4,0,0,0,109,95,115,105,122,101,0,109,
|
||||
83,68,78,65,78,65,77,69,23,1,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,
|
||||
@ -189,186 +189,211 @@ unsigned char sBulletDNAstr[]= {
|
||||
105,116,105,111,110,73,116,101,114,97,116,105,111,110,115,0,109,95,100,114,
|
||||
105,102,116,73,116,101,114,97,116,105,111,110,115,0,109,95,99,108,117,115,
|
||||
116,101,114,73,116,101,114,97,116,105,111,110,115,0,109,95,114,111,116,0,
|
||||
109,95,115,99,97,108,101,0,109,95,97,113,113,0,109,95,112,111,115,105,
|
||||
116,105,111,110,115,0,109,95,99,111,109,0,109,95,98,118,111,108,117,109,
|
||||
101,0,109,95,98,102,114,97,109,101,0,109,95,110,117,109,80,111,115,105,
|
||||
116,105,111,110,115,0,42,109,95,119,101,105,103,104,116,115,0,109,95,110,
|
||||
117,109,87,101,105,103,116,115,0,42,109,95,112,111,115,101,0,42,42,109,
|
||||
95,109,97,116,101,114,105,97,108,115,0,42,109,95,110,111,100,101,115,0,
|
||||
42,109,95,108,105,110,107,115,0,42,109,95,102,97,99,101,115,0,42,109,
|
||||
95,116,101,116,114,97,104,101,100,114,97,0,42,109,95,97,110,99,104,111,
|
||||
114,115,0,109,95,110,117,109,77,97,116,101,114,105,97,108,115,0,109,95,
|
||||
110,117,109,78,111,100,101,115,0,109,95,110,117,109,76,105,110,107,115,0,
|
||||
109,95,110,117,109,70,97,99,101,115,0,109,95,110,117,109,84,101,116,114,
|
||||
97,104,101,100,114,97,0,109,95,110,117,109,65,110,99,104,111,114,115,0,
|
||||
109,95,99,111,110,102,105,103,0,0,0,0,84,89,80,69,67,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,66,118,104,83,117,98,116,114,101,101,73,110,102,111,68,97,116,97,
|
||||
0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,111,100,101,70,
|
||||
108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,
|
||||
66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116,97,0,98,116,
|
||||
81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97,
|
||||
0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,108,111,97,116,
|
||||
68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,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,83,116,97,116,105,99,80,
|
||||
108,97,110,101,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,
|
||||
83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,112,108,101,116,
|
||||
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,84,114,105,97,110,103,
|
||||
108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116,67,111,109,112,
|
||||
111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98,
|
||||
116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98,
|
||||
116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98,
|
||||
116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116,
|
||||
84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97,0,98,116,71,
|
||||
73,109,112,97,99,116,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,
|
||||
98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111,49,0,98,116,
|
||||
84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,
|
||||
98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0,98,116,80,111,
|
||||
105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70,
|
||||
108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116,50,80,111,105,
|
||||
110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98,108,101,68,97,
|
||||
116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,
|
||||
68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,
|
||||
110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,
|
||||
67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68,
|
||||
97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,
|
||||
115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114,
|
||||
67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,83,111,102,116,66,
|
||||
111,100,121,77,97,116,101,114,105,97,108,68,97,116,97,0,83,111,102,116,
|
||||
66,111,100,121,78,111,100,101,68,97,116,97,0,83,111,102,116,66,111,100,
|
||||
121,76,105,110,107,68,97,116,97,0,83,111,102,116,66,111,100,121,70,97,
|
||||
99,101,68,97,116,97,0,83,111,102,116,66,111,100,121,84,101,116,114,97,
|
||||
68,97,116,97,0,83,111,102,116,82,105,103,105,100,65,110,99,104,111,114,
|
||||
68,97,116,97,0,83,111,102,116,66,111,100,121,67,111,110,102,105,103,68,
|
||||
97,116,97,0,83,111,102,116,66,111,100,121,80,111,115,101,68,97,116,97,
|
||||
0,98,116,83,111,102,116,66,111,100,121,70,108,111,97,116,68,97,116,97,
|
||||
0,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,12,0,36,0,8,0,16,0,32,0,48,0,
|
||||
96,0,64,0,-128,0,20,0,48,0,80,0,16,0,84,0,-124,0,12,0,
|
||||
52,0,52,0,20,0,64,0,4,0,4,0,8,0,28,0,28,0,60,0,
|
||||
56,0,76,0,24,0,60,0,60,0,16,0,64,0,68,0,-56,1,-8,0,
|
||||
-32,1,-104,3,8,0,44,0,0,0,76,0,108,0,84,1,-44,0,-52,0,
|
||||
-12,0,-60,0,16,0,100,0,52,0,36,0,100,0,92,0,104,0,-52,0,
|
||||
-108,1,0,0,83,84,82,67,56,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,4,0,4,0,12,0,
|
||||
4,0,13,0,2,0,14,0,2,0,15,0,20,0,6,0,13,0,16,0,
|
||||
13,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0,0,0,21,0,
|
||||
21,0,6,0,14,0,16,0,14,0,17,0,4,0,18,0,4,0,19,0,
|
||||
4,0,20,0,0,0,21,0,22,0,3,0,2,0,14,0,2,0,15,0,
|
||||
4,0,22,0,23,0,12,0,13,0,23,0,13,0,24,0,13,0,25,0,
|
||||
4,0,26,0,4,0,27,0,4,0,28,0,4,0,29,0,20,0,30,0,
|
||||
22,0,31,0,19,0,32,0,4,0,33,0,4,0,34,0,24,0,12,0,
|
||||
14,0,23,0,14,0,24,0,14,0,25,0,4,0,26,0,4,0,27,0,
|
||||
4,0,28,0,4,0,29,0,21,0,30,0,22,0,31,0,4,0,33,0,
|
||||
4,0,34,0,19,0,32,0,25,0,3,0,0,0,35,0,4,0,36,0,
|
||||
0,0,37,0,26,0,5,0,25,0,38,0,13,0,39,0,13,0,40,0,
|
||||
7,0,41,0,0,0,21,0,27,0,5,0,25,0,38,0,13,0,39,0,
|
||||
13,0,42,0,7,0,43,0,4,0,44,0,28,0,2,0,13,0,45,0,
|
||||
7,0,46,0,29,0,4,0,27,0,47,0,28,0,48,0,4,0,49,0,
|
||||
0,0,37,0,30,0,1,0,4,0,50,0,31,0,2,0,2,0,50,0,
|
||||
0,0,51,0,32,0,2,0,2,0,52,0,0,0,51,0,33,0,7,0,
|
||||
13,0,53,0,14,0,54,0,30,0,55,0,32,0,56,0,31,0,57,0,
|
||||
4,0,58,0,4,0,59,0,34,0,4,0,33,0,60,0,13,0,61,0,
|
||||
4,0,62,0,0,0,37,0,35,0,7,0,25,0,38,0,34,0,63,0,
|
||||
23,0,64,0,24,0,65,0,36,0,66,0,7,0,43,0,0,0,67,0,
|
||||
37,0,4,0,17,0,68,0,25,0,69,0,4,0,70,0,7,0,71,0,
|
||||
38,0,4,0,25,0,38,0,37,0,72,0,4,0,73,0,7,0,43,0,
|
||||
39,0,3,0,27,0,47,0,4,0,74,0,0,0,37,0,40,0,3,0,
|
||||
27,0,47,0,4,0,74,0,0,0,37,0,41,0,4,0,4,0,75,0,
|
||||
7,0,76,0,7,0,77,0,7,0,78,0,36,0,14,0,4,0,79,0,
|
||||
4,0,80,0,41,0,81,0,4,0,82,0,7,0,83,0,7,0,84,0,
|
||||
7,0,85,0,7,0,86,0,7,0,87,0,4,0,88,0,4,0,89,0,
|
||||
4,0,90,0,4,0,91,0,0,0,37,0,42,0,5,0,25,0,38,0,
|
||||
34,0,63,0,13,0,39,0,7,0,43,0,4,0,92,0,43,0,5,0,
|
||||
27,0,47,0,13,0,93,0,14,0,94,0,4,0,95,0,0,0,96,0,
|
||||
44,0,24,0,9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,
|
||||
18,0,100,0,18,0,101,0,14,0,102,0,14,0,103,0,14,0,104,0,
|
||||
8,0,105,0,8,0,106,0,8,0,107,0,8,0,108,0,8,0,109,0,
|
||||
8,0,110,0,8,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,
|
||||
4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,0,0,37,0,
|
||||
45,0,23,0,9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,
|
||||
17,0,100,0,17,0,101,0,13,0,102,0,13,0,103,0,13,0,104,0,
|
||||
7,0,105,0,7,0,106,0,7,0,107,0,7,0,108,0,7,0,109,0,
|
||||
7,0,110,0,7,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,
|
||||
4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,46,0,21,0,
|
||||
45,0,119,0,15,0,120,0,13,0,121,0,13,0,122,0,13,0,123,0,
|
||||
13,0,124,0,13,0,125,0,13,0,126,0,13,0,127,0,13,0,-128,0,
|
||||
13,0,-127,0,7,0,-126,0,7,0,-125,0,7,0,-124,0,7,0,-123,0,
|
||||
7,0,-122,0,7,0,-121,0,7,0,-120,0,7,0,-119,0,7,0,-118,0,
|
||||
4,0,-117,0,47,0,22,0,44,0,119,0,16,0,120,0,14,0,121,0,
|
||||
14,0,122,0,14,0,123,0,14,0,124,0,14,0,125,0,14,0,126,0,
|
||||
14,0,127,0,14,0,-128,0,14,0,-127,0,8,0,-126,0,8,0,-125,0,
|
||||
8,0,-124,0,8,0,-123,0,8,0,-122,0,8,0,-121,0,8,0,-120,0,
|
||||
8,0,-119,0,8,0,-118,0,4,0,-117,0,0,0,37,0,48,0,2,0,
|
||||
4,0,-116,0,4,0,-115,0,49,0,11,0,50,0,-114,0,50,0,-113,0,
|
||||
0,0,35,0,4,0,-112,0,4,0,-111,0,4,0,-110,0,4,0,-109,0,
|
||||
7,0,-108,0,7,0,-107,0,4,0,-106,0,0,0,-105,0,51,0,3,0,
|
||||
49,0,-104,0,13,0,-103,0,13,0,-102,0,52,0,3,0,49,0,-104,0,
|
||||
14,0,-103,0,14,0,-102,0,53,0,13,0,49,0,-104,0,18,0,-101,0,
|
||||
18,0,-100,0,4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,
|
||||
109,95,115,99,97,108,101,0,109,95,97,113,113,0,109,95,99,111,109,0,
|
||||
42,109,95,112,111,115,105,116,105,111,110,115,0,42,109,95,119,101,105,103,
|
||||
104,116,115,0,109,95,110,117,109,80,111,115,105,116,105,111,110,115,0,109,
|
||||
95,110,117,109,87,101,105,103,116,115,0,109,95,98,118,111,108,117,109,101,
|
||||
0,109,95,98,102,114,97,109,101,0,109,95,102,114,97,109,101,120,102,111,
|
||||
114,109,0,109,95,108,111,99,105,105,0,109,95,105,110,118,119,105,0,109,
|
||||
95,118,105,109,112,117,108,115,101,115,91,50,93,0,109,95,100,105,109,112,
|
||||
117,108,115,101,115,91,50,93,0,109,95,108,118,0,109,95,97,118,0,42,
|
||||
109,95,102,114,97,109,101,114,101,102,115,0,42,109,95,110,111,100,101,73,
|
||||
110,100,105,99,101,115,0,42,109,95,109,97,115,115,101,115,0,109,95,110,
|
||||
117,109,70,114,97,109,101,82,101,102,115,0,109,95,110,117,109,78,111,100,
|
||||
101,115,0,109,95,110,117,109,77,97,115,115,101,115,0,109,95,105,100,109,
|
||||
97,115,115,0,109,95,105,109,97,115,115,0,109,95,110,118,105,109,112,117,
|
||||
108,115,101,115,0,109,95,110,100,105,109,112,117,108,115,101,115,0,109,95,
|
||||
110,100,97,109,112,105,110,103,0,109,95,108,100,97,109,112,105,110,103,0,
|
||||
109,95,97,100,97,109,112,105,110,103,0,109,95,109,97,116,99,104,105,110,
|
||||
103,0,109,95,109,97,120,83,101,108,102,67,111,108,108,105,115,105,111,110,
|
||||
73,109,112,117,108,115,101,0,109,95,115,101,108,102,67,111,108,108,105,115,
|
||||
105,111,110,73,109,112,117,108,115,101,70,97,99,116,111,114,0,109,95,99,
|
||||
111,110,116,97,105,110,115,65,110,99,104,111,114,0,109,95,99,111,108,108,
|
||||
105,100,101,0,109,95,99,108,117,115,116,101,114,73,110,100,101,120,0,42,
|
||||
109,95,112,111,115,101,0,42,42,109,95,109,97,116,101,114,105,97,108,115,
|
||||
0,42,109,95,110,111,100,101,115,0,42,109,95,108,105,110,107,115,0,42,
|
||||
109,95,102,97,99,101,115,0,42,109,95,116,101,116,114,97,104,101,100,114,
|
||||
97,0,42,109,95,97,110,99,104,111,114,115,0,42,109,95,99,108,117,115,
|
||||
116,101,114,115,0,109,95,110,117,109,77,97,116,101,114,105,97,108,115,0,
|
||||
109,95,110,117,109,76,105,110,107,115,0,109,95,110,117,109,70,97,99,101,
|
||||
115,0,109,95,110,117,109,84,101,116,114,97,104,101,100,114,97,0,109,95,
|
||||
110,117,109,65,110,99,104,111,114,115,0,109,95,110,117,109,67,108,117,115,
|
||||
116,101,114,115,0,109,95,99,111,110,102,105,103,0,0,0,84,89,80,69,
|
||||
68,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,66,118,104,83,117,98,116,114,101,101,73,110,102,111,
|
||||
68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,
|
||||
111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109,
|
||||
105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116,
|
||||
97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,
|
||||
68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,
|
||||
108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,
|
||||
66,118,104,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,83,116,97,
|
||||
116,105,99,80,108,97,110,101,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,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,
|
||||
112,108,101,116,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,84,114,
|
||||
105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116,
|
||||
67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,
|
||||
116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,
|
||||
116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,
|
||||
116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,
|
||||
97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97,
|
||||
0,98,116,71,73,109,112,97,99,116,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,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111,
|
||||
49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,
|
||||
97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0,
|
||||
98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,
|
||||
105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116,
|
||||
50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98,
|
||||
108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114,
|
||||
97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110,
|
||||
103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,
|
||||
97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,
|
||||
105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111,
|
||||
102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108,
|
||||
105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,83,
|
||||
111,102,116,66,111,100,121,77,97,116,101,114,105,97,108,68,97,116,97,0,
|
||||
83,111,102,116,66,111,100,121,78,111,100,101,68,97,116,97,0,83,111,102,
|
||||
116,66,111,100,121,76,105,110,107,68,97,116,97,0,83,111,102,116,66,111,
|
||||
100,121,70,97,99,101,68,97,116,97,0,83,111,102,116,66,111,100,121,84,
|
||||
101,116,114,97,68,97,116,97,0,83,111,102,116,82,105,103,105,100,65,110,
|
||||
99,104,111,114,68,97,116,97,0,83,111,102,116,66,111,100,121,67,111,110,
|
||||
102,105,103,68,97,116,97,0,83,111,102,116,66,111,100,121,80,111,115,101,
|
||||
68,97,116,97,0,83,111,102,116,66,111,100,121,67,108,117,115,116,101,114,
|
||||
68,97,116,97,0,98,116,83,111,102,116,66,111,100,121,70,108,111,97,116,
|
||||
68,97,116,97,0,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,12,0,36,0,8,0,16,0,
|
||||
32,0,48,0,96,0,64,0,-128,0,20,0,48,0,80,0,16,0,84,0,
|
||||
-124,0,12,0,52,0,52,0,20,0,64,0,4,0,4,0,8,0,28,0,
|
||||
28,0,60,0,56,0,76,0,24,0,60,0,60,0,16,0,64,0,68,0,
|
||||
-56,1,-8,0,-32,1,-104,3,8,0,44,0,0,0,76,0,108,0,84,1,
|
||||
-44,0,-52,0,-12,0,-60,0,16,0,100,0,52,0,36,0,100,0,92,0,
|
||||
104,0,-64,0,92,1,-96,1,83,84,82,67,57,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,4,0,
|
||||
4,0,12,0,4,0,13,0,2,0,14,0,2,0,15,0,20,0,6,0,
|
||||
13,0,16,0,13,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0,
|
||||
0,0,21,0,21,0,6,0,14,0,16,0,14,0,17,0,4,0,18,0,
|
||||
4,0,19,0,4,0,20,0,0,0,21,0,22,0,3,0,2,0,14,0,
|
||||
2,0,15,0,4,0,22,0,23,0,12,0,13,0,23,0,13,0,24,0,
|
||||
13,0,25,0,4,0,26,0,4,0,27,0,4,0,28,0,4,0,29,0,
|
||||
20,0,30,0,22,0,31,0,19,0,32,0,4,0,33,0,4,0,34,0,
|
||||
24,0,12,0,14,0,23,0,14,0,24,0,14,0,25,0,4,0,26,0,
|
||||
4,0,27,0,4,0,28,0,4,0,29,0,21,0,30,0,22,0,31,0,
|
||||
4,0,33,0,4,0,34,0,19,0,32,0,25,0,3,0,0,0,35,0,
|
||||
4,0,36,0,0,0,37,0,26,0,5,0,25,0,38,0,13,0,39,0,
|
||||
13,0,40,0,7,0,41,0,0,0,21,0,27,0,5,0,25,0,38,0,
|
||||
13,0,39,0,13,0,42,0,7,0,43,0,4,0,44,0,28,0,2,0,
|
||||
13,0,45,0,7,0,46,0,29,0,4,0,27,0,47,0,28,0,48,0,
|
||||
4,0,49,0,0,0,37,0,30,0,1,0,4,0,50,0,31,0,2,0,
|
||||
2,0,50,0,0,0,51,0,32,0,2,0,2,0,52,0,0,0,51,0,
|
||||
33,0,7,0,13,0,53,0,14,0,54,0,30,0,55,0,32,0,56,0,
|
||||
31,0,57,0,4,0,58,0,4,0,59,0,34,0,4,0,33,0,60,0,
|
||||
13,0,61,0,4,0,62,0,0,0,37,0,35,0,7,0,25,0,38,0,
|
||||
34,0,63,0,23,0,64,0,24,0,65,0,36,0,66,0,7,0,43,0,
|
||||
0,0,67,0,37,0,4,0,17,0,68,0,25,0,69,0,4,0,70,0,
|
||||
7,0,71,0,38,0,4,0,25,0,38,0,37,0,72,0,4,0,73,0,
|
||||
7,0,43,0,39,0,3,0,27,0,47,0,4,0,74,0,0,0,37,0,
|
||||
40,0,3,0,27,0,47,0,4,0,74,0,0,0,37,0,41,0,4,0,
|
||||
4,0,75,0,7,0,76,0,7,0,77,0,7,0,78,0,36,0,14,0,
|
||||
4,0,79,0,4,0,80,0,41,0,81,0,4,0,82,0,7,0,83,0,
|
||||
7,0,84,0,7,0,85,0,7,0,86,0,7,0,87,0,4,0,88,0,
|
||||
4,0,89,0,4,0,90,0,4,0,91,0,0,0,37,0,42,0,5,0,
|
||||
25,0,38,0,34,0,63,0,13,0,39,0,7,0,43,0,4,0,92,0,
|
||||
43,0,5,0,27,0,47,0,13,0,93,0,14,0,94,0,4,0,95,0,
|
||||
0,0,96,0,44,0,24,0,9,0,97,0,9,0,98,0,25,0,99,0,
|
||||
0,0,35,0,18,0,100,0,18,0,101,0,14,0,102,0,14,0,103,0,
|
||||
14,0,104,0,8,0,105,0,8,0,106,0,8,0,107,0,8,0,108,0,
|
||||
8,0,109,0,8,0,110,0,8,0,111,0,4,0,112,0,4,0,113,0,
|
||||
4,0,114,0,4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,
|
||||
0,0,37,0,45,0,23,0,9,0,97,0,9,0,98,0,25,0,99,0,
|
||||
0,0,35,0,17,0,100,0,17,0,101,0,13,0,102,0,13,0,103,0,
|
||||
13,0,104,0,7,0,105,0,7,0,106,0,7,0,107,0,7,0,108,0,
|
||||
7,0,109,0,7,0,110,0,7,0,111,0,4,0,112,0,4,0,113,0,
|
||||
4,0,114,0,4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,
|
||||
46,0,21,0,45,0,119,0,15,0,120,0,13,0,121,0,13,0,122,0,
|
||||
13,0,123,0,13,0,124,0,13,0,125,0,13,0,126,0,13,0,127,0,
|
||||
13,0,-128,0,13,0,-127,0,7,0,-126,0,7,0,-125,0,7,0,-124,0,
|
||||
7,0,-123,0,7,0,-122,0,7,0,-121,0,7,0,-120,0,7,0,-119,0,
|
||||
7,0,-118,0,4,0,-117,0,47,0,22,0,44,0,119,0,16,0,120,0,
|
||||
14,0,121,0,14,0,122,0,14,0,123,0,14,0,124,0,14,0,125,0,
|
||||
14,0,126,0,14,0,127,0,14,0,-128,0,14,0,-127,0,8,0,-126,0,
|
||||
8,0,-125,0,8,0,-124,0,8,0,-123,0,8,0,-122,0,8,0,-121,0,
|
||||
8,0,-120,0,8,0,-119,0,8,0,-118,0,4,0,-117,0,0,0,37,0,
|
||||
48,0,2,0,4,0,-116,0,4,0,-115,0,49,0,11,0,50,0,-114,0,
|
||||
50,0,-113,0,0,0,35,0,4,0,-112,0,4,0,-111,0,4,0,-110,0,
|
||||
4,0,-109,0,7,0,-108,0,7,0,-107,0,4,0,-106,0,0,0,-105,0,
|
||||
51,0,3,0,49,0,-104,0,13,0,-103,0,13,0,-102,0,52,0,3,0,
|
||||
49,0,-104,0,14,0,-103,0,14,0,-102,0,53,0,13,0,49,0,-104,0,
|
||||
18,0,-101,0,18,0,-100,0,4,0,-99,0,4,0,-98,0,4,0,-97,0,
|
||||
7,0,-96,0,7,0,-95,0,7,0,-94,0,7,0,-93,0,7,0,-92,0,
|
||||
7,0,-91,0,7,0,-90,0,54,0,13,0,49,0,-104,0,17,0,-101,0,
|
||||
17,0,-100,0,4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,
|
||||
7,0,-95,0,7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,
|
||||
7,0,-90,0,54,0,13,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,
|
||||
4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0,
|
||||
7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,
|
||||
55,0,11,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,7,0,-89,0,
|
||||
7,0,-88,0,7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,
|
||||
7,0,-86,0,0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0,
|
||||
17,0,-100,0,13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0,
|
||||
4,0,-81,0,4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0,
|
||||
17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0,
|
||||
4,0,-81,0,4,0,-80,0,58,0,4,0,7,0,-79,0,7,0,-78,0,
|
||||
7,0,-77,0,4,0,75,0,59,0,10,0,58,0,-76,0,13,0,-75,0,
|
||||
13,0,-74,0,13,0,-73,0,13,0,-72,0,13,0,-71,0,7,0,-126,0,
|
||||
7,0,-70,0,4,0,-69,0,4,0,-68,0,60,0,9,0,58,0,-76,0,
|
||||
4,0,-67,0,13,0,-66,0,7,0,-65,0,4,0,-64,0,7,0,-63,0,
|
||||
7,0,-62,0,7,0,-61,0,4,0,-68,0,61,0,4,0,13,0,-71,0,
|
||||
58,0,-76,0,4,0,-60,0,7,0,-59,0,62,0,7,0,13,0,-58,0,
|
||||
58,0,-76,0,4,0,-57,0,7,0,-56,0,7,0,-62,0,7,0,-61,0,
|
||||
4,0,-68,0,63,0,6,0,15,0,-63,0,13,0,-62,0,13,0,-55,0,
|
||||
50,0,-54,0,4,0,-53,0,7,0,-61,0,64,0,26,0,4,0,-52,0,
|
||||
7,0,-51,0,7,0,-86,0,7,0,-50,0,7,0,-49,0,7,0,-48,0,
|
||||
7,0,-47,0,7,0,-46,0,7,0,-45,0,7,0,-44,0,7,0,-43,0,
|
||||
7,0,-42,0,7,0,-41,0,7,0,-40,0,7,0,-39,0,7,0,-38,0,
|
||||
7,0,-37,0,7,0,-36,0,7,0,-35,0,7,0,-34,0,7,0,-33,0,
|
||||
4,0,-32,0,4,0,-31,0,4,0,-30,0,4,0,-29,0,4,0,113,0,
|
||||
65,0,12,0,15,0,-28,0,15,0,-27,0,15,0,-26,0,13,0,-25,0,
|
||||
13,0,-24,0,4,0,-23,0,4,0,-22,0,7,0,-56,0,4,0,-21,0,
|
||||
7,0,-20,0,4,0,-19,0,4,0,-68,0,66,0,15,0,45,0,119,0,
|
||||
65,0,-18,0,58,0,-17,0,59,0,-16,0,60,0,-15,0,61,0,-14,0,
|
||||
62,0,-13,0,63,0,-12,0,4,0,-11,0,4,0,-10,0,4,0,-9,0,
|
||||
4,0,-8,0,4,0,-7,0,4,0,-6,0,64,0,-5,0,};
|
||||
7,0,-90,0,55,0,11,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,
|
||||
7,0,-89,0,7,0,-88,0,7,0,-87,0,7,0,-92,0,7,0,-91,0,
|
||||
7,0,-90,0,7,0,-86,0,0,0,21,0,56,0,9,0,49,0,-104,0,
|
||||
17,0,-101,0,17,0,-100,0,13,0,-85,0,13,0,-84,0,13,0,-83,0,
|
||||
13,0,-82,0,4,0,-81,0,4,0,-80,0,57,0,9,0,49,0,-104,0,
|
||||
17,0,-101,0,17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0,
|
||||
7,0,-82,0,4,0,-81,0,4,0,-80,0,58,0,4,0,7,0,-79,0,
|
||||
7,0,-78,0,7,0,-77,0,4,0,75,0,59,0,10,0,58,0,-76,0,
|
||||
13,0,-75,0,13,0,-74,0,13,0,-73,0,13,0,-72,0,13,0,-71,0,
|
||||
7,0,-126,0,7,0,-70,0,4,0,-69,0,4,0,-68,0,60,0,9,0,
|
||||
58,0,-76,0,4,0,-67,0,13,0,-66,0,7,0,-65,0,4,0,-64,0,
|
||||
7,0,-63,0,7,0,-62,0,7,0,-61,0,4,0,-68,0,61,0,4,0,
|
||||
13,0,-71,0,58,0,-76,0,4,0,-60,0,7,0,-59,0,62,0,7,0,
|
||||
13,0,-58,0,58,0,-76,0,4,0,-57,0,7,0,-56,0,7,0,-62,0,
|
||||
7,0,-61,0,4,0,-68,0,63,0,6,0,15,0,-63,0,13,0,-62,0,
|
||||
13,0,-55,0,50,0,-54,0,4,0,-53,0,7,0,-61,0,64,0,26,0,
|
||||
4,0,-52,0,7,0,-51,0,7,0,-86,0,7,0,-50,0,7,0,-49,0,
|
||||
7,0,-48,0,7,0,-47,0,7,0,-46,0,7,0,-45,0,7,0,-44,0,
|
||||
7,0,-43,0,7,0,-42,0,7,0,-41,0,7,0,-40,0,7,0,-39,0,
|
||||
7,0,-38,0,7,0,-37,0,7,0,-36,0,7,0,-35,0,7,0,-34,0,
|
||||
7,0,-33,0,4,0,-32,0,4,0,-31,0,4,0,-30,0,4,0,-29,0,
|
||||
4,0,113,0,65,0,12,0,15,0,-28,0,15,0,-27,0,15,0,-26,0,
|
||||
13,0,-25,0,13,0,-24,0,7,0,-23,0,4,0,-22,0,4,0,-21,0,
|
||||
4,0,-20,0,4,0,-19,0,7,0,-56,0,4,0,-68,0,66,0,27,0,
|
||||
17,0,-18,0,15,0,-17,0,15,0,-16,0,13,0,-25,0,13,0,-15,0,
|
||||
13,0,-14,0,13,0,-13,0,13,0,-12,0,13,0,-11,0,4,0,-10,0,
|
||||
7,0,-9,0,4,0,-8,0,4,0,-7,0,4,0,-6,0,7,0,-5,0,
|
||||
7,0,-4,0,4,0,-3,0,4,0,-2,0,7,0,-1,0,7,0,0,1,
|
||||
7,0,1,1,7,0,2,1,7,0,3,1,7,0,4,1,4,0,5,1,
|
||||
4,0,6,1,4,0,7,1,67,0,18,0,45,0,119,0,65,0,8,1,
|
||||
58,0,9,1,59,0,10,1,60,0,11,1,61,0,12,1,62,0,13,1,
|
||||
63,0,14,1,66,0,15,1,4,0,16,1,4,0,-7,0,4,0,17,1,
|
||||
4,0,18,1,4,0,19,1,4,0,20,1,4,0,21,1,4,0,-68,0,
|
||||
64,0,22,1,};
|
||||
int sBulletDNAlen= sizeof(sBulletDNAstr);
|
||||
unsigned char sBulletDNAstr64[]= {
|
||||
83,68,78,65,78,65,77,69,-4,0,0,0,109,95,115,105,122,101,0,109,
|
||||
83,68,78,65,78,65,77,69,23,1,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,
|
||||
@ -558,181 +583,206 @@ unsigned char sBulletDNAstr64[]= {
|
||||
105,116,105,111,110,73,116,101,114,97,116,105,111,110,115,0,109,95,100,114,
|
||||
105,102,116,73,116,101,114,97,116,105,111,110,115,0,109,95,99,108,117,115,
|
||||
116,101,114,73,116,101,114,97,116,105,111,110,115,0,109,95,114,111,116,0,
|
||||
109,95,115,99,97,108,101,0,109,95,97,113,113,0,109,95,112,111,115,105,
|
||||
116,105,111,110,115,0,109,95,99,111,109,0,109,95,98,118,111,108,117,109,
|
||||
101,0,109,95,98,102,114,97,109,101,0,109,95,110,117,109,80,111,115,105,
|
||||
116,105,111,110,115,0,42,109,95,119,101,105,103,104,116,115,0,109,95,110,
|
||||
117,109,87,101,105,103,116,115,0,42,109,95,112,111,115,101,0,42,42,109,
|
||||
95,109,97,116,101,114,105,97,108,115,0,42,109,95,110,111,100,101,115,0,
|
||||
42,109,95,108,105,110,107,115,0,42,109,95,102,97,99,101,115,0,42,109,
|
||||
95,116,101,116,114,97,104,101,100,114,97,0,42,109,95,97,110,99,104,111,
|
||||
114,115,0,109,95,110,117,109,77,97,116,101,114,105,97,108,115,0,109,95,
|
||||
110,117,109,78,111,100,101,115,0,109,95,110,117,109,76,105,110,107,115,0,
|
||||
109,95,110,117,109,70,97,99,101,115,0,109,95,110,117,109,84,101,116,114,
|
||||
97,104,101,100,114,97,0,109,95,110,117,109,65,110,99,104,111,114,115,0,
|
||||
109,95,99,111,110,102,105,103,0,0,0,0,84,89,80,69,67,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,66,118,104,83,117,98,116,114,101,101,73,110,102,111,68,97,116,97,
|
||||
0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,111,100,101,70,
|
||||
108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,
|
||||
66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116,97,0,98,116,
|
||||
81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97,
|
||||
0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,108,111,97,116,
|
||||
68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,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,83,116,97,116,105,99,80,
|
||||
108,97,110,101,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,
|
||||
83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,112,108,101,116,
|
||||
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,84,114,105,97,110,103,
|
||||
108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116,67,111,109,112,
|
||||
111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98,
|
||||
116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98,
|
||||
116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98,
|
||||
116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116,
|
||||
84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97,0,98,116,71,
|
||||
73,109,112,97,99,116,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,
|
||||
98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111,49,0,98,116,
|
||||
84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,
|
||||
98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0,98,116,80,111,
|
||||
105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70,
|
||||
108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116,50,80,111,105,
|
||||
110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98,108,101,68,97,
|
||||
116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,
|
||||
68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,
|
||||
110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,
|
||||
67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68,
|
||||
97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,
|
||||
115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114,
|
||||
67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,83,111,102,116,66,
|
||||
111,100,121,77,97,116,101,114,105,97,108,68,97,116,97,0,83,111,102,116,
|
||||
66,111,100,121,78,111,100,101,68,97,116,97,0,83,111,102,116,66,111,100,
|
||||
121,76,105,110,107,68,97,116,97,0,83,111,102,116,66,111,100,121,70,97,
|
||||
99,101,68,97,116,97,0,83,111,102,116,66,111,100,121,84,101,116,114,97,
|
||||
68,97,116,97,0,83,111,102,116,82,105,103,105,100,65,110,99,104,111,114,
|
||||
68,97,116,97,0,83,111,102,116,66,111,100,121,67,111,110,102,105,103,68,
|
||||
97,116,97,0,83,111,102,116,66,111,100,121,80,111,115,101,68,97,116,97,
|
||||
0,98,116,83,111,102,116,66,111,100,121,70,108,111,97,116,68,97,116,97,
|
||||
0,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,16,0,48,0,16,0,16,0,32,0,48,0,
|
||||
96,0,64,0,-128,0,20,0,48,0,80,0,16,0,96,0,-112,0,16,0,
|
||||
56,0,56,0,20,0,72,0,4,0,4,0,8,0,48,0,32,0,80,0,
|
||||
72,0,80,0,32,0,64,0,64,0,16,0,72,0,80,0,-40,1,8,1,
|
||||
-16,1,-88,3,8,0,56,0,0,0,88,0,120,0,96,1,-32,0,-40,0,
|
||||
0,1,-48,0,16,0,104,0,56,0,40,0,104,0,96,0,104,0,-48,0,
|
||||
-64,1,0,0,83,84,82,67,56,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,4,0,4,0,12,0,
|
||||
4,0,13,0,2,0,14,0,2,0,15,0,20,0,6,0,13,0,16,0,
|
||||
13,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0,0,0,21,0,
|
||||
21,0,6,0,14,0,16,0,14,0,17,0,4,0,18,0,4,0,19,0,
|
||||
4,0,20,0,0,0,21,0,22,0,3,0,2,0,14,0,2,0,15,0,
|
||||
4,0,22,0,23,0,12,0,13,0,23,0,13,0,24,0,13,0,25,0,
|
||||
4,0,26,0,4,0,27,0,4,0,28,0,4,0,29,0,20,0,30,0,
|
||||
22,0,31,0,19,0,32,0,4,0,33,0,4,0,34,0,24,0,12,0,
|
||||
14,0,23,0,14,0,24,0,14,0,25,0,4,0,26,0,4,0,27,0,
|
||||
4,0,28,0,4,0,29,0,21,0,30,0,22,0,31,0,4,0,33,0,
|
||||
4,0,34,0,19,0,32,0,25,0,3,0,0,0,35,0,4,0,36,0,
|
||||
0,0,37,0,26,0,5,0,25,0,38,0,13,0,39,0,13,0,40,0,
|
||||
7,0,41,0,0,0,21,0,27,0,5,0,25,0,38,0,13,0,39,0,
|
||||
13,0,42,0,7,0,43,0,4,0,44,0,28,0,2,0,13,0,45,0,
|
||||
7,0,46,0,29,0,4,0,27,0,47,0,28,0,48,0,4,0,49,0,
|
||||
0,0,37,0,30,0,1,0,4,0,50,0,31,0,2,0,2,0,50,0,
|
||||
0,0,51,0,32,0,2,0,2,0,52,0,0,0,51,0,33,0,7,0,
|
||||
13,0,53,0,14,0,54,0,30,0,55,0,32,0,56,0,31,0,57,0,
|
||||
4,0,58,0,4,0,59,0,34,0,4,0,33,0,60,0,13,0,61,0,
|
||||
4,0,62,0,0,0,37,0,35,0,7,0,25,0,38,0,34,0,63,0,
|
||||
23,0,64,0,24,0,65,0,36,0,66,0,7,0,43,0,0,0,67,0,
|
||||
37,0,4,0,17,0,68,0,25,0,69,0,4,0,70,0,7,0,71,0,
|
||||
38,0,4,0,25,0,38,0,37,0,72,0,4,0,73,0,7,0,43,0,
|
||||
39,0,3,0,27,0,47,0,4,0,74,0,0,0,37,0,40,0,3,0,
|
||||
27,0,47,0,4,0,74,0,0,0,37,0,41,0,4,0,4,0,75,0,
|
||||
7,0,76,0,7,0,77,0,7,0,78,0,36,0,14,0,4,0,79,0,
|
||||
4,0,80,0,41,0,81,0,4,0,82,0,7,0,83,0,7,0,84,0,
|
||||
7,0,85,0,7,0,86,0,7,0,87,0,4,0,88,0,4,0,89,0,
|
||||
4,0,90,0,4,0,91,0,0,0,37,0,42,0,5,0,25,0,38,0,
|
||||
34,0,63,0,13,0,39,0,7,0,43,0,4,0,92,0,43,0,5,0,
|
||||
27,0,47,0,13,0,93,0,14,0,94,0,4,0,95,0,0,0,96,0,
|
||||
44,0,24,0,9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,
|
||||
18,0,100,0,18,0,101,0,14,0,102,0,14,0,103,0,14,0,104,0,
|
||||
8,0,105,0,8,0,106,0,8,0,107,0,8,0,108,0,8,0,109,0,
|
||||
8,0,110,0,8,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,
|
||||
4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,0,0,37,0,
|
||||
45,0,23,0,9,0,97,0,9,0,98,0,25,0,99,0,0,0,35,0,
|
||||
17,0,100,0,17,0,101,0,13,0,102,0,13,0,103,0,13,0,104,0,
|
||||
7,0,105,0,7,0,106,0,7,0,107,0,7,0,108,0,7,0,109,0,
|
||||
7,0,110,0,7,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,
|
||||
4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,46,0,21,0,
|
||||
45,0,119,0,15,0,120,0,13,0,121,0,13,0,122,0,13,0,123,0,
|
||||
13,0,124,0,13,0,125,0,13,0,126,0,13,0,127,0,13,0,-128,0,
|
||||
13,0,-127,0,7,0,-126,0,7,0,-125,0,7,0,-124,0,7,0,-123,0,
|
||||
7,0,-122,0,7,0,-121,0,7,0,-120,0,7,0,-119,0,7,0,-118,0,
|
||||
4,0,-117,0,47,0,22,0,44,0,119,0,16,0,120,0,14,0,121,0,
|
||||
14,0,122,0,14,0,123,0,14,0,124,0,14,0,125,0,14,0,126,0,
|
||||
14,0,127,0,14,0,-128,0,14,0,-127,0,8,0,-126,0,8,0,-125,0,
|
||||
8,0,-124,0,8,0,-123,0,8,0,-122,0,8,0,-121,0,8,0,-120,0,
|
||||
8,0,-119,0,8,0,-118,0,4,0,-117,0,0,0,37,0,48,0,2,0,
|
||||
4,0,-116,0,4,0,-115,0,49,0,11,0,50,0,-114,0,50,0,-113,0,
|
||||
0,0,35,0,4,0,-112,0,4,0,-111,0,4,0,-110,0,4,0,-109,0,
|
||||
7,0,-108,0,7,0,-107,0,4,0,-106,0,0,0,-105,0,51,0,3,0,
|
||||
49,0,-104,0,13,0,-103,0,13,0,-102,0,52,0,3,0,49,0,-104,0,
|
||||
14,0,-103,0,14,0,-102,0,53,0,13,0,49,0,-104,0,18,0,-101,0,
|
||||
18,0,-100,0,4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,
|
||||
109,95,115,99,97,108,101,0,109,95,97,113,113,0,109,95,99,111,109,0,
|
||||
42,109,95,112,111,115,105,116,105,111,110,115,0,42,109,95,119,101,105,103,
|
||||
104,116,115,0,109,95,110,117,109,80,111,115,105,116,105,111,110,115,0,109,
|
||||
95,110,117,109,87,101,105,103,116,115,0,109,95,98,118,111,108,117,109,101,
|
||||
0,109,95,98,102,114,97,109,101,0,109,95,102,114,97,109,101,120,102,111,
|
||||
114,109,0,109,95,108,111,99,105,105,0,109,95,105,110,118,119,105,0,109,
|
||||
95,118,105,109,112,117,108,115,101,115,91,50,93,0,109,95,100,105,109,112,
|
||||
117,108,115,101,115,91,50,93,0,109,95,108,118,0,109,95,97,118,0,42,
|
||||
109,95,102,114,97,109,101,114,101,102,115,0,42,109,95,110,111,100,101,73,
|
||||
110,100,105,99,101,115,0,42,109,95,109,97,115,115,101,115,0,109,95,110,
|
||||
117,109,70,114,97,109,101,82,101,102,115,0,109,95,110,117,109,78,111,100,
|
||||
101,115,0,109,95,110,117,109,77,97,115,115,101,115,0,109,95,105,100,109,
|
||||
97,115,115,0,109,95,105,109,97,115,115,0,109,95,110,118,105,109,112,117,
|
||||
108,115,101,115,0,109,95,110,100,105,109,112,117,108,115,101,115,0,109,95,
|
||||
110,100,97,109,112,105,110,103,0,109,95,108,100,97,109,112,105,110,103,0,
|
||||
109,95,97,100,97,109,112,105,110,103,0,109,95,109,97,116,99,104,105,110,
|
||||
103,0,109,95,109,97,120,83,101,108,102,67,111,108,108,105,115,105,111,110,
|
||||
73,109,112,117,108,115,101,0,109,95,115,101,108,102,67,111,108,108,105,115,
|
||||
105,111,110,73,109,112,117,108,115,101,70,97,99,116,111,114,0,109,95,99,
|
||||
111,110,116,97,105,110,115,65,110,99,104,111,114,0,109,95,99,111,108,108,
|
||||
105,100,101,0,109,95,99,108,117,115,116,101,114,73,110,100,101,120,0,42,
|
||||
109,95,112,111,115,101,0,42,42,109,95,109,97,116,101,114,105,97,108,115,
|
||||
0,42,109,95,110,111,100,101,115,0,42,109,95,108,105,110,107,115,0,42,
|
||||
109,95,102,97,99,101,115,0,42,109,95,116,101,116,114,97,104,101,100,114,
|
||||
97,0,42,109,95,97,110,99,104,111,114,115,0,42,109,95,99,108,117,115,
|
||||
116,101,114,115,0,109,95,110,117,109,77,97,116,101,114,105,97,108,115,0,
|
||||
109,95,110,117,109,76,105,110,107,115,0,109,95,110,117,109,70,97,99,101,
|
||||
115,0,109,95,110,117,109,84,101,116,114,97,104,101,100,114,97,0,109,95,
|
||||
110,117,109,65,110,99,104,111,114,115,0,109,95,110,117,109,67,108,117,115,
|
||||
116,101,114,115,0,109,95,99,111,110,102,105,103,0,0,0,84,89,80,69,
|
||||
68,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,66,118,104,83,117,98,116,114,101,101,73,110,102,111,
|
||||
68,97,116,97,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,
|
||||
111,100,101,70,108,111,97,116,68,97,116,97,0,98,116,79,112,116,105,109,
|
||||
105,122,101,100,66,118,104,78,111,100,101,68,111,117,98,108,101,68,97,116,
|
||||
97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,
|
||||
68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,
|
||||
108,111,97,116,68,97,116,97,0,98,116,81,117,97,110,116,105,122,101,100,
|
||||
66,118,104,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,83,116,97,
|
||||
116,105,99,80,108,97,110,101,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,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,
|
||||
112,108,101,116,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,84,114,
|
||||
105,97,110,103,108,101,73,110,102,111,77,97,112,68,97,116,97,0,98,116,
|
||||
67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,
|
||||
116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,
|
||||
116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,
|
||||
116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,
|
||||
97,0,98,116,84,114,105,97,110,103,108,101,73,110,102,111,68,97,116,97,
|
||||
0,98,116,71,73,109,112,97,99,116,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,98,116,67,111,110,115,116,114,97,105,110,116,73,110,102,111,
|
||||
49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,
|
||||
97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116,97,0,
|
||||
98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,
|
||||
105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,110,116,
|
||||
50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,117,98,
|
||||
108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,116,114,
|
||||
97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72,105,110,
|
||||
103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,
|
||||
97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,
|
||||
105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54,68,111,
|
||||
102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,83,108,
|
||||
105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,83,
|
||||
111,102,116,66,111,100,121,77,97,116,101,114,105,97,108,68,97,116,97,0,
|
||||
83,111,102,116,66,111,100,121,78,111,100,101,68,97,116,97,0,83,111,102,
|
||||
116,66,111,100,121,76,105,110,107,68,97,116,97,0,83,111,102,116,66,111,
|
||||
100,121,70,97,99,101,68,97,116,97,0,83,111,102,116,66,111,100,121,84,
|
||||
101,116,114,97,68,97,116,97,0,83,111,102,116,82,105,103,105,100,65,110,
|
||||
99,104,111,114,68,97,116,97,0,83,111,102,116,66,111,100,121,67,111,110,
|
||||
102,105,103,68,97,116,97,0,83,111,102,116,66,111,100,121,80,111,115,101,
|
||||
68,97,116,97,0,83,111,102,116,66,111,100,121,67,108,117,115,116,101,114,
|
||||
68,97,116,97,0,98,116,83,111,102,116,66,111,100,121,70,108,111,97,116,
|
||||
68,97,116,97,0,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,16,0,48,0,16,0,16,0,
|
||||
32,0,48,0,96,0,64,0,-128,0,20,0,48,0,80,0,16,0,96,0,
|
||||
-112,0,16,0,56,0,56,0,20,0,72,0,4,0,4,0,8,0,48,0,
|
||||
32,0,80,0,72,0,80,0,32,0,64,0,64,0,16,0,72,0,80,0,
|
||||
-40,1,8,1,-16,1,-88,3,8,0,56,0,0,0,88,0,120,0,96,1,
|
||||
-32,0,-40,0,0,1,-48,0,16,0,104,0,56,0,40,0,104,0,96,0,
|
||||
104,0,-56,0,104,1,-48,1,83,84,82,67,57,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,4,0,
|
||||
4,0,12,0,4,0,13,0,2,0,14,0,2,0,15,0,20,0,6,0,
|
||||
13,0,16,0,13,0,17,0,4,0,18,0,4,0,19,0,4,0,20,0,
|
||||
0,0,21,0,21,0,6,0,14,0,16,0,14,0,17,0,4,0,18,0,
|
||||
4,0,19,0,4,0,20,0,0,0,21,0,22,0,3,0,2,0,14,0,
|
||||
2,0,15,0,4,0,22,0,23,0,12,0,13,0,23,0,13,0,24,0,
|
||||
13,0,25,0,4,0,26,0,4,0,27,0,4,0,28,0,4,0,29,0,
|
||||
20,0,30,0,22,0,31,0,19,0,32,0,4,0,33,0,4,0,34,0,
|
||||
24,0,12,0,14,0,23,0,14,0,24,0,14,0,25,0,4,0,26,0,
|
||||
4,0,27,0,4,0,28,0,4,0,29,0,21,0,30,0,22,0,31,0,
|
||||
4,0,33,0,4,0,34,0,19,0,32,0,25,0,3,0,0,0,35,0,
|
||||
4,0,36,0,0,0,37,0,26,0,5,0,25,0,38,0,13,0,39,0,
|
||||
13,0,40,0,7,0,41,0,0,0,21,0,27,0,5,0,25,0,38,0,
|
||||
13,0,39,0,13,0,42,0,7,0,43,0,4,0,44,0,28,0,2,0,
|
||||
13,0,45,0,7,0,46,0,29,0,4,0,27,0,47,0,28,0,48,0,
|
||||
4,0,49,0,0,0,37,0,30,0,1,0,4,0,50,0,31,0,2,0,
|
||||
2,0,50,0,0,0,51,0,32,0,2,0,2,0,52,0,0,0,51,0,
|
||||
33,0,7,0,13,0,53,0,14,0,54,0,30,0,55,0,32,0,56,0,
|
||||
31,0,57,0,4,0,58,0,4,0,59,0,34,0,4,0,33,0,60,0,
|
||||
13,0,61,0,4,0,62,0,0,0,37,0,35,0,7,0,25,0,38,0,
|
||||
34,0,63,0,23,0,64,0,24,0,65,0,36,0,66,0,7,0,43,0,
|
||||
0,0,67,0,37,0,4,0,17,0,68,0,25,0,69,0,4,0,70,0,
|
||||
7,0,71,0,38,0,4,0,25,0,38,0,37,0,72,0,4,0,73,0,
|
||||
7,0,43,0,39,0,3,0,27,0,47,0,4,0,74,0,0,0,37,0,
|
||||
40,0,3,0,27,0,47,0,4,0,74,0,0,0,37,0,41,0,4,0,
|
||||
4,0,75,0,7,0,76,0,7,0,77,0,7,0,78,0,36,0,14,0,
|
||||
4,0,79,0,4,0,80,0,41,0,81,0,4,0,82,0,7,0,83,0,
|
||||
7,0,84,0,7,0,85,0,7,0,86,0,7,0,87,0,4,0,88,0,
|
||||
4,0,89,0,4,0,90,0,4,0,91,0,0,0,37,0,42,0,5,0,
|
||||
25,0,38,0,34,0,63,0,13,0,39,0,7,0,43,0,4,0,92,0,
|
||||
43,0,5,0,27,0,47,0,13,0,93,0,14,0,94,0,4,0,95,0,
|
||||
0,0,96,0,44,0,24,0,9,0,97,0,9,0,98,0,25,0,99,0,
|
||||
0,0,35,0,18,0,100,0,18,0,101,0,14,0,102,0,14,0,103,0,
|
||||
14,0,104,0,8,0,105,0,8,0,106,0,8,0,107,0,8,0,108,0,
|
||||
8,0,109,0,8,0,110,0,8,0,111,0,4,0,112,0,4,0,113,0,
|
||||
4,0,114,0,4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,
|
||||
0,0,37,0,45,0,23,0,9,0,97,0,9,0,98,0,25,0,99,0,
|
||||
0,0,35,0,17,0,100,0,17,0,101,0,13,0,102,0,13,0,103,0,
|
||||
13,0,104,0,7,0,105,0,7,0,106,0,7,0,107,0,7,0,108,0,
|
||||
7,0,109,0,7,0,110,0,7,0,111,0,4,0,112,0,4,0,113,0,
|
||||
4,0,114,0,4,0,115,0,4,0,116,0,4,0,117,0,4,0,118,0,
|
||||
46,0,21,0,45,0,119,0,15,0,120,0,13,0,121,0,13,0,122,0,
|
||||
13,0,123,0,13,0,124,0,13,0,125,0,13,0,126,0,13,0,127,0,
|
||||
13,0,-128,0,13,0,-127,0,7,0,-126,0,7,0,-125,0,7,0,-124,0,
|
||||
7,0,-123,0,7,0,-122,0,7,0,-121,0,7,0,-120,0,7,0,-119,0,
|
||||
7,0,-118,0,4,0,-117,0,47,0,22,0,44,0,119,0,16,0,120,0,
|
||||
14,0,121,0,14,0,122,0,14,0,123,0,14,0,124,0,14,0,125,0,
|
||||
14,0,126,0,14,0,127,0,14,0,-128,0,14,0,-127,0,8,0,-126,0,
|
||||
8,0,-125,0,8,0,-124,0,8,0,-123,0,8,0,-122,0,8,0,-121,0,
|
||||
8,0,-120,0,8,0,-119,0,8,0,-118,0,4,0,-117,0,0,0,37,0,
|
||||
48,0,2,0,4,0,-116,0,4,0,-115,0,49,0,11,0,50,0,-114,0,
|
||||
50,0,-113,0,0,0,35,0,4,0,-112,0,4,0,-111,0,4,0,-110,0,
|
||||
4,0,-109,0,7,0,-108,0,7,0,-107,0,4,0,-106,0,0,0,-105,0,
|
||||
51,0,3,0,49,0,-104,0,13,0,-103,0,13,0,-102,0,52,0,3,0,
|
||||
49,0,-104,0,14,0,-103,0,14,0,-102,0,53,0,13,0,49,0,-104,0,
|
||||
18,0,-101,0,18,0,-100,0,4,0,-99,0,4,0,-98,0,4,0,-97,0,
|
||||
7,0,-96,0,7,0,-95,0,7,0,-94,0,7,0,-93,0,7,0,-92,0,
|
||||
7,0,-91,0,7,0,-90,0,54,0,13,0,49,0,-104,0,17,0,-101,0,
|
||||
17,0,-100,0,4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,
|
||||
7,0,-95,0,7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,
|
||||
7,0,-90,0,54,0,13,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,
|
||||
4,0,-99,0,4,0,-98,0,4,0,-97,0,7,0,-96,0,7,0,-95,0,
|
||||
7,0,-94,0,7,0,-93,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,
|
||||
55,0,11,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,7,0,-89,0,
|
||||
7,0,-88,0,7,0,-87,0,7,0,-92,0,7,0,-91,0,7,0,-90,0,
|
||||
7,0,-86,0,0,0,21,0,56,0,9,0,49,0,-104,0,17,0,-101,0,
|
||||
17,0,-100,0,13,0,-85,0,13,0,-84,0,13,0,-83,0,13,0,-82,0,
|
||||
4,0,-81,0,4,0,-80,0,57,0,9,0,49,0,-104,0,17,0,-101,0,
|
||||
17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0,7,0,-82,0,
|
||||
4,0,-81,0,4,0,-80,0,58,0,4,0,7,0,-79,0,7,0,-78,0,
|
||||
7,0,-77,0,4,0,75,0,59,0,10,0,58,0,-76,0,13,0,-75,0,
|
||||
13,0,-74,0,13,0,-73,0,13,0,-72,0,13,0,-71,0,7,0,-126,0,
|
||||
7,0,-70,0,4,0,-69,0,4,0,-68,0,60,0,9,0,58,0,-76,0,
|
||||
4,0,-67,0,13,0,-66,0,7,0,-65,0,4,0,-64,0,7,0,-63,0,
|
||||
7,0,-62,0,7,0,-61,0,4,0,-68,0,61,0,4,0,13,0,-71,0,
|
||||
58,0,-76,0,4,0,-60,0,7,0,-59,0,62,0,7,0,13,0,-58,0,
|
||||
58,0,-76,0,4,0,-57,0,7,0,-56,0,7,0,-62,0,7,0,-61,0,
|
||||
4,0,-68,0,63,0,6,0,15,0,-63,0,13,0,-62,0,13,0,-55,0,
|
||||
50,0,-54,0,4,0,-53,0,7,0,-61,0,64,0,26,0,4,0,-52,0,
|
||||
7,0,-51,0,7,0,-86,0,7,0,-50,0,7,0,-49,0,7,0,-48,0,
|
||||
7,0,-47,0,7,0,-46,0,7,0,-45,0,7,0,-44,0,7,0,-43,0,
|
||||
7,0,-42,0,7,0,-41,0,7,0,-40,0,7,0,-39,0,7,0,-38,0,
|
||||
7,0,-37,0,7,0,-36,0,7,0,-35,0,7,0,-34,0,7,0,-33,0,
|
||||
4,0,-32,0,4,0,-31,0,4,0,-30,0,4,0,-29,0,4,0,113,0,
|
||||
65,0,12,0,15,0,-28,0,15,0,-27,0,15,0,-26,0,13,0,-25,0,
|
||||
13,0,-24,0,4,0,-23,0,4,0,-22,0,7,0,-56,0,4,0,-21,0,
|
||||
7,0,-20,0,4,0,-19,0,4,0,-68,0,66,0,15,0,45,0,119,0,
|
||||
65,0,-18,0,58,0,-17,0,59,0,-16,0,60,0,-15,0,61,0,-14,0,
|
||||
62,0,-13,0,63,0,-12,0,4,0,-11,0,4,0,-10,0,4,0,-9,0,
|
||||
4,0,-8,0,4,0,-7,0,4,0,-6,0,64,0,-5,0,};
|
||||
7,0,-90,0,55,0,11,0,49,0,-104,0,17,0,-101,0,17,0,-100,0,
|
||||
7,0,-89,0,7,0,-88,0,7,0,-87,0,7,0,-92,0,7,0,-91,0,
|
||||
7,0,-90,0,7,0,-86,0,0,0,21,0,56,0,9,0,49,0,-104,0,
|
||||
17,0,-101,0,17,0,-100,0,13,0,-85,0,13,0,-84,0,13,0,-83,0,
|
||||
13,0,-82,0,4,0,-81,0,4,0,-80,0,57,0,9,0,49,0,-104,0,
|
||||
17,0,-101,0,17,0,-100,0,7,0,-85,0,7,0,-84,0,7,0,-83,0,
|
||||
7,0,-82,0,4,0,-81,0,4,0,-80,0,58,0,4,0,7,0,-79,0,
|
||||
7,0,-78,0,7,0,-77,0,4,0,75,0,59,0,10,0,58,0,-76,0,
|
||||
13,0,-75,0,13,0,-74,0,13,0,-73,0,13,0,-72,0,13,0,-71,0,
|
||||
7,0,-126,0,7,0,-70,0,4,0,-69,0,4,0,-68,0,60,0,9,0,
|
||||
58,0,-76,0,4,0,-67,0,13,0,-66,0,7,0,-65,0,4,0,-64,0,
|
||||
7,0,-63,0,7,0,-62,0,7,0,-61,0,4,0,-68,0,61,0,4,0,
|
||||
13,0,-71,0,58,0,-76,0,4,0,-60,0,7,0,-59,0,62,0,7,0,
|
||||
13,0,-58,0,58,0,-76,0,4,0,-57,0,7,0,-56,0,7,0,-62,0,
|
||||
7,0,-61,0,4,0,-68,0,63,0,6,0,15,0,-63,0,13,0,-62,0,
|
||||
13,0,-55,0,50,0,-54,0,4,0,-53,0,7,0,-61,0,64,0,26,0,
|
||||
4,0,-52,0,7,0,-51,0,7,0,-86,0,7,0,-50,0,7,0,-49,0,
|
||||
7,0,-48,0,7,0,-47,0,7,0,-46,0,7,0,-45,0,7,0,-44,0,
|
||||
7,0,-43,0,7,0,-42,0,7,0,-41,0,7,0,-40,0,7,0,-39,0,
|
||||
7,0,-38,0,7,0,-37,0,7,0,-36,0,7,0,-35,0,7,0,-34,0,
|
||||
7,0,-33,0,4,0,-32,0,4,0,-31,0,4,0,-30,0,4,0,-29,0,
|
||||
4,0,113,0,65,0,12,0,15,0,-28,0,15,0,-27,0,15,0,-26,0,
|
||||
13,0,-25,0,13,0,-24,0,7,0,-23,0,4,0,-22,0,4,0,-21,0,
|
||||
4,0,-20,0,4,0,-19,0,7,0,-56,0,4,0,-68,0,66,0,27,0,
|
||||
17,0,-18,0,15,0,-17,0,15,0,-16,0,13,0,-25,0,13,0,-15,0,
|
||||
13,0,-14,0,13,0,-13,0,13,0,-12,0,13,0,-11,0,4,0,-10,0,
|
||||
7,0,-9,0,4,0,-8,0,4,0,-7,0,4,0,-6,0,7,0,-5,0,
|
||||
7,0,-4,0,4,0,-3,0,4,0,-2,0,7,0,-1,0,7,0,0,1,
|
||||
7,0,1,1,7,0,2,1,7,0,3,1,7,0,4,1,4,0,5,1,
|
||||
4,0,6,1,4,0,7,1,67,0,18,0,45,0,119,0,65,0,8,1,
|
||||
58,0,9,1,59,0,10,1,60,0,11,1,61,0,12,1,62,0,13,1,
|
||||
63,0,14,1,66,0,15,1,4,0,16,1,4,0,-7,0,4,0,17,1,
|
||||
4,0,18,1,4,0,19,1,4,0,20,1,4,0,21,1,4,0,-68,0,
|
||||
64,0,22,1,};
|
||||
int sBulletDNAlen64= sizeof(sBulletDNAstr64);
|
||||
|
Loading…
Reference in New Issue
Block a user