added basic serialization for several constraints including btPoint2PointConstraint, btHingeConstraint, btSliderConstraint, btConeTwistConstraint, btGeneric6DofConstraint

(no motor support or advanced settings yet)
added btStaticPlaneShape serialization
Added toggle in cmake for BenchmarksDemo to enable/disable graphics rendering
This commit is contained in:
erwin.coumans 2010-01-27 02:13:56 +00:00
parent 7003823bed
commit 00f58e5a91
38 changed files with 1873 additions and 342 deletions

View File

@ -10,15 +10,15 @@ ENDIF (NOT CMAKE_BUILD_TYPE)
OPTION(USE_DOUBLE_PRECISION "Use double precision" OFF)
OPTION(USE_GLUT_GRAPHICAL_BENCHMARK "Use Graphical Benchmark" ON)
OPTION(USE_GRAPHICAL_BENCHMARK "Use Graphical Benchmark" OFF)
IF (USE_DOUBLE_PRECISION)
ADD_DEFINITIONS( -DBT_USE_DOUBLE_PRECISION)
ENDIF (USE_DOUBLE_PRECISION)
IF(USE_GLUT_GRAPHICAL_BENCHMARK)
ADD_DEFINITIONS( -DUSE_GLUT_GRAPHICAL_BENCHMARK)
ENDIF (USE_GLUT_GRAPHICAL_BENCHMARK)
IF(USE_GRAPHICAL_BENCHMARK)
ADD_DEFINITIONS( -DUSE_GRAPHICAL_BENCHMARK)
ENDIF (USE_GRAPHICAL_BENCHMARK)
IF (WIN32)
OPTION(USE_GLUT "Use Glut" OFF)

View File

@ -17,9 +17,9 @@ subject to the following restrictions:
#define COLLISION_RADIUS 0.0f
#include "BenchmarkDemo.h"
#ifdef USE_GLUT_GRAPHICAL_BENCHMARK
#ifdef USE_GRAPHICAL_BENCHMARK
#include "GlutStuff.h"
#endif //USE_GLUT_GRAPHICAL_BENCHMARK
#endif //USE_GRAPHICAL_BENCHMARK
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
#include "btBulletDynamicsCommon.h"
@ -178,7 +178,7 @@ public:
void draw ()
{
#ifdef USE_GLUT_GRAPHICAL_BENCHMARK
#ifdef USE_GRAPHICAL_BENCHMARK
glDisable (GL_LIGHTING);
glColor3f (0.0, 1.0, 0.0);
glBegin (GL_LINES);
@ -206,7 +206,7 @@ public:
}
glEnd ();
glEnable (GL_LIGHTING);
#endif //USE_GLUT_GRAPHICAL_BENCHMARK
#endif //USE_GRAPHICAL_BENCHMARK
}
};
@ -217,9 +217,9 @@ static btRaycastBar2 raycastBar;
void BenchmarkDemo::clientMoveAndDisplay()
{
#ifdef USE_GLUT_GRAPHICAL_BENCHMARK
#ifdef USE_GRAPHICAL_BENCHMARK
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
#endif //USE_GLUT_GRAPHICAL_BENCHMARK
#endif //USE_GRAPHICAL_BENCHMARK
//simple dynamics world doesn't handle fixed-time-stepping
float ms = getDeltaTimeMicroseconds();
@ -242,11 +242,11 @@ void BenchmarkDemo::clientMoveAndDisplay()
renderme();
#ifdef USE_GLUT_GRAPHICAL_BENCHMARK
#ifdef USE_GRAPHICAL_BENCHMARK
glFlush();
glutSwapBuffers();
#endif //USE_GLUT_GRAPHICAL_BENCHMARK
swapBuffers();
#endif //USE_GRAPHICAL_BENCHMARK
}
@ -255,7 +255,7 @@ void BenchmarkDemo::clientMoveAndDisplay()
void BenchmarkDemo::displayCallback(void)
{
#ifdef USE_GLUT_GRAPHICAL_BENCHMARK
#ifdef USE_GRAPHICAL_BENCHMARK
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
renderme();
@ -265,8 +265,8 @@ void BenchmarkDemo::displayCallback(void)
m_dynamicsWorld->debugDrawWorld();
glFlush();
glutSwapBuffers();
#endif //USE_GLUT_GRAPHICAL_BENCHMARK
swapBuffers();
#endif //USE_GRAPHICAL_BENCHMARK
}
@ -1224,7 +1224,7 @@ void BenchmarkDemo::exitPhysics()
#ifndef USE_GLUT_GRAPHICAL_BENCHMARK
#ifndef USE_GRAPHICAL_BENCHMARK
btRigidBody* DemoApplication::localCreateRigidBody(float mass, const btTransform& startTransform,btCollisionShape* shape)
{
@ -1246,5 +1246,5 @@ btRigidBody* DemoApplication::localCreateRigidBody(float mass, const btTransform
return body;
}
#endif //USE_GLUT_GRAPHICAL_BENCHMARK
#endif //USE_GRAPHICAL_BENCHMARK

View File

@ -33,7 +33,7 @@ struct btCollisionAlgorithmCreateFunc;
class btDefaultCollisionConfiguration;
#ifndef USE_GLUT_GRAPHICAL_BENCHMARK
#ifndef USE_GRAPHICAL_BENCHMARK
///empty placeholder
class DemoApplication
{
@ -59,13 +59,21 @@ public:
};
///BenchmarkDemo is provides several performance tests
class BenchmarkDemo : public DemoApplication
#define PlatformDemoApplication DemoApplication
#else //USE_GRAPHICAL_BENCHMARK
#ifdef _WINDOWS
#include "Win32DemoApplication.h"
#define PlatformDemoApplication Win32DemoApplication
#else
#include "GlutDemoApplication.h"
class BenchmarkDemo : public GlutDemoApplication
#define PlatformDemoApplication GlutDemoApplication
#endif
#endif //USE_GRAPHICAL_BENCHMARK
class BenchmarkDemo : public PlatformDemoApplication
{
//keep the collision shapes, for deletion/cleanup

View File

@ -8,8 +8,8 @@
# You shouldn't have to modify anything below this line
########################################################
IF (USE_GLUT_GRAPHICAL_BENCHMARK)
IF (USE_GRAPHICAL_BENCHMARK)
IF (USE_GLUT)
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL
@ -18,14 +18,31 @@ IF (USE_GLUT_GRAPHICAL_BENCHMARK)
LINK_LIBRARIES(
OpenGLSupport BulletDynamics BulletCollision LinearMath ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
)
ADD_EXECUTABLE(AppBenchmarks
main.cpp
BenchmarkDemo.cpp
BenchmarkDemo.h
)
ELSE (USE_GLUT_GRAPHICAL_BENCHMARK)
ELSE (USE_GLUT)
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL
)
LINK_LIBRARIES(
OpenGLSupport BulletDynamics BulletCollision LinearMath ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
)
ADD_EXECUTABLE(AppBenchmarks
WIN32
../OpenGL/Win32AppMain.cpp
main.cpp
BenchmarkDemo.cpp
BenchmarkDemo.h
Win32BenchmarkDemo.cpp
)
ENDIF (USE_GLUT)
ELSE (USE_GRAPHICAL_BENCHMARK)
INCLUDE_DIRECTORIES(
${BULLET_PHYSICS_SOURCE_DIR}/src
@ -41,4 +58,4 @@ ELSE (USE_GLUT_GRAPHICAL_BENCHMARK)
main.cpp
BenchmarkDemo.cpp
)
ENDIF (USE_GLUT_GRAPHICAL_BENCHMARK)
ENDIF (USE_GRAPHICAL_BENCHMARK)

View File

@ -0,0 +1,25 @@
#ifdef _WINDOWS
/*
Bullet Continuous Collision Detection and Physics Library
Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include "BenchmarkDemo.h"
///The 'createDemo' function is called from Bullet/Demos/OpenGL/Win32AppMain.cpp to instantiate this particular demo
DemoApplication* createDemo()
{
return new BenchmarkDemo(1);
}
#endif

View File

@ -102,7 +102,9 @@ void ConstraintDemo::initPhysics()
setupEmptyDynamicsWorld();
btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(40.),btScalar(50.)));
//btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(40.),btScalar(50.)));
btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),40);
m_collisionShapes.push_back(groundShape);
btTransform groundTransform;
groundTransform.setIdentity();
@ -138,8 +140,14 @@ void ConstraintDemo::initPhysics()
(body1->getCenterOfMassTransform().getBasis().inverse()*(body1->getCenterOfMassTransform().getBasis() * axisInA)) :
body0->getCenterOfMassTransform().getBasis() * axisInA;
//#define P2P
#ifdef P2P
btTypedConstraint* p2p = new btPoint2PointConstraint(*body0,pivotInA);
//btTypedConstraint* p2p = new btPoint2PointConstraint(*body0,*body1,pivotInA,pivotInB);
//btTypedConstraint* hinge = new btHingeConstraint(*body0,*body1,pivotInA,pivotInB,axisInA,axisInB);
m_dynamicsWorld->addConstraint(p2p);
p2p->setDbgDrawSize(btScalar(5.f));
#else
btHingeConstraint* hinge = new btHingeConstraint(*body0,pivotInA,axisInA);
//use zero targetVelocity and a small maxMotorImpulse to simulate joint friction
@ -148,10 +156,12 @@ void ConstraintDemo::initPhysics()
float targetVelocity = 1.f;
float maxMotorImpulse = 1.0f;
hinge->enableAngularMotor(true,targetVelocity,maxMotorImpulse);
m_dynamicsWorld->addConstraint(hinge);//p2p);
// m_dynamicsWorld->addConstraint(p2p);
m_dynamicsWorld->addConstraint(hinge);
hinge->setDbgDrawSize(btScalar(5.f));
#endif //P2P
}
#endif
@ -600,8 +610,8 @@ void ConstraintDemo::clientMoveAndDisplay()
}
{
static bool once = false;
if (m_dynamicsWorld->getDebugDrawer())
static bool once = true;
if ( m_dynamicsWorld->getDebugDrawer() && once)
{
m_dynamicsWorld->getDebugDrawer()->setDebugMode(btIDebugDraw::DBG_DrawConstraints+btIDebugDraw::DBG_DrawConstraintLimits);
once=false;

View File

@ -29,6 +29,7 @@
#include "bullet_btTransformFloatData.h"
#include "bullet_btTransformDoubleData.h"
#include "bullet_btCollisionShapeData.h"
#include "bullet_btStaticPlaneShapeData.h"
#include "bullet_btConvexInternalShapeData.h"
#include "bullet_btPositionAndRadius.h"
#include "bullet_btMultiSphereShapeData.h"
@ -37,9 +38,22 @@
#include "bullet_btMeshPartData.h"
#include "bullet_btStridingMeshInterfaceData.h"
#include "bullet_btTriangleMeshShapeData.h"
#include "bullet_btCompoundShapeChildData.h"
#include "bullet_btCompoundShapeData.h"
#include "bullet_btCylinderShapeData.h"
#include "bullet_btCapsuleShapeData.h"
#include "bullet_btConvexHullShapeData.h"
#include "bullet_btCollisionObjectDoubleData.h"
#include "bullet_btCollisionObjectFloatData.h"
#include "bullet_btRigidBodyFloatData.h"
#include "bullet_btRigidBodyDoubleData.h"
#include "bullet_btConstraintInfo1.h"
#include "bullet_btTypedConstraintData.h"
#include "bullet_btPoint2PointConstraintFloatData.h"
#include "bullet_btPoint2PointConstraintDoubleData.h"
#include "bullet_btHingeConstraintDoubleData.h"
#include "bullet_btHingeConstraintFloatData.h"
#include "bullet_btConeTwistConstraintData.h"
#include "bullet_btGeneric6DofConstraintData.h"
#include "bullet_btSliderConstraintData.h"
#endif//__BULLET_H__

View File

@ -36,6 +36,7 @@ namespace Bullet {
class btTransformFloatData;
class btTransformDoubleData;
class btCollisionShapeData;
class btStaticPlaneShapeData;
class btConvexInternalShapeData;
class btPositionAndRadius;
class btMultiSphereShapeData;
@ -44,10 +45,23 @@ namespace Bullet {
class btMeshPartData;
class btStridingMeshInterfaceData;
class btTriangleMeshShapeData;
class btCompoundShapeChildData;
class btCompoundShapeData;
class btCylinderShapeData;
class btCapsuleShapeData;
class btConvexHullShapeData;
class btCollisionObjectDoubleData;
class btCollisionObjectFloatData;
class btRigidBodyFloatData;
class btRigidBodyDoubleData;
class btConstraintInfo1;
class btTypedConstraintData;
class btPoint2PointConstraintFloatData;
class btPoint2PointConstraintDoubleData;
class btHingeConstraintDoubleData;
class btHingeConstraintFloatData;
class btConeTwistConstraintData;
class btGeneric6DofConstraintData;
class btSliderConstraintData;
}
#endif//__BULLETCOMMON_H__

View File

@ -0,0 +1,42 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTCAPSULESHAPEDATA__H__
#define __BULLET_BTCAPSULESHAPEDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btConvexInternalShapeData.h"
namespace Bullet {
// ---------------------------------------------- //
class btCapsuleShapeData
{
public:
btConvexInternalShapeData m_convexInternalShapeData;
int m_upAxis;
char m_padding[4];
};
}
#endif//__BULLET_BTCAPSULESHAPEDATA__H__

View File

@ -0,0 +1,43 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTCOMPOUNDSHAPECHILDDATA__H__
#define __BULLET_BTCOMPOUNDSHAPECHILDDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTransformFloatData.h"
namespace Bullet {
// ---------------------------------------------- //
class btCompoundShapeChildData
{
public:
btTransformFloatData m_transform;
btCollisionShapeData *m_childShape;
int m_childShapeType;
float m_childMargin;
};
}
#endif//__BULLET_BTCOMPOUNDSHAPECHILDDATA__H__

View File

@ -0,0 +1,43 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTCOMPOUNDSHAPEDATA__H__
#define __BULLET_BTCOMPOUNDSHAPEDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btCollisionShapeData.h"
namespace Bullet {
// ---------------------------------------------- //
class btCompoundShapeData
{
public:
btCollisionShapeData m_collisionShapeData;
btCompoundShapeChildData *m_childShapePtr;
int m_numChildShapes;
float m_collisionMargin;
};
}
#endif//__BULLET_BTCOMPOUNDSHAPEDATA__H__

View File

@ -0,0 +1,51 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTCONETWISTCONSTRAINTDATA__H__
#define __BULLET_BTCONETWISTCONSTRAINTDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTransformFloatData.h"
#include "bullet_btTypedConstraintData.h"
namespace Bullet {
// ---------------------------------------------- //
class btConeTwistConstraintData
{
public:
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame;
btTransformFloatData m_rbBFrame;
float m_swingSpan1;
float m_swingSpan2;
float m_twistSpan;
float m_limitSoftness;
float m_biasFactor;
float m_relaxationFactor;
float m_damping;
char m_pad[4];
};
}
#endif//__BULLET_BTCONETWISTCONSTRAINTDATA__H__

View File

@ -0,0 +1,40 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTCONSTRAINTINFO1__H__
#define __BULLET_BTCONSTRAINTINFO1__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
namespace Bullet {
// ---------------------------------------------- //
class btConstraintInfo1
{
public:
int m_numConstraintRows;
int nub;
};
}
#endif//__BULLET_BTCONSTRAINTINFO1__H__

View File

@ -0,0 +1,42 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTCYLINDERSHAPEDATA__H__
#define __BULLET_BTCYLINDERSHAPEDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btConvexInternalShapeData.h"
namespace Bullet {
// ---------------------------------------------- //
class btCylinderShapeData
{
public:
btConvexInternalShapeData m_convexInternalShapeData;
int m_upAxis;
char m_padding[4];
};
}
#endif//__BULLET_BTCYLINDERSHAPEDATA__H__

View File

@ -0,0 +1,50 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTGENERIC6DOFCONSTRAINTDATA__H__
#define __BULLET_BTGENERIC6DOFCONSTRAINTDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTransformFloatData.h"
#include "bullet_btTypedConstraintData.h"
#include "bullet_btVector3FloatData.h"
namespace Bullet {
// ---------------------------------------------- //
class btGeneric6DofConstraintData
{
public:
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame;
btTransformFloatData m_rbBFrame;
btVector3FloatData m_linearUpperLimit;
btVector3FloatData m_linearLowerLimit;
btVector3FloatData m_angularUpperLimit;
btVector3FloatData m_angularLowerLimit;
int m_useLinearReferenceFrameA;
int m_useOffsetForConstraintFrame;
};
}
#endif//__BULLET_BTGENERIC6DOFCONSTRAINTDATA__H__

View File

@ -0,0 +1,53 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTHINGECONSTRAINTDOUBLEDATA__H__
#define __BULLET_BTHINGECONSTRAINTDOUBLEDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTransformDoubleData.h"
#include "bullet_btTypedConstraintData.h"
namespace Bullet {
// ---------------------------------------------- //
class btHingeConstraintDoubleData
{
public:
btTypedConstraintData m_typeConstraintData;
btTransformDoubleData m_rbAFrame;
btTransformDoubleData m_rbBFrame;
int m_useReferenceFrameA;
int m_angularOnly;
int m_enableAngularMotor;
float m_motorTargetVelocity;
float m_maxMotorImpulse;
float m_lowerLimit;
float m_upperLimit;
float m_limitSoftness;
float m_biasFactor;
float m_relaxationFactor;
};
}
#endif//__BULLET_BTHINGECONSTRAINTDOUBLEDATA__H__

View File

@ -0,0 +1,53 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTHINGECONSTRAINTFLOATDATA__H__
#define __BULLET_BTHINGECONSTRAINTFLOATDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTransformFloatData.h"
#include "bullet_btTypedConstraintData.h"
namespace Bullet {
// ---------------------------------------------- //
class btHingeConstraintFloatData
{
public:
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame;
btTransformFloatData m_rbBFrame;
int m_useReferenceFrameA;
int m_angularOnly;
int m_enableAngularMotor;
float m_motorTargetVelocity;
float m_maxMotorImpulse;
float m_lowerLimit;
float m_upperLimit;
float m_limitSoftness;
float m_biasFactor;
float m_relaxationFactor;
};
}
#endif//__BULLET_BTHINGECONSTRAINTFLOATDATA__H__

View File

@ -0,0 +1,43 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTPOINT2POINTCONSTRAINTDOUBLEDATA__H__
#define __BULLET_BTPOINT2POINTCONSTRAINTDOUBLEDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTypedConstraintData.h"
#include "bullet_btVector3DoubleData.h"
namespace Bullet {
// ---------------------------------------------- //
class btPoint2PointConstraintDoubleData
{
public:
btTypedConstraintData m_typeConstraintData;
btVector3DoubleData m_pivotInA;
btVector3DoubleData m_pivotInB;
};
}
#endif//__BULLET_BTPOINT2POINTCONSTRAINTDOUBLEDATA__H__

View File

@ -0,0 +1,43 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTPOINT2POINTCONSTRAINTFLOATDATA__H__
#define __BULLET_BTPOINT2POINTCONSTRAINTFLOATDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTypedConstraintData.h"
#include "bullet_btVector3FloatData.h"
namespace Bullet {
// ---------------------------------------------- //
class btPoint2PointConstraintFloatData
{
public:
btTypedConstraintData m_typeConstraintData;
btVector3FloatData m_pivotInA;
btVector3FloatData m_pivotInB;
};
}
#endif//__BULLET_BTPOINT2POINTCONSTRAINTFLOATDATA__H__

View File

@ -0,0 +1,49 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTSLIDERCONSTRAINTDATA__H__
#define __BULLET_BTSLIDERCONSTRAINTDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btTransformFloatData.h"
#include "bullet_btTypedConstraintData.h"
namespace Bullet {
// ---------------------------------------------- //
class btSliderConstraintData
{
public:
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame;
btTransformFloatData m_rbBFrame;
float m_linearUpperLimit;
float m_linearLowerLimit;
float m_angularUpperLimit;
float m_angularLowerLimit;
int m_useLinearReferenceFrameA;
int m_useOffsetForConstraintFrame;
};
}
#endif//__BULLET_BTSLIDERCONSTRAINTDATA__H__

View File

@ -0,0 +1,45 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTSTATICPLANESHAPEDATA__H__
#define __BULLET_BTSTATICPLANESHAPEDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btCollisionShapeData.h"
#include "bullet_btVector3FloatData.h"
namespace Bullet {
// ---------------------------------------------- //
class btStaticPlaneShapeData
{
public:
btCollisionShapeData m_collisionShapeData;
btVector3FloatData m_localScaling;
btVector3FloatData m_planeNormal;
float m_planeConstant;
char m_pad[4];
};
}
#endif//__BULLET_BTSTATICPLANESHAPEDATA__H__

View File

@ -0,0 +1,52 @@
/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
// Auto generated from makesdna dna.c
#ifndef __BULLET_BTTYPEDCONSTRAINTDATA__H__
#define __BULLET_BTTYPEDCONSTRAINTDATA__H__
// -------------------------------------------------- //
#include "bullet_Common.h"
#include "bullet_btVector3FloatData.h"
namespace Bullet {
// ---------------------------------------------- //
class btTypedConstraintData
{
public:
bInvalidHandle *m_rbA;
bInvalidHandle *m_rbB;
btVector3FloatData m_appliedLinearImpulse;
btVector3FloatData m_appliedAngularImpulseA;
btVector3FloatData m_appliedAngularImpulseB;
int m_objectType;
int m_userConstraintType;
int m_userConstraintId;
int m_needsFeedback;
float m_appliedImpulse;
float m_dbgDrawSize;
int m_disableCollisionsBetweenLinkedBodies;
char m_pad[4];
};
}
#endif//__BULLET_BTTYPEDCONSTRAINTDATA__H__

View File

@ -423,6 +423,7 @@ void bFile::parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bo
}
}
// ----------------------------------------------------- //
static void getElement(int arrayLen, const char *cur, const char *old, char *oldPtr, char *curData)
{
@ -436,7 +437,7 @@ static void getElement(int arrayLen, const char *cur, const char *old, char *old
#define setEle(value, current, type, cast, size, ptr)\
if (strcmp(current, type)==0)\
{\
(*(cast*)ptr) = value;\
(*(cast*)ptr) = (cast)value;\
ptr += size;\
}
double value = 0.0;

View File

@ -121,7 +121,12 @@ void btBulletFile::parseData()
{
m_rigidBodies.push_back((bStructHandle*) id);
}
if (dataChunk.code == BT_CONSTRAINT_CODE)
{
m_constraints.push_back((bStructHandle*) id);
}
if (dataChunk.code == BT_COLLISIONOBJECT_CODE)
{
m_collisionObjects.push_back((bStructHandle*) id);

View File

@ -23,6 +23,7 @@ subject to the following restrictions:
#define BT_COLLISIONOBJECT_CODE MAKE_ID('C','O','B','J')
#define BT_RIGIDBODY_CODE MAKE_ID('R','B','D','Y')
#define BT_CONSTRAINT_CODE MAKE_ID('C','O','N','S')
#define BT_BOXSHAPE_CODE MAKE_ID('B','O','X','S')
#define BT_SHAPE_CODE MAKE_ID('S','H','A','P')
@ -44,6 +45,8 @@ namespace bParse {
btAlignedObjectArray<bStructHandle*> m_collisionShapes;
btAlignedObjectArray<bStructHandle*> m_constraints;
btBulletFile();
btBulletFile(const char* fileName);

View File

@ -42,6 +42,18 @@ btCollisionShape* btBulletWorldImporter::convertCollisionShape( btCollisionShap
switch (shapeData->m_shapeType)
{
case STATIC_PLANE_PROXYTYPE:
{
btStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*)shapeData;
btVector3 planeNormal,localScaling;
planeNormal.deSerializeFloat(planeData->m_planeNormal);
localScaling.deSerializeFloat(planeData->m_localScaling);
shape = new btStaticPlaneShape(planeNormal,btScalar(planeData->m_planeConstant));
shape->setLocalScaling(localScaling);
break;
}
case CYLINDER_SHAPE_PROXYTYPE:
case CAPSULE_SHAPE_PROXYTYPE:
case BOX_SHAPE_PROXYTYPE:
@ -294,6 +306,9 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
if (shape)
shapeMap.insert(shapeData,shape);
}
btHashMap<btHashPtr,btRigidBody*> bodyMap;
for (i=0;i<bulletFile2->m_rigidBodies.size();i++)
{
if (bulletFile2->getFlags() & bParse::FD_DOUBLE_PRECISION)
@ -314,7 +329,8 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
shape->calculateLocalInertia(mass,localInertia);
}
bool isDynamic = mass!=0.f;
createRigidBody(isDynamic,mass,startTransform,shape);
btRigidBody* body = createRigidBody(isDynamic,mass,startTransform,shape);
bodyMap.insert(colObjData,body);
} else
{
printf("error: no shape found\n");
@ -338,7 +354,8 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
shape->calculateLocalInertia(mass,localInertia);
}
bool isDynamic = mass!=0.f;
createRigidBody(isDynamic,mass,startTransform,shape);
btRigidBody* body = createRigidBody(isDynamic,mass,startTransform,shape);
bodyMap.insert(colObjData,body);
} else
{
printf("error: no shape found\n");
@ -351,6 +368,206 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
btCollisionObjectData* colObjData = (btCollisionObjectData*)bulletFile2->m_collisionObjects[i];
printf("bla");
}
for (i=0;i<bulletFile2->m_constraints.size();i++)
{
btTypedConstraintData* constraintData = (btTypedConstraintData*)bulletFile2->m_constraints[i];
btRigidBody** rbAptr = bodyMap.find(constraintData->m_rbA);
btRigidBody** rbBptr = bodyMap.find(constraintData->m_rbB);
switch (constraintData->m_objectType)
{
case POINT2POINT_CONSTRAINT_TYPE:
{
btPoint2PointConstraint* constraint = 0;
if (bulletFile2->getFlags() & bParse::FD_DOUBLE_PRECISION)
{
btPoint2PointConstraintDoubleData* p2pData = (btPoint2PointConstraintDoubleData*)constraintData;
if (rbAptr && rbBptr)
{
btVector3 pivotInA,pivotInB;
pivotInA.deSerializeDouble(p2pData->m_pivotInA);
pivotInB.deSerializeDouble(p2pData->m_pivotInB);
constraint = new btPoint2PointConstraint(**rbAptr,**rbBptr,pivotInA,pivotInB);
} else
{
btVector3 pivotInA;
pivotInA.deSerializeDouble(p2pData->m_pivotInA);
constraint = new btPoint2PointConstraint(**rbAptr,pivotInA);
}
} else
{
btPoint2PointConstraintFloatData* p2pData = (btPoint2PointConstraintFloatData*)constraintData;
if (rbAptr && rbBptr)
{
btVector3 pivotInA,pivotInB;
pivotInA.deSerializeFloat(p2pData->m_pivotInA);
pivotInB.deSerializeFloat(p2pData->m_pivotInB);
constraint = new btPoint2PointConstraint(**rbAptr,**rbBptr,pivotInA,pivotInB);
} else
{
btVector3 pivotInA;
pivotInA.deSerializeFloat(p2pData->m_pivotInA);
constraint = new btPoint2PointConstraint(**rbAptr,pivotInA);
}
}
m_dynamicsWorld->addConstraint(constraint,constraintData->m_disableCollisionsBetweenLinkedBodies!=0);
constraint->setDbgDrawSize(constraintData->m_dbgDrawSize);
break;
}
case HINGE_CONSTRAINT_TYPE:
{
btHingeConstraint* hinge = 0;
if (bulletFile2->getFlags() & bParse::FD_DOUBLE_PRECISION)
{
btHingeConstraintDoubleData* hingeData = (btHingeConstraintDoubleData*)constraintData;
if (rbAptr && rbBptr)
{
btTransform rbAFrame,rbBFrame;
rbAFrame.deSerializeDouble(hingeData->m_rbAFrame);
rbBFrame.deSerializeDouble(hingeData->m_rbBFrame);
hinge = new btHingeConstraint(**rbAptr,**rbBptr,rbAFrame,rbBFrame,hingeData->m_useReferenceFrameA!=0);
} else
{
btTransform rbAFrame;
rbAFrame.deSerializeDouble(hingeData->m_rbAFrame);
hinge = new btHingeConstraint(**rbAptr,rbAFrame,hingeData->m_useReferenceFrameA!=0);
}
if (hingeData->m_enableAngularMotor)
{
hinge->enableAngularMotor(true,hingeData->m_motorTargetVelocity,hingeData->m_maxMotorImpulse);
}
hinge->setAngularOnly(hingeData->m_angularOnly!=0);
hinge->setLimit(btScalar(hingeData->m_lowerLimit),btScalar(hingeData->m_upperLimit),btScalar(hingeData->m_limitSoftness),btScalar(hingeData->m_biasFactor),btScalar(hingeData->m_relaxationFactor));
} else
{
btHingeConstraintFloatData* hingeData = (btHingeConstraintFloatData*)constraintData;
if (rbAptr && rbBptr)
{
btTransform rbAFrame,rbBFrame;
rbAFrame.deSerializeFloat(hingeData->m_rbAFrame);
rbBFrame.deSerializeFloat(hingeData->m_rbBFrame);
hinge = new btHingeConstraint(**rbAptr,**rbBptr,rbAFrame,rbBFrame,hingeData->m_useReferenceFrameA!=0);
} else
{
btTransform rbAFrame;
rbAFrame.deSerializeFloat(hingeData->m_rbAFrame);
hinge = new btHingeConstraint(**rbAptr,rbAFrame,hingeData->m_useReferenceFrameA!=0);
}
if (hingeData->m_enableAngularMotor)
{
hinge->enableAngularMotor(true,hingeData->m_motorTargetVelocity,hingeData->m_maxMotorImpulse);
}
hinge->setAngularOnly(hingeData->m_angularOnly!=0);
hinge->setLimit(btScalar(hingeData->m_lowerLimit),btScalar(hingeData->m_upperLimit),btScalar(hingeData->m_limitSoftness),btScalar(hingeData->m_biasFactor),btScalar(hingeData->m_relaxationFactor));
}
m_dynamicsWorld->addConstraint(hinge,constraintData->m_disableCollisionsBetweenLinkedBodies!=0);
hinge->setDbgDrawSize(constraintData->m_dbgDrawSize);
break;
}
case CONETWIST_CONSTRAINT_TYPE:
{
btConeTwistConstraintData* coneData = (btConeTwistConstraintData*)constraintData;
btConeTwistConstraint* coneTwist = 0;
if (rbAptr && rbBptr)
{
btTransform rbAFrame,rbBFrame;
rbAFrame.deSerializeFloat(coneData->m_rbAFrame);
rbBFrame.deSerializeFloat(coneData->m_rbBFrame);
coneTwist = new btConeTwistConstraint(**rbAptr,**rbBptr,rbAFrame,rbBFrame);
} else
{
btTransform rbAFrame;
rbAFrame.deSerializeFloat(coneData->m_rbAFrame);
coneTwist = new btConeTwistConstraint(**rbAptr,rbAFrame);
}
coneTwist->setLimit(coneData->m_swingSpan1,coneData->m_swingSpan2,coneData->m_twistSpan,coneData->m_limitSoftness,coneData->m_biasFactor,coneData->m_relaxationFactor);
coneTwist->setDamping(coneData->m_damping);
m_dynamicsWorld->addConstraint(coneTwist,constraintData->m_disableCollisionsBetweenLinkedBodies!=0);
coneTwist->setDbgDrawSize(constraintData->m_dbgDrawSize);
break;
}
case D6_CONSTRAINT_TYPE:
{
btGeneric6DofConstraintData* dofData = (btGeneric6DofConstraintData*)constraintData;
btGeneric6DofConstraint* dof = 0;
if (rbAptr && rbBptr)
{
btTransform rbAFrame,rbBFrame;
rbAFrame.deSerializeFloat(dofData->m_rbAFrame);
rbBFrame.deSerializeFloat(dofData->m_rbBFrame);
dof = new btGeneric6DofConstraint(**rbAptr,**rbBptr,rbAFrame,rbBFrame,dofData->m_useLinearReferenceFrameA!=0);
} else
{
btTransform rbBFrame;
rbBFrame.deSerializeFloat(dofData->m_rbBFrame);
dof = new btGeneric6DofConstraint(**rbBptr,rbBFrame,dofData->m_useLinearReferenceFrameA!=0);
}
btVector3 angLowerLimit,angUpperLimit, linLowerLimit,linUpperlimit;
angLowerLimit.deSerializeFloat(dofData->m_angularLowerLimit);
angUpperLimit.deSerializeFloat(dofData->m_angularUpperLimit);
linLowerLimit.deSerializeFloat(dofData->m_linearLowerLimit);
linUpperlimit.deSerializeFloat(dofData->m_linearUpperLimit);
dof->setAngularLowerLimit(angLowerLimit);
dof->setAngularUpperLimit(angUpperLimit);
dof->setLinearLowerLimit(linLowerLimit);
dof->setLinearUpperLimit(linUpperlimit);
m_dynamicsWorld->addConstraint(dof,constraintData->m_disableCollisionsBetweenLinkedBodies!=0);
dof->setDbgDrawSize(constraintData->m_dbgDrawSize);
break;
}
case SLIDER_CONSTRAINT_TYPE:
{
btSliderConstraintData* sliderData = (btSliderConstraintData*)constraintData;
btSliderConstraint* slider = 0;
if (rbAptr && rbBptr)
{
btTransform rbAFrame,rbBFrame;
rbAFrame.deSerializeFloat(sliderData->m_rbAFrame);
rbBFrame.deSerializeFloat(sliderData->m_rbBFrame);
slider = new btSliderConstraint(**rbAptr,**rbBptr,rbAFrame,rbBFrame,sliderData->m_useLinearReferenceFrameA!=0);
} else
{
btTransform rbBFrame;
rbBFrame.deSerializeFloat(sliderData->m_rbBFrame);
slider = new btSliderConstraint(**rbBptr,rbBFrame,sliderData->m_useLinearReferenceFrameA!=0);
}
slider->setLowerLinLimit(sliderData->m_linearLowerLimit);
slider->setUpperLinLimit(sliderData->m_linearUpperLimit);
slider->setLowerAngLimit(sliderData->m_angularLowerLimit);
slider->setUpperAngLimit(sliderData->m_angularUpperLimit);
slider->setUseFrameOffset(sliderData->m_useOffsetForConstraintFrame!=0);
m_dynamicsWorld->addConstraint(slider,constraintData->m_disableCollisionsBetweenLinkedBodies!=0);
slider->setDbgDrawSize(constraintData->m_dbgDrawSize);
break;
}
default:
{
printf("unknown constraint type\n");
}
};
}
return false;
}

View File

@ -123,6 +123,7 @@ typedef unsigned long uintptr_t;
#include "LinearMath/btMatrix3x3.h"
#include "LinearMath/btTransform.h"
#include "BulletCollision/CollisionShapes/btCollisionShape.h"
#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h"
#include "BulletCollision/CollisionShapes/btConvexInternalShape.h"
#include "BulletCollision/CollisionShapes/btMultiSphereShape.h"
#include "BulletCollision/CollisionShapes/btConvexHullShape.h"
@ -132,6 +133,13 @@ typedef unsigned long uintptr_t;
#include "BulletCollision/CollisionShapes/btCylinderShape.h"
#include "BulletCollision/CollisionShapes/btCapsuleShape.h"
#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h"
#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h"
#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h"
#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h"
#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h"
#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h"
#include "BulletDynamics/Dynamics/btRigidBody.h"
@ -152,6 +160,7 @@ char *includefiles[] = {
"../../../src/LinearMath/btMatrix3x3.h",
"../../../src/LinearMath/btTransform.h",
"../../../src/BulletCollision/CollisionShapes/btCollisionShape.h",
"../../../src/BulletCollision/CollisionShapes/btStaticPlaneShape.h",
"../../../src/BulletCollision/CollisionShapes/btConvexInternalShape.h",
"../../../src/BulletCollision/CollisionShapes/btMultiSphereShape.h",
"../../../src/BulletCollision/CollisionShapes/btStridingMeshInterface.h",
@ -162,6 +171,13 @@ char *includefiles[] = {
"../../../src/BulletCollision/CollisionShapes/btConvexHullShape.h",
"../../../src/BulletCollision/CollisionDispatch/btCollisionObject.h",
"../../../src/BulletDynamics/Dynamics/btRigidBody.h",
"../../../src/BulletDynamics/ConstraintSolver/btTypedConstraint.h",
"../../../src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h",
"../../../src/BulletDynamics/ConstraintSolver/btHingeConstraint.h",
"../../../src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h",
"../../../src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h",
"../../../src/BulletDynamics/ConstraintSolver/btSliderConstraint.h",
// empty string to indicate end of includefiles
""
};
@ -539,6 +555,8 @@ const char* skipStructTypes[]=
{
"btRigidBodyConstructionInfo",
"Euler",
"btConstraintInfo2",
"btConstraintSetting",
""
};

View File

@ -58,7 +58,42 @@ public:
//debugging
virtual const char* getName()const {return "STATICPLANE";}
virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
};
struct btStaticPlaneShapeData
{
btCollisionShapeData m_collisionShapeData;
btVector3FloatData m_localScaling;
btVector3FloatData m_planeNormal;
float m_planeConstant;
char m_pad[4];
};
SIMD_FORCE_INLINE int btStaticPlaneShape::calculateSerializeBufferSize() const
{
return sizeof(btStaticPlaneShapeData);
}
///fills the dataBuffer and returns the struct name (and 0 on failure)
SIMD_FORCE_INLINE const char* btStaticPlaneShape::serialize(void* dataBuffer, btSerializer* serializer) const
{
btStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*) dataBuffer;
btCollisionShape::serialize(&planeData->m_collisionShapeData,serializer);
m_localScaling.serializeFloat(planeData->m_localScaling);
m_planeNormal.serializeFloat(planeData->m_planeNormal);
planeData->m_planeConstant = float(m_planeConstant);
return "btStaticPlaneShapeData";
}
#endif //STATIC_PLANE_SHAPE_H

View File

@ -99,6 +99,20 @@ public:
btScalar m_maxMotorImpulse;
btVector3 m_accMotorImpulse;
protected:
void init();
void computeConeLimitInfo(const btQuaternion& qCone, // in
btScalar& swingAngle, btVector3& vSwingAxis, btScalar& swingLimit); // all outs
void computeTwistLimitInfo(const btQuaternion& qTwist, // in
btScalar& twistAngle, btVector3& vTwistAxis); // all outs
void adjustSwingAxisToUseEllipseNormal(btVector3& vSwingAxis) const;
public:
btConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB,const btTransform& rbAFrame, const btTransform& rbBFrame);
@ -243,17 +257,61 @@ public:
btVector3 GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const;
virtual int calculateSerializeBufferSize() const;
protected:
void init();
///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
void computeConeLimitInfo(const btQuaternion& qCone, // in
btScalar& swingAngle, btVector3& vSwingAxis, btScalar& swingLimit); // all outs
void computeTwistLimitInfo(const btQuaternion& qTwist, // in
btScalar& twistAngle, btVector3& vTwistAxis); // all outs
void adjustSwingAxisToUseEllipseNormal(btVector3& vSwingAxis) const;
};
struct btConeTwistConstraintData
{
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame;
btTransformFloatData m_rbBFrame;
//limits
float m_swingSpan1;
float m_swingSpan2;
float m_twistSpan;
float m_limitSoftness;
float m_biasFactor;
float m_relaxationFactor;
float m_damping;
char m_pad[4];
};
SIMD_FORCE_INLINE int btConeTwistConstraint::calculateSerializeBufferSize() const
{
return sizeof(btConeTwistConstraintData);
}
///fills the dataBuffer and returns the struct name (and 0 on failure)
SIMD_FORCE_INLINE const char* btConeTwistConstraint::serialize(void* dataBuffer, btSerializer* serializer) const
{
btConeTwistConstraintData* cone = (btConeTwistConstraintData*) dataBuffer;
btTypedConstraint::serialize(&cone->m_typeConstraintData,serializer);
m_rbAFrame.serializeFloat(cone->m_rbAFrame);
m_rbBFrame.serializeFloat(cone->m_rbBFrame);
cone->m_swingSpan1 = float(m_swingSpan1);
cone->m_swingSpan2 = float(m_swingSpan2);
cone->m_twistSpan = float(m_twistSpan);
cone->m_limitSoftness = float(m_limitSoftness);
cone->m_biasFactor = float(m_biasFactor);
cone->m_relaxationFactor = float(m_relaxationFactor);
cone->m_damping = float(m_damping);
return "btConeTwistConstraintData";
}
#endif //CONETWISTCONSTRAINT_H

View File

@ -498,7 +498,64 @@ public:
// access for UseFrameOffset
bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }
void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }
virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
};
struct btGeneric6DofConstraintData
{
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis.
btTransformFloatData m_rbBFrame;
btVector3FloatData m_linearUpperLimit;
btVector3FloatData m_linearLowerLimit;
btVector3FloatData m_angularUpperLimit;
btVector3FloatData m_angularLowerLimit;
int m_useLinearReferenceFrameA;
int m_useOffsetForConstraintFrame;
};
SIMD_FORCE_INLINE int btGeneric6DofConstraint::calculateSerializeBufferSize() const
{
return sizeof(btGeneric6DofConstraintData);
}
///fills the dataBuffer and returns the struct name (and 0 on failure)
SIMD_FORCE_INLINE const char* btGeneric6DofConstraint::serialize(void* dataBuffer, btSerializer* serializer) const
{
btGeneric6DofConstraintData* dof = (btGeneric6DofConstraintData*)dataBuffer;
btTypedConstraint::serialize(&dof->m_typeConstraintData,serializer);
m_frameInA.serializeFloat(dof->m_rbAFrame);
m_frameInB.serializeFloat(dof->m_rbBFrame);
int i;
for (i=0;i<3;i++)
{
dof->m_angularLowerLimit.m_floats[i] = m_angularLimits[i].m_loLimit;
dof->m_angularUpperLimit.m_floats[i] = m_angularLimits[i].m_hiLimit;
dof->m_linearLowerLimit.m_floats[i] = m_linearLimits.m_lowerLimit[i];
dof->m_linearUpperLimit.m_floats[i] = m_linearLimits.m_upperLimit[i];
}
dof->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA? 1 : 0;
dof->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame ? 1 : 0;
return "btGeneric6DofConstraintData";
}
#endif //GENERIC_6DOF_CONSTRAINT_H

View File

@ -24,6 +24,15 @@ subject to the following restrictions:
class btRigidBody;
#ifdef BT_USE_DOUBLE_PRECISION
#define btHingeConstraintData btHingeConstraintDoubleData
#define btHingeConstraintDataName "btHingeConstraintDoubleData"
#else
#define btHingeConstraintData btHingeConstraintFloatData
#define btHingeConstraintDataName "btHingeConstraintFloatData"
#endif //BT_USE_DOUBLE_PRECISION
/// hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space
/// axis defines the orientation of the hinge axis
ATTRIBUTE_ALIGNED16(class) btHingeConstraint : public btTypedConstraint
@ -222,6 +231,83 @@ public:
// access for UseFrameOffset
bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }
void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }
virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
};
struct btHingeConstraintDoubleData
{
btTypedConstraintData m_typeConstraintData;
btTransformDoubleData m_rbAFrame; // constraint axii. Assumes z is hinge axis.
btTransformDoubleData m_rbBFrame;
int m_useReferenceFrameA;
int m_angularOnly;
int m_enableAngularMotor;
float m_motorTargetVelocity;
float m_maxMotorImpulse;
float m_lowerLimit;
float m_upperLimit;
float m_limitSoftness;
float m_biasFactor;
float m_relaxationFactor;
};
struct btHingeConstraintFloatData
{
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis.
btTransformFloatData m_rbBFrame;
int m_useReferenceFrameA;
int m_angularOnly;
int m_enableAngularMotor;
float m_motorTargetVelocity;
float m_maxMotorImpulse;
float m_lowerLimit;
float m_upperLimit;
float m_limitSoftness;
float m_biasFactor;
float m_relaxationFactor;
};
SIMD_FORCE_INLINE int btHingeConstraint::calculateSerializeBufferSize() const
{
return sizeof(btHingeConstraintData);
}
///fills the dataBuffer and returns the struct name (and 0 on failure)
SIMD_FORCE_INLINE const char* btHingeConstraint::serialize(void* dataBuffer, btSerializer* serializer) const
{
btHingeConstraintData* hingeData = (btHingeConstraintData*)dataBuffer;
btTypedConstraint::serialize(&hingeData->m_typeConstraintData,serializer);
m_rbAFrame.serialize(hingeData->m_rbAFrame);
m_rbBFrame.serialize(hingeData->m_rbBFrame);
hingeData->m_angularOnly = m_angularOnly;
hingeData->m_enableAngularMotor = m_enableAngularMotor;
hingeData->m_maxMotorImpulse = float(m_maxMotorImpulse);
hingeData->m_motorTargetVelocity = float(m_motorTargetVelocity);
hingeData->m_useReferenceFrameA = m_useReferenceFrameA;
hingeData->m_lowerLimit = float(m_lowerLimit);
hingeData->m_upperLimit = float(m_upperLimit);
hingeData->m_limitSoftness = float(m_limitSoftness);
hingeData->m_biasFactor = float(m_biasFactor);
hingeData->m_relaxationFactor = float(m_relaxationFactor);
return btHingeConstraintDataName;
}
#endif //HINGECONSTRAINT_H

View File

@ -22,6 +22,15 @@ subject to the following restrictions:
class btRigidBody;
#ifdef BT_USE_DOUBLE_PRECISION
#define btPoint2PointConstraintData btPoint2PointConstraintDoubleData
#define btPoint2PointConstraintDataName "btPoint2PointConstraintDoubleData"
#else
#define btPoint2PointConstraintData btPoint2PointConstraintFloatData
#define btPoint2PointConstraintDataName "btPoint2PointConstraintFloatData"
#endif //BT_USE_DOUBLE_PRECISION
struct btConstraintSetting
{
btConstraintSetting() :
@ -95,7 +104,45 @@ public:
return m_pivotInB;
}
virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
};
struct btPoint2PointConstraintFloatData
{
btTypedConstraintData m_typeConstraintData;
btVector3FloatData m_pivotInA;
btVector3FloatData m_pivotInB;
};
struct btPoint2PointConstraintDoubleData
{
btTypedConstraintData m_typeConstraintData;
btVector3DoubleData m_pivotInA;
btVector3DoubleData m_pivotInB;
};
SIMD_FORCE_INLINE int btPoint2PointConstraint::calculateSerializeBufferSize() const
{
return sizeof(btPoint2PointConstraintData);
}
///fills the dataBuffer and returns the struct name (and 0 on failure)
SIMD_FORCE_INLINE const char* btPoint2PointConstraint::serialize(void* dataBuffer, btSerializer* serializer) const
{
btPoint2PointConstraintData* p2pData = (btPoint2PointConstraintData*)dataBuffer;
btTypedConstraint::serialize(&p2pData->m_typeConstraintData,serializer);
m_pivotInA.serialize(p2pData->m_pivotInA);
m_pivotInB.serialize(p2pData->m_pivotInB);
return btPoint2PointConstraintDataName;
}
#endif //POINT2POINTCONSTRAINT_H

View File

@ -230,8 +230,60 @@ public:
// access for UseFrameOffset
bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }
void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }
virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
};
struct btSliderConstraintData
{
btTypedConstraintData m_typeConstraintData;
btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis.
btTransformFloatData m_rbBFrame;
float m_linearUpperLimit;
float m_linearLowerLimit;
float m_angularUpperLimit;
float m_angularLowerLimit;
int m_useLinearReferenceFrameA;
int m_useOffsetForConstraintFrame;
};
SIMD_FORCE_INLINE int btSliderConstraint::calculateSerializeBufferSize() const
{
return sizeof(btSliderConstraintData);
}
///fills the dataBuffer and returns the struct name (and 0 on failure)
SIMD_FORCE_INLINE const char* btSliderConstraint::serialize(void* dataBuffer, btSerializer* serializer) const
{
btSliderConstraintData* sliderData = (btSliderConstraintData*) dataBuffer;
btTypedConstraint::serialize(&sliderData->m_typeConstraintData,serializer);
m_frameInA.serializeFloat(sliderData->m_rbAFrame);
m_frameInB.serializeFloat(sliderData->m_rbBFrame);
sliderData->m_linearUpperLimit = float(m_upperLinLimit);
sliderData->m_linearLowerLimit = float(m_lowerLinLimit);
sliderData->m_angularUpperLimit = float(m_upperAngLimit);
sliderData->m_angularLowerLimit = float(m_lowerAngLimit);
sliderData->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA;
sliderData->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame;
return "btSliderConstraintData";
}
#endif //SLIDER_CONSTRAINT_H

View File

@ -113,4 +113,37 @@ btScalar btTypedConstraint::getMotorFactor(btScalar pos, btScalar lowLim, btScal
return lim_fact;
}
///fills the dataBuffer and returns the struct name (and 0 on failure)
const char* btTypedConstraint::serialize(void* dataBuffer, btSerializer* serializer) const
{
btTypedConstraintData* tcd = (btTypedConstraintData*) dataBuffer;
tcd->m_rbA = (btRigidBodyData*)&m_rbA;
tcd->m_rbB = (btRigidBodyData*)&m_rbB;
m_appliedAngularImpulseA.serializeFloat(tcd->m_appliedAngularImpulseA);
m_appliedAngularImpulseB.serializeFloat(tcd->m_appliedAngularImpulseB);
m_appliedLinearImpulse.serializeFloat(tcd->m_appliedLinearImpulse);
tcd->m_objectType = m_objectType;
tcd->m_needsFeedback = m_needsFeedback;
tcd->m_userConstraintId =m_userConstraintId;
tcd->m_userConstraintType =m_userConstraintType;
tcd->m_appliedImpulse = float(m_appliedImpulse);
tcd->m_dbgDrawSize = float(m_dbgDrawSize );
tcd->m_disableCollisionsBetweenLinkedBodies = false;
int i;
for (i=0;i<m_rbA.getNumConstraintRefs();i++)
if (m_rbA.getConstraintRef(i) == this)
tcd->m_disableCollisionsBetweenLinkedBodies = true;
for (i=0;i<m_rbB.getNumConstraintRefs();i++)
if (m_rbB.getConstraintRef(i) == this)
tcd->m_disableCollisionsBetweenLinkedBodies = true;
return "btTypedConstraintData";
}

View File

@ -1,6 +1,6 @@
/*
Bullet Continuous Collision Detection and Physics Library
Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
Copyright (c) 2003-2010 Erwin Coumans http://continuousphysics.com/Bullet/
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
@ -21,6 +21,7 @@ class btRigidBody;
#include "btSolverConstraint.h"
#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"
struct btSolverBody;
class btSerializer;
enum btTypedConstraintType
{
@ -248,6 +249,11 @@ public:
return m_dbgDrawSize;
}
virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
};
// returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits
@ -277,4 +283,33 @@ SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScal
}
struct btTypedConstraintData
{
btRigidBodyData *m_rbA;
btRigidBodyData *m_rbB;
btVector3FloatData m_appliedLinearImpulse;
btVector3FloatData m_appliedAngularImpulseA;
btVector3FloatData m_appliedAngularImpulseB;
int m_objectType;
int m_userConstraintType;
int m_userConstraintId;
int m_needsFeedback;
float m_appliedImpulse;
float m_dbgDrawSize;
int m_disableCollisionsBetweenLinkedBodies;
char m_pad[4];
};
SIMD_FORCE_INLINE int btTypedConstraint::calculateSerializeBufferSize() const
{
return sizeof(btTypedConstraintData);
}
#endif //TYPED_CONSTRAINT_H

View File

@ -1094,6 +1094,15 @@ void btDiscreteDynamicsWorld::serializeRigidBodies(btSerializer* serializer)
serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,colObj);
}
}
for (i=0;i<m_constraints.size();i++)
{
btTypedConstraint* constraint = m_constraints[i];
int size = constraint->calculateSerializeBufferSize();
btChunk* chunk = serializer->allocate(size,1);
const char* structType = constraint->serialize(chunk->m_oldPtr,serializer);
serializer->finalizeChunk(chunk,structType,BT_CONSTRAINT_CODE,constraint);
}
}

View File

@ -1,5 +1,5 @@
unsigned char sBulletDNAstr64[]= {
83,68,78,65,78,65,77,69,92,0,0,0,109,95,115,105,122,101,0,109,
83,68,78,65,78,65,77,69,-122,0,0,0,109,95,115,105,122,101,0,109,
95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95,
99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111,
108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110,
@ -9,153 +9,221 @@ unsigned char sBulletDNAstr64[]= {
109,95,117,115,101,114,80,111,105,110,116,101,114,0,109,95,115,104,97,112,
101,84,121,112,101,0,109,95,112,97,100,100,105,110,103,91,52,93,0,109,
95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,
109,95,108,111,99,97,108,83,99,97,108,105,110,103,0,109,95,105,109,112,
108,105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115,
0,109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109,
95,112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100,
105,117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108,
83,104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111,
115,105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99,
97,108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0,
109,95,118,97,108,117,101,0,105,110,116,0,42,109,95,118,101,114,116,105,
99,101,115,51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,
42,109,95,105,110,100,105,99,101,115,51,50,0,42,109,95,105,110,100,105,
99,101,115,49,54,0,109,95,110,117,109,84,114,105,97,110,103,108,101,115,
0,109,95,110,117,109,86,101,114,116,105,99,101,115,0,42,109,95,109,101,
115,104,80,97,114,116,115,80,116,114,0,109,95,115,99,97,108,105,110,103,
0,109,95,110,117,109,77,101,115,104,80,97,114,116,115,0,109,95,109,101,
115,104,73,110,116,101,114,102,97,99,101,0,109,95,116,114,97,110,115,102,
111,114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101,0,109,95,
99,104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95,99,104,105,
108,100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100,83,104,97,
112,101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83,104,97,112,
101,115,0,109,95,117,112,65,120,105,115,0,42,109,95,117,110,115,99,97,
108,101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114,0,42,109,
95,117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111,117,98,108,
101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101,100,80,111,
105,110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,
109,95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,
109,95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,
114,111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,
109,95,117,115,101,114,79,98,106,101,99,116,80,111,105,110,116,101,114,0,
109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109,95,105,
110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84,114,97,
110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97,116,105,
111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109,95,105,
110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97,114,86,
101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111,112,105,
99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99,116,80,
114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100,0,109,
95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0,109,95,
102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117,116,105,
111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109,95,99,
99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117,115,0,
109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111,108,100,
0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70,114,105,
99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70,108,97,
103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,111,
109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,105,
111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97,108,84,
121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101,87,105,
116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101,99,116,
68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84,101,110,
115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86,101,108,
111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108,111,99,
105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0,
109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97,
118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108,
101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97,
76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109,
95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118,101,114,
115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109,112,105,
110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110,103,0,
109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110,103,70,
97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108,76,105,
110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,
83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,
108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,
109,95,108,111,99,97,108,83,99,97,108,105,110,103,0,109,95,112,108,97,
110,101,78,111,114,109,97,108,0,109,95,112,108,97,110,101,67,111,110,115,
116,97,110,116,0,109,95,112,97,100,91,52,93,0,109,95,105,109,112,108,
105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115,0,
109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109,95,
112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100,105,
117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108,83,
104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111,115,
105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99,97,
108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0,109,
95,118,97,108,117,101,0,105,110,116,0,42,109,95,118,101,114,116,105,99,
101,115,51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,42,
109,95,105,110,100,105,99,101,115,51,50,0,42,109,95,105,110,100,105,99,
101,115,49,54,0,109,95,110,117,109,84,114,105,97,110,103,108,101,115,0,
109,95,110,117,109,86,101,114,116,105,99,101,115,0,42,109,95,109,101,115,
104,80,97,114,116,115,80,116,114,0,109,95,115,99,97,108,105,110,103,0,
109,95,110,117,109,77,101,115,104,80,97,114,116,115,0,109,95,109,101,115,
104,73,110,116,101,114,102,97,99,101,0,109,95,116,114,97,110,115,102,111,
114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101,0,109,95,99,
104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95,99,104,105,108,
100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100,83,104,97,112,
101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83,104,97,112,101,
115,0,109,95,117,112,65,120,105,115,0,42,109,95,117,110,115,99,97,108,
101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114,0,42,109,95,
117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111,117,98,108,101,
80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101,100,80,111,105,
110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,109,
95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,109,
95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,114,
111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,
95,117,115,101,114,79,98,106,101,99,116,80,111,105,110,116,101,114,0,109,
95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109,95,105,110,
116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84,114,97,110,
115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97,116,105,111,
110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109,95,105,110,
116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97,114,86,101,
108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111,112,105,99,
70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99,116,80,114,
111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100,0,109,95,
100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0,109,95,102,
114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117,116,105,111,
110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109,95,99,99,
100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117,115,0,109,
95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111,108,100,0,
109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70,114,105,99,
116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70,108,97,103,
115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,111,109,
112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,105,111,
110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97,108,84,121,
112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101,87,105,116,
104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,
97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84,101,110,115,
111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86,101,108,111,
99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108,111,99,105,
116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0,109,
95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97,118,
105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108,101,
114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97,76,
111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109,95,
116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118,101,114,115,
101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109,112,105,110,
103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110,103,0,109,
95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110,103,70,97,
99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108,76,105,110,
101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,
113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,
97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95,108,105,
110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,
100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110,103,84,
104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111,110,97,
108,68,97,109,112,105,110,103,0,0,0,0,84,89,80,69,37,0,0,0,
99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,0,117,115,104,
111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,110,103,0,102,
108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105,
110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115,105,99,115,83,
121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98,116,86,101,99,
116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116,86,101,99,116,
111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116,77,97,116,114,
105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98,116,77,97,116,
114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97,0,98,116,84,
114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116,97,0,98,116,
84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68,97,116,97,0,
98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,
0,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,
112,101,68,97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,
82,97,100,105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,
83,104,97,112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,
68,97,116,97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,
68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,
98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,
97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103,108,101,77,101,
115,104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,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,67,111,
110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,98,116,
67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,111,117,98,108,
101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,
101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,
66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,
100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0,84,76,69,78,
1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,
16,0,48,0,16,0,16,0,32,0,48,0,96,0,64,0,-128,0,16,0,
56,0,20,0,72,0,4,0,4,0,40,0,32,0,56,0,80,0,32,0,
64,0,64,0,80,0,-40,1,8,1,-16,1,-88,3,0,0,83,84,82,67,
27,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,9,0,2,0,
11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,12,0,2,0,
9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,14,0,1,0,
8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,14,0,9,0,
17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,16,0,10,0,
14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,0,0,14,0,
20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,7,0,18,0,
4,0,19,0,21,0,2,0,13,0,20,0,7,0,21,0,22,0,4,0,
20,0,22,0,21,0,23,0,4,0,24,0,0,0,14,0,23,0,1,0,
4,0,25,0,24,0,2,0,2,0,26,0,2,0,25,0,25,0,6,0,
13,0,27,0,14,0,28,0,23,0,29,0,24,0,30,0,4,0,31,0,
4,0,32,0,26,0,4,0,25,0,33,0,13,0,34,0,4,0,35,0,
0,0,14,0,27,0,4,0,19,0,15,0,26,0,36,0,7,0,18,0,
0,0,14,0,28,0,4,0,17,0,37,0,19,0,38,0,4,0,39,0,
7,0,40,0,29,0,4,0,19,0,15,0,28,0,41,0,4,0,42,0,
7,0,18,0,30,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,
31,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,32,0,5,0,
20,0,22,0,13,0,44,0,14,0,45,0,4,0,46,0,0,0,47,0,
33,0,24,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
18,0,52,0,18,0,53,0,14,0,54,0,14,0,55,0,14,0,56,0,
8,0,57,0,8,0,58,0,8,0,59,0,8,0,60,0,8,0,61,0,
8,0,62,0,8,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,0,0,14,0,
34,0,23,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
17,0,52,0,17,0,53,0,13,0,54,0,13,0,55,0,13,0,56,0,
7,0,57,0,7,0,58,0,7,0,59,0,7,0,60,0,7,0,61,0,
7,0,62,0,7,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,35,0,21,0,
34,0,71,0,15,0,72,0,13,0,73,0,13,0,74,0,13,0,75,0,
13,0,76,0,13,0,77,0,13,0,78,0,13,0,79,0,13,0,80,0,
13,0,81,0,7,0,82,0,7,0,83,0,7,0,84,0,7,0,85,0,
7,0,86,0,7,0,87,0,7,0,88,0,7,0,89,0,7,0,90,0,
4,0,91,0,36,0,22,0,33,0,71,0,16,0,72,0,14,0,73,0,
14,0,74,0,14,0,75,0,14,0,76,0,14,0,77,0,14,0,78,0,
14,0,79,0,14,0,80,0,14,0,81,0,8,0,82,0,8,0,83,0,
8,0,84,0,8,0,85,0,8,0,86,0,8,0,87,0,8,0,88,0,
8,0,89,0,8,0,90,0,4,0,91,0,0,0,14,0,};
97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,113,
114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,97,
114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95,108,105,110,
101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,100,
0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110,103,84,104,
114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111,110,97,108,
68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,115,116,114,97,
105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,98,65,0,42,
109,95,114,98,66,0,109,95,97,112,112,108,105,101,100,76,105,110,101,97,
114,73,109,112,117,108,115,101,0,109,95,97,112,112,108,105,101,100,65,110,
103,117,108,97,114,73,109,112,117,108,115,101,65,0,109,95,97,112,112,108,
105,101,100,65,110,103,117,108,97,114,73,109,112,117,108,115,101,66,0,109,
95,111,98,106,101,99,116,84,121,112,101,0,109,95,117,115,101,114,67,111,
110,115,116,114,97,105,110,116,84,121,112,101,0,109,95,117,115,101,114,67,
111,110,115,116,114,97,105,110,116,73,100,0,109,95,110,101,101,100,115,70,
101,101,100,98,97,99,107,0,109,95,97,112,112,108,105,101,100,73,109,112,
117,108,115,101,0,109,95,100,98,103,68,114,97,119,83,105,122,101,0,109,
95,100,105,115,97,98,108,101,67,111,108,108,105,115,105,111,110,115,66,101,
116,119,101,101,110,76,105,110,107,101,100,66,111,100,105,101,115,0,109,95,
116,121,112,101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109,
95,112,105,118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66,
0,109,95,114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97,
109,101,0,109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97,
109,101,65,0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95,
101,110,97,98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109,
95,109,111,116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121,
0,109,95,109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109,
95,108,111,119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76,
105,109,105,116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115,
0,109,95,98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97,
120,97,116,105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103,
83,112,97,110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109,
95,116,119,105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103,
0,109,95,108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0,
109,95,108,105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109,
95,97,110,103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109,
95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109,
95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70,
114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114,
67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,84,89,80,69,
48,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,
0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,
110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,
0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115,
105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98,
116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116,
86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116,
77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98,
116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97,
0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116,
97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68,
97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,
68,97,116,97,0,98,116,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,77,101,115,104,80,97,
114,116,68,97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,
104,73,110,116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,
97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,
116,67,111,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,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,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,16,0,56,0,56,0,20,0,72,0,4,0,4,0,40,0,32,0,
56,0,80,0,32,0,64,0,64,0,80,0,-40,1,8,1,-16,1,-88,3,
8,0,96,0,0,0,-128,0,-96,0,-120,1,8,1,0,1,40,1,-8,0,
83,84,82,67,37,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,
9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,
12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,
14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,
14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,
16,0,10,0,14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,
0,0,14,0,20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,
7,0,18,0,0,0,19,0,21,0,5,0,19,0,15,0,13,0,16,0,
13,0,20,0,7,0,21,0,4,0,22,0,22,0,2,0,13,0,23,0,
7,0,24,0,23,0,4,0,21,0,25,0,22,0,26,0,4,0,27,0,
0,0,14,0,24,0,1,0,4,0,28,0,25,0,2,0,2,0,29,0,
2,0,28,0,26,0,6,0,13,0,30,0,14,0,31,0,24,0,32,0,
25,0,33,0,4,0,34,0,4,0,35,0,27,0,4,0,26,0,36,0,
13,0,37,0,4,0,38,0,0,0,14,0,28,0,4,0,19,0,15,0,
27,0,39,0,7,0,21,0,0,0,14,0,29,0,4,0,17,0,40,0,
19,0,41,0,4,0,42,0,7,0,43,0,30,0,4,0,19,0,15,0,
29,0,44,0,4,0,45,0,7,0,21,0,31,0,3,0,21,0,25,0,
4,0,46,0,0,0,14,0,32,0,3,0,21,0,25,0,4,0,46,0,
0,0,14,0,33,0,5,0,21,0,25,0,13,0,47,0,14,0,48,0,
4,0,49,0,0,0,50,0,34,0,24,0,9,0,51,0,9,0,52,0,
19,0,53,0,9,0,54,0,18,0,55,0,18,0,56,0,14,0,57,0,
14,0,58,0,14,0,59,0,8,0,60,0,8,0,61,0,8,0,62,0,
8,0,63,0,8,0,64,0,8,0,65,0,8,0,66,0,4,0,67,0,
4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
4,0,73,0,0,0,14,0,35,0,23,0,9,0,51,0,9,0,52,0,
19,0,53,0,9,0,54,0,17,0,55,0,17,0,56,0,13,0,57,0,
13,0,58,0,13,0,59,0,7,0,60,0,7,0,61,0,7,0,62,0,
7,0,63,0,7,0,64,0,7,0,65,0,7,0,66,0,4,0,67,0,
4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
4,0,73,0,36,0,21,0,35,0,74,0,15,0,75,0,13,0,76,0,
13,0,77,0,13,0,78,0,13,0,79,0,13,0,80,0,13,0,81,0,
13,0,82,0,13,0,83,0,13,0,84,0,7,0,85,0,7,0,86,0,
7,0,87,0,7,0,88,0,7,0,89,0,7,0,90,0,7,0,91,0,
7,0,92,0,7,0,93,0,4,0,94,0,37,0,22,0,34,0,74,0,
16,0,75,0,14,0,76,0,14,0,77,0,14,0,78,0,14,0,79,0,
14,0,80,0,14,0,81,0,14,0,82,0,14,0,83,0,14,0,84,0,
8,0,85,0,8,0,86,0,8,0,87,0,8,0,88,0,8,0,89,0,
8,0,90,0,8,0,91,0,8,0,92,0,8,0,93,0,4,0,94,0,
0,0,14,0,38,0,2,0,4,0,95,0,4,0,96,0,39,0,13,0,
40,0,97,0,40,0,98,0,13,0,99,0,13,0,100,0,13,0,101,0,
4,0,102,0,4,0,103,0,4,0,104,0,4,0,105,0,7,0,106,0,
7,0,107,0,4,0,108,0,0,0,19,0,41,0,3,0,39,0,109,0,
13,0,110,0,13,0,111,0,42,0,3,0,39,0,109,0,14,0,110,0,
14,0,111,0,43,0,13,0,39,0,109,0,18,0,112,0,18,0,113,0,
4,0,114,0,4,0,115,0,4,0,116,0,7,0,117,0,7,0,118,0,
7,0,119,0,7,0,120,0,7,0,121,0,7,0,122,0,7,0,123,0,
44,0,13,0,39,0,109,0,17,0,112,0,17,0,113,0,4,0,114,0,
4,0,115,0,4,0,116,0,7,0,117,0,7,0,118,0,7,0,119,0,
7,0,120,0,7,0,121,0,7,0,122,0,7,0,123,0,45,0,11,0,
39,0,109,0,17,0,112,0,17,0,113,0,7,0,124,0,7,0,125,0,
7,0,126,0,7,0,121,0,7,0,122,0,7,0,123,0,7,0,127,0,
0,0,19,0,46,0,9,0,39,0,109,0,17,0,112,0,17,0,113,0,
13,0,-128,0,13,0,-127,0,13,0,-126,0,13,0,-125,0,4,0,-124,0,
4,0,-123,0,47,0,9,0,39,0,109,0,17,0,112,0,17,0,113,0,
7,0,-128,0,7,0,-127,0,7,0,-126,0,7,0,-125,0,4,0,-124,0,
4,0,-123,0,};
int sBulletDNAlen64= sizeof(sBulletDNAstr64);
unsigned char sBulletDNAstr[]= {
83,68,78,65,78,65,77,69,92,0,0,0,109,95,115,105,122,101,0,109,
83,68,78,65,78,65,77,69,-122,0,0,0,109,95,115,105,122,101,0,109,
95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95,
99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111,
108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110,
@ -165,147 +233,216 @@ unsigned char sBulletDNAstr[]= {
109,95,117,115,101,114,80,111,105,110,116,101,114,0,109,95,115,104,97,112,
101,84,121,112,101,0,109,95,112,97,100,100,105,110,103,91,52,93,0,109,
95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,
109,95,108,111,99,97,108,83,99,97,108,105,110,103,0,109,95,105,109,112,
108,105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115,
0,109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109,
95,112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100,
105,117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108,
83,104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111,
115,105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99,
97,108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0,
109,95,118,97,108,117,101,0,105,110,116,0,42,109,95,118,101,114,116,105,
99,101,115,51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,
42,109,95,105,110,100,105,99,101,115,51,50,0,42,109,95,105,110,100,105,
99,101,115,49,54,0,109,95,110,117,109,84,114,105,97,110,103,108,101,115,
0,109,95,110,117,109,86,101,114,116,105,99,101,115,0,42,109,95,109,101,
115,104,80,97,114,116,115,80,116,114,0,109,95,115,99,97,108,105,110,103,
0,109,95,110,117,109,77,101,115,104,80,97,114,116,115,0,109,95,109,101,
115,104,73,110,116,101,114,102,97,99,101,0,109,95,116,114,97,110,115,102,
111,114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101,0,109,95,
99,104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95,99,104,105,
108,100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100,83,104,97,
112,101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83,104,97,112,
101,115,0,109,95,117,112,65,120,105,115,0,42,109,95,117,110,115,99,97,
108,101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114,0,42,109,
95,117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111,117,98,108,
101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101,100,80,111,
105,110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,
109,95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,
109,95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,
114,111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,
109,95,117,115,101,114,79,98,106,101,99,116,80,111,105,110,116,101,114,0,
109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109,95,105,
110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84,114,97,
110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97,116,105,
111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109,95,105,
110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97,114,86,
101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111,112,105,
99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99,116,80,
114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100,0,109,
95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0,109,95,
102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117,116,105,
111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109,95,99,
99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117,115,0,
109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111,108,100,
0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70,114,105,
99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70,108,97,
103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,111,
109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,105,
111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97,108,84,
121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101,87,105,
116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101,99,116,
68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84,101,110,
115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86,101,108,
111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108,111,99,
105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0,
109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97,
118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108,
101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97,
76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109,
95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118,101,114,
115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109,112,105,
110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110,103,0,
109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110,103,70,
97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108,76,105,
110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,
83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,
108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,
109,95,108,111,99,97,108,83,99,97,108,105,110,103,0,109,95,112,108,97,
110,101,78,111,114,109,97,108,0,109,95,112,108,97,110,101,67,111,110,115,
116,97,110,116,0,109,95,112,97,100,91,52,93,0,109,95,105,109,112,108,
105,99,105,116,83,104,97,112,101,68,105,109,101,110,115,105,111,110,115,0,
109,95,99,111,108,108,105,115,105,111,110,77,97,114,103,105,110,0,109,95,
112,97,100,100,105,110,103,0,109,95,112,111,115,0,109,95,114,97,100,105,
117,115,0,109,95,99,111,110,118,101,120,73,110,116,101,114,110,97,108,83,
104,97,112,101,68,97,116,97,0,42,109,95,108,111,99,97,108,80,111,115,
105,116,105,111,110,65,114,114,97,121,80,116,114,0,109,95,108,111,99,97,
108,80,111,115,105,116,105,111,110,65,114,114,97,121,83,105,122,101,0,109,
95,118,97,108,117,101,0,105,110,116,0,42,109,95,118,101,114,116,105,99,
101,115,51,102,0,42,109,95,118,101,114,116,105,99,101,115,51,100,0,42,
109,95,105,110,100,105,99,101,115,51,50,0,42,109,95,105,110,100,105,99,
101,115,49,54,0,109,95,110,117,109,84,114,105,97,110,103,108,101,115,0,
109,95,110,117,109,86,101,114,116,105,99,101,115,0,42,109,95,109,101,115,
104,80,97,114,116,115,80,116,114,0,109,95,115,99,97,108,105,110,103,0,
109,95,110,117,109,77,101,115,104,80,97,114,116,115,0,109,95,109,101,115,
104,73,110,116,101,114,102,97,99,101,0,109,95,116,114,97,110,115,102,111,
114,109,0,42,109,95,99,104,105,108,100,83,104,97,112,101,0,109,95,99,
104,105,108,100,83,104,97,112,101,84,121,112,101,0,109,95,99,104,105,108,
100,77,97,114,103,105,110,0,42,109,95,99,104,105,108,100,83,104,97,112,
101,80,116,114,0,109,95,110,117,109,67,104,105,108,100,83,104,97,112,101,
115,0,109,95,117,112,65,120,105,115,0,42,109,95,117,110,115,99,97,108,
101,100,80,111,105,110,116,115,70,108,111,97,116,80,116,114,0,42,109,95,
117,110,115,99,97,108,101,100,80,111,105,110,116,115,68,111,117,98,108,101,
80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101,100,80,111,105,
110,116,115,0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,109,
95,98,114,111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,109,
95,99,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,114,
111,111,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,
95,117,115,101,114,79,98,106,101,99,116,80,111,105,110,116,101,114,0,109,
95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,109,95,105,110,
116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,84,114,97,110,
115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,97,116,105,111,
110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,109,95,105,110,
116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,97,114,86,101,
108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,111,112,105,99,
70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,99,116,80,114,
111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,100,0,109,95,
100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,0,109,95,102,
114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,117,116,105,111,
110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,109,95,99,99,
100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,117,115,0,109,
95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,111,108,100,0,
109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,70,114,105,99,
116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,70,108,97,103,
115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,111,109,
112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,105,111,
110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,97,108,84,121,
112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,101,87,105,116,
104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,
97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,84,101,110,115,
111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86,101,108,111,
99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108,111,99,105,
116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0,109,
95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97,118,
105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108,101,
114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97,76,
111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109,95,
116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,118,101,114,115,
101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,109,112,105,110,
103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110,103,0,109,
95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110,103,70,97,
99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108,76,105,110,
101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,
113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,
97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95,108,105,
110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,
100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110,103,84,
104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111,110,97,
108,68,97,109,112,105,110,103,0,0,0,0,84,89,80,69,37,0,0,0,
99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,0,117,115,104,
111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,110,103,0,102,
108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105,
110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115,105,99,115,83,
121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98,116,86,101,99,
116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116,86,101,99,116,
111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116,77,97,116,114,
105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98,116,77,97,116,
114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97,0,98,116,84,
114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116,97,0,98,116,
84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68,97,116,97,0,
98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,
0,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,
112,101,68,97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,
82,97,100,105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,
83,104,97,112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,
68,97,116,97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,
68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,
98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,
97,99,101,68,97,116,97,0,98,116,84,114,105,97,110,103,108,101,77,101,
115,104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,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,67,111,
110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,98,116,
67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,111,117,98,108,
101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,
101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,
66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,
100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0,84,76,69,78,
1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,
12,0,36,0,8,0,16,0,32,0,48,0,96,0,64,0,-128,0,12,0,
52,0,20,0,64,0,4,0,4,0,24,0,28,0,48,0,76,0,24,0,
60,0,60,0,68,0,-56,1,-8,0,-32,1,-104,3,0,0,83,84,82,67,
27,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,9,0,2,0,
11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,12,0,2,0,
9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,14,0,1,0,
8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,14,0,9,0,
17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,16,0,10,0,
14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,0,0,14,0,
20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,7,0,18,0,
4,0,19,0,21,0,2,0,13,0,20,0,7,0,21,0,22,0,4,0,
20,0,22,0,21,0,23,0,4,0,24,0,0,0,14,0,23,0,1,0,
4,0,25,0,24,0,2,0,2,0,26,0,2,0,25,0,25,0,6,0,
13,0,27,0,14,0,28,0,23,0,29,0,24,0,30,0,4,0,31,0,
4,0,32,0,26,0,4,0,25,0,33,0,13,0,34,0,4,0,35,0,
0,0,14,0,27,0,4,0,19,0,15,0,26,0,36,0,7,0,18,0,
0,0,14,0,28,0,4,0,17,0,37,0,19,0,38,0,4,0,39,0,
7,0,40,0,29,0,4,0,19,0,15,0,28,0,41,0,4,0,42,0,
7,0,18,0,30,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,
31,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,32,0,5,0,
20,0,22,0,13,0,44,0,14,0,45,0,4,0,46,0,0,0,47,0,
33,0,24,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
18,0,52,0,18,0,53,0,14,0,54,0,14,0,55,0,14,0,56,0,
8,0,57,0,8,0,58,0,8,0,59,0,8,0,60,0,8,0,61,0,
8,0,62,0,8,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,0,0,14,0,
34,0,23,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
17,0,52,0,17,0,53,0,13,0,54,0,13,0,55,0,13,0,56,0,
7,0,57,0,7,0,58,0,7,0,59,0,7,0,60,0,7,0,61,0,
7,0,62,0,7,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,35,0,21,0,
34,0,71,0,15,0,72,0,13,0,73,0,13,0,74,0,13,0,75,0,
13,0,76,0,13,0,77,0,13,0,78,0,13,0,79,0,13,0,80,0,
13,0,81,0,7,0,82,0,7,0,83,0,7,0,84,0,7,0,85,0,
7,0,86,0,7,0,87,0,7,0,88,0,7,0,89,0,7,0,90,0,
4,0,91,0,36,0,22,0,33,0,71,0,16,0,72,0,14,0,73,0,
14,0,74,0,14,0,75,0,14,0,76,0,14,0,77,0,14,0,78,0,
14,0,79,0,14,0,80,0,14,0,81,0,8,0,82,0,8,0,83,0,
8,0,84,0,8,0,85,0,8,0,86,0,8,0,87,0,8,0,88,0,
8,0,89,0,8,0,90,0,4,0,91,0,0,0,14,0,};
97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,113,
114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,97,
114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95,108,105,110,
101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,100,
0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110,103,84,104,
114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,111,110,97,108,
68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,115,116,114,97,
105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,98,65,0,42,
109,95,114,98,66,0,109,95,97,112,112,108,105,101,100,76,105,110,101,97,
114,73,109,112,117,108,115,101,0,109,95,97,112,112,108,105,101,100,65,110,
103,117,108,97,114,73,109,112,117,108,115,101,65,0,109,95,97,112,112,108,
105,101,100,65,110,103,117,108,97,114,73,109,112,117,108,115,101,66,0,109,
95,111,98,106,101,99,116,84,121,112,101,0,109,95,117,115,101,114,67,111,
110,115,116,114,97,105,110,116,84,121,112,101,0,109,95,117,115,101,114,67,
111,110,115,116,114,97,105,110,116,73,100,0,109,95,110,101,101,100,115,70,
101,101,100,98,97,99,107,0,109,95,97,112,112,108,105,101,100,73,109,112,
117,108,115,101,0,109,95,100,98,103,68,114,97,119,83,105,122,101,0,109,
95,100,105,115,97,98,108,101,67,111,108,108,105,115,105,111,110,115,66,101,
116,119,101,101,110,76,105,110,107,101,100,66,111,100,105,101,115,0,109,95,
116,121,112,101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109,
95,112,105,118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66,
0,109,95,114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97,
109,101,0,109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97,
109,101,65,0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95,
101,110,97,98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109,
95,109,111,116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121,
0,109,95,109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109,
95,108,111,119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76,
105,109,105,116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115,
0,109,95,98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97,
120,97,116,105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103,
83,112,97,110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109,
95,116,119,105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103,
0,109,95,108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0,
109,95,108,105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109,
95,97,110,103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109,
95,97,110,103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109,
95,117,115,101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70,
114,97,109,101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114,
67,111,110,115,116,114,97,105,110,116,70,114,97,109,101,0,84,89,80,69,
48,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,
0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,
110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,
0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115,
105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98,
116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116,
86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116,
77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98,
116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97,
0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116,
97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68,
97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,
68,97,116,97,0,98,116,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,77,101,115,104,80,97,
114,116,68,97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115,
104,73,110,116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105,
97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,
116,67,111,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,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,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,12,0,52,0,52,0,20,0,64,0,4,0,4,0,24,0,28,0,
48,0,76,0,24,0,60,0,60,0,68,0,-56,1,-8,0,-32,1,-104,3,
8,0,88,0,0,0,120,0,-104,0,-128,1,0,1,-8,0,32,1,-16,0,
83,84,82,67,37,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,
9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,
12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,
14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,
14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,
16,0,10,0,14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,
0,0,14,0,20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,
7,0,18,0,0,0,19,0,21,0,5,0,19,0,15,0,13,0,16,0,
13,0,20,0,7,0,21,0,4,0,22,0,22,0,2,0,13,0,23,0,
7,0,24,0,23,0,4,0,21,0,25,0,22,0,26,0,4,0,27,0,
0,0,14,0,24,0,1,0,4,0,28,0,25,0,2,0,2,0,29,0,
2,0,28,0,26,0,6,0,13,0,30,0,14,0,31,0,24,0,32,0,
25,0,33,0,4,0,34,0,4,0,35,0,27,0,4,0,26,0,36,0,
13,0,37,0,4,0,38,0,0,0,14,0,28,0,4,0,19,0,15,0,
27,0,39,0,7,0,21,0,0,0,14,0,29,0,4,0,17,0,40,0,
19,0,41,0,4,0,42,0,7,0,43,0,30,0,4,0,19,0,15,0,
29,0,44,0,4,0,45,0,7,0,21,0,31,0,3,0,21,0,25,0,
4,0,46,0,0,0,14,0,32,0,3,0,21,0,25,0,4,0,46,0,
0,0,14,0,33,0,5,0,21,0,25,0,13,0,47,0,14,0,48,0,
4,0,49,0,0,0,50,0,34,0,24,0,9,0,51,0,9,0,52,0,
19,0,53,0,9,0,54,0,18,0,55,0,18,0,56,0,14,0,57,0,
14,0,58,0,14,0,59,0,8,0,60,0,8,0,61,0,8,0,62,0,
8,0,63,0,8,0,64,0,8,0,65,0,8,0,66,0,4,0,67,0,
4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
4,0,73,0,0,0,14,0,35,0,23,0,9,0,51,0,9,0,52,0,
19,0,53,0,9,0,54,0,17,0,55,0,17,0,56,0,13,0,57,0,
13,0,58,0,13,0,59,0,7,0,60,0,7,0,61,0,7,0,62,0,
7,0,63,0,7,0,64,0,7,0,65,0,7,0,66,0,4,0,67,0,
4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
4,0,73,0,36,0,21,0,35,0,74,0,15,0,75,0,13,0,76,0,
13,0,77,0,13,0,78,0,13,0,79,0,13,0,80,0,13,0,81,0,
13,0,82,0,13,0,83,0,13,0,84,0,7,0,85,0,7,0,86,0,
7,0,87,0,7,0,88,0,7,0,89,0,7,0,90,0,7,0,91,0,
7,0,92,0,7,0,93,0,4,0,94,0,37,0,22,0,34,0,74,0,
16,0,75,0,14,0,76,0,14,0,77,0,14,0,78,0,14,0,79,0,
14,0,80,0,14,0,81,0,14,0,82,0,14,0,83,0,14,0,84,0,
8,0,85,0,8,0,86,0,8,0,87,0,8,0,88,0,8,0,89,0,
8,0,90,0,8,0,91,0,8,0,92,0,8,0,93,0,4,0,94,0,
0,0,14,0,38,0,2,0,4,0,95,0,4,0,96,0,39,0,13,0,
40,0,97,0,40,0,98,0,13,0,99,0,13,0,100,0,13,0,101,0,
4,0,102,0,4,0,103,0,4,0,104,0,4,0,105,0,7,0,106,0,
7,0,107,0,4,0,108,0,0,0,19,0,41,0,3,0,39,0,109,0,
13,0,110,0,13,0,111,0,42,0,3,0,39,0,109,0,14,0,110,0,
14,0,111,0,43,0,13,0,39,0,109,0,18,0,112,0,18,0,113,0,
4,0,114,0,4,0,115,0,4,0,116,0,7,0,117,0,7,0,118,0,
7,0,119,0,7,0,120,0,7,0,121,0,7,0,122,0,7,0,123,0,
44,0,13,0,39,0,109,0,17,0,112,0,17,0,113,0,4,0,114,0,
4,0,115,0,4,0,116,0,7,0,117,0,7,0,118,0,7,0,119,0,
7,0,120,0,7,0,121,0,7,0,122,0,7,0,123,0,45,0,11,0,
39,0,109,0,17,0,112,0,17,0,113,0,7,0,124,0,7,0,125,0,
7,0,126,0,7,0,121,0,7,0,122,0,7,0,123,0,7,0,127,0,
0,0,19,0,46,0,9,0,39,0,109,0,17,0,112,0,17,0,113,0,
13,0,-128,0,13,0,-127,0,13,0,-126,0,13,0,-125,0,4,0,-124,0,
4,0,-123,0,47,0,9,0,39,0,109,0,17,0,112,0,17,0,113,0,
7,0,-128,0,7,0,-127,0,7,0,-126,0,7,0,-125,0,4,0,-124,0,
4,0,-123,0,};
int sBulletDNAlen= sizeof(sBulletDNAstr);

View File

@ -72,6 +72,7 @@ public:
#define BT_COLLISIONOBJECT_CODE MAKE_ID('C','O','B','J')
#define BT_RIGIDBODY_CODE MAKE_ID('R','B','D','Y')
#define BT_CONSTRAINT_CODE MAKE_ID('C','O','N','S')
#define BT_BOXSHAPE_CODE MAKE_ID('B','O','X','S')
#define BT_SHAPE_CODE MAKE_ID('S','H','A','P')
#define BT_ARRAY_CODE MAKE_ID('A','R','A','Y')
@ -268,18 +269,18 @@ public:
if (VOID_IS_8)
{
//#if _WIN64
#if _WIN64
initDNA((const char*)sBulletDNAstr64,sBulletDNAlen64);
//#else
// btAssert(0);
//#endif
#else
btAssert(0);
#endif
} else
{
//#ifndef _WIN64
#ifndef _WIN64
initDNA((const char*)sBulletDNAstr,sBulletDNAlen);
//#else
// btAssert(0);
//#endif
#else
btAssert(0);
#endif
}
}