diff --git a/CMakeLists.txt b/CMakeLists.txt index 22b5a2452..4346682ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/Demos/Benchmarks/BenchmarkDemo.cpp b/Demos/Benchmarks/BenchmarkDemo.cpp index 9b476b01c..0786947ab 100644 --- a/Demos/Benchmarks/BenchmarkDemo.cpp +++ b/Demos/Benchmarks/BenchmarkDemo.cpp @@ -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 diff --git a/Demos/Benchmarks/BenchmarkDemo.h b/Demos/Benchmarks/BenchmarkDemo.h index e64ffc4f8..64d766248 100644 --- a/Demos/Benchmarks/BenchmarkDemo.h +++ b/Demos/Benchmarks/BenchmarkDemo.h @@ -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 diff --git a/Demos/Benchmarks/CMakeLists.txt b/Demos/Benchmarks/CMakeLists.txt index 4e7146084..409622842 100644 --- a/Demos/Benchmarks/CMakeLists.txt +++ b/Demos/Benchmarks/CMakeLists.txt @@ -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) \ No newline at end of file +ENDIF (USE_GRAPHICAL_BENCHMARK) \ No newline at end of file diff --git a/Demos/Benchmarks/Win32BenchmarkDemo.cpp b/Demos/Benchmarks/Win32BenchmarkDemo.cpp new file mode 100644 index 000000000..092bb0f62 --- /dev/null +++ b/Demos/Benchmarks/Win32BenchmarkDemo.cpp @@ -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 diff --git a/Demos/ConstraintDemo/ConstraintDemo.cpp b/Demos/ConstraintDemo/ConstraintDemo.cpp index b11653cfd..56c158067 100644 --- a/Demos/ConstraintDemo/ConstraintDemo.cpp +++ b/Demos/ConstraintDemo/ConstraintDemo.cpp @@ -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; diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h index fd060227b..ff1538ddc 100644 --- a/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h @@ -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__ \ No newline at end of file diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h index 744fb6201..16e430411 100644 --- a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_Common.h @@ -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__ \ No newline at end of file diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCapsuleShapeData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCapsuleShapeData.h new file mode 100644 index 000000000..f2ef2f682 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCapsuleShapeData.h @@ -0,0 +1,42 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCompoundShapeChildData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCompoundShapeChildData.h new file mode 100644 index 000000000..2a678c75d --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCompoundShapeChildData.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCompoundShapeData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCompoundShapeData.h new file mode 100644 index 000000000..dc8af53a0 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCompoundShapeData.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btConeTwistConstraintData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btConeTwistConstraintData.h new file mode 100644 index 000000000..eb68e34e6 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btConeTwistConstraintData.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btConstraintInfo1.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btConstraintInfo1.h new file mode 100644 index 000000000..bff46b275 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btConstraintInfo1.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCylinderShapeData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCylinderShapeData.h new file mode 100644 index 000000000..4b92272b2 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btCylinderShapeData.h @@ -0,0 +1,42 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btGeneric6DofConstraintData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btGeneric6DofConstraintData.h new file mode 100644 index 000000000..e66043d8f --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btGeneric6DofConstraintData.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btHingeConstraintDoubleData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btHingeConstraintDoubleData.h new file mode 100644 index 000000000..05c249a39 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btHingeConstraintDoubleData.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btHingeConstraintFloatData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btHingeConstraintFloatData.h new file mode 100644 index 000000000..c2d516f30 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btHingeConstraintFloatData.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btPoint2PointConstraintDoubleData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btPoint2PointConstraintDoubleData.h new file mode 100644 index 000000000..0ee9267d5 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btPoint2PointConstraintDoubleData.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btPoint2PointConstraintFloatData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btPoint2PointConstraintFloatData.h new file mode 100644 index 000000000..746dafdba --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btPoint2PointConstraintFloatData.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2006-2009 Erwin Coumans & Charlie C +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would be +* appreciated but is not required. +* 2. Altered source versions must be plainly marked as such, and must not be +* misrepresented as being the original software. +* 3. This notice may not be removed or altered from any source distribution. +*/ +// Auto generated from makesdna dna.c +#ifndef __BULLET_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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btSliderConstraintData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btSliderConstraintData.h new file mode 100644 index 000000000..5d755cbdc --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btSliderConstraintData.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btStaticPlaneShapeData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btStaticPlaneShapeData.h new file mode 100644 index 000000000..2eb7c57ac --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btStaticPlaneShapeData.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btTypedConstraintData.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btTypedConstraintData.h new file mode 100644 index 000000000..fdb613b28 --- /dev/null +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet_btTypedConstraintData.h @@ -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__ diff --git a/Extras/Serialize/BulletFileLoader/bFile.cpp b/Extras/Serialize/BulletFileLoader/bFile.cpp index 0b16573ef..4e898e049 100644 --- a/Extras/Serialize/BulletFileLoader/bFile.cpp +++ b/Extras/Serialize/BulletFileLoader/bFile.cpp @@ -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; diff --git a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp index d65bac230..cfae869ea 100644 --- a/Extras/Serialize/BulletFileLoader/btBulletFile.cpp +++ b/Extras/Serialize/BulletFileLoader/btBulletFile.cpp @@ -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); diff --git a/Extras/Serialize/BulletFileLoader/btBulletFile.h b/Extras/Serialize/BulletFileLoader/btBulletFile.h index c9f2de655..d171e7c85 100644 --- a/Extras/Serialize/BulletFileLoader/btBulletFile.h +++ b/Extras/Serialize/BulletFileLoader/btBulletFile.h @@ -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 m_collisionShapes; + btAlignedObjectArray m_constraints; + btBulletFile(); btBulletFile(const char* fileName); diff --git a/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp index 7053b89b9..6afa4ceea 100644 --- a/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp +++ b/Extras/Serialize/BulletWorldImporter/btBulletWorldImporter.cpp @@ -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 bodyMap; + for (i=0;im_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;im_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; } diff --git a/Extras/Serialize/makesdna/makesdna.cpp b/Extras/Serialize/makesdna/makesdna.cpp index c9448dd55..0a5ba9e7b 100644 --- a/Extras/Serialize/makesdna/makesdna.cpp +++ b/Extras/Serialize/makesdna/makesdna.cpp @@ -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", "" }; diff --git a/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h b/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h index 2b5d4b338..fd458891e 100644 --- a/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h +++ b/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h @@ -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 diff --git a/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h b/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h index db1e061db..fa1e69b56 100644 --- a/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h @@ -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 diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h index bcff31d8b..e13ea638b 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h @@ -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 diff --git a/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h b/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h index a89718c23..6d03254c2 100644 --- a/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h @@ -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 diff --git a/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h b/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h index dcc194068..a530c8e8d 100644 --- a/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h @@ -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 diff --git a/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h b/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h index c8f76b483..25421e412 100755 --- a/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h @@ -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 diff --git a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp index 235be5871..1fa9723ab 100644 --- a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp @@ -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;im_disableCollisionsBetweenLinkedBodies = true; + for (i=0;im_disableCollisionsBetweenLinkedBodies = true; + + return "btTypedConstraintData"; +} + diff --git a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h index 42779987b..33deacd85 100644 --- a/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h +++ b/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h @@ -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 diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp index 97412d428..024d66861 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp @@ -1094,6 +1094,15 @@ void btDiscreteDynamicsWorld::serializeRigidBodies(btSerializer* serializer) serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,colObj); } } + + for (i=0;icalculateSerializeBufferSize(); + btChunk* chunk = serializer->allocate(size,1); + const char* structType = constraint->serialize(chunk->m_oldPtr,serializer); + serializer->finalizeChunk(chunk,structType,BT_CONSTRAINT_CODE,constraint); + } } diff --git a/src/LinearMath/btSerializer.cpp b/src/LinearMath/btSerializer.cpp index 74b3f1367..7b4a5de35 100644 --- a/src/LinearMath/btSerializer.cpp +++ b/src/LinearMath/btSerializer.cpp @@ -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); diff --git a/src/LinearMath/btSerializer.h b/src/LinearMath/btSerializer.h index ded3f3898..bac0e8e30 100644 --- a/src/LinearMath/btSerializer.h +++ b/src/LinearMath/btSerializer.h @@ -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 } }