added serialization support for btCompoundShape, btCapsuleShapeX/Z, btCylinderShapeX,Z
make some serialization methods const prepare for constraint serialization
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
SUBDIRS( OpenGL BasicDemo Benchmarks Box2dDemo ConvexDecompositionDemo SerializeDemo )
|
SUBDIRS( OpenGL BasicDemo Benchmarks Box2dDemo ConstraintDemo ConvexDecompositionDemo SerializeDemo )
|
||||||
|
|
||||||
|
|
||||||
#todo: re-enable the rest of the demos again
|
#todo: re-enable the rest of the demos again
|
||||||
|
|||||||
@@ -12,15 +12,35 @@
|
|||||||
|
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(
|
INCLUDE_DIRECTORIES(
|
||||||
${BULLET_PHYSICS_SOURCE_DIR}/src ${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL
|
${BULLET_PHYSICS_SOURCE_DIR}/src
|
||||||
|
${BULLET_PHYSICS_SOURCE_DIR}/Demos/OpenGL
|
||||||
|
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader
|
||||||
|
${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter
|
||||||
)
|
)
|
||||||
|
|
||||||
LINK_LIBRARIES(
|
|
||||||
OpenGLSupport BulletDynamics BulletCollision LinearMath ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
|
|
||||||
)
|
|
||||||
|
|
||||||
ADD_EXECUTABLE(AppConstraintDemo
|
|
||||||
|
|
||||||
|
|
||||||
|
IF (USE_GLUT)
|
||||||
|
LINK_LIBRARIES(
|
||||||
|
OpenGLSupport BulletWorldImporter BulletDynamics BulletCollision LinearMath BulletFileLoader ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
|
||||||
|
)
|
||||||
|
|
||||||
|
ADD_EXECUTABLE(AppConstraintDemo
|
||||||
|
ConstraintDemo.cpp
|
||||||
|
main.cpp
|
||||||
|
)
|
||||||
|
ELSE (USE_GLUT)
|
||||||
|
LINK_LIBRARIES(
|
||||||
|
OpenGLSupport BulletWorldImporter BulletDynamics BulletCollision LinearMath BulletFileLoader ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}
|
||||||
|
)
|
||||||
|
|
||||||
|
ADD_EXECUTABLE(AppConstraintDemo
|
||||||
|
WIN32
|
||||||
|
../OpenGL/Win32AppMain.cpp
|
||||||
|
Win32ConstraintDemo.cpp
|
||||||
ConstraintDemo.cpp
|
ConstraintDemo.cpp
|
||||||
main.cpp
|
ConstraintDemo.h
|
||||||
)
|
)
|
||||||
|
ENDIF (USE_GLUT)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ subject to the following restrictions:
|
|||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//#define TEST_SERIALIZATION 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -28,6 +29,13 @@ subject to the following restrictions:
|
|||||||
#include "GL_ShapeDrawer.h"
|
#include "GL_ShapeDrawer.h"
|
||||||
#include "GlutStuff.h"
|
#include "GlutStuff.h"
|
||||||
|
|
||||||
|
#ifdef TEST_SERIALIZATION
|
||||||
|
#include "LinearMath/btSerializer.h"
|
||||||
|
#include "btBulletFile.h"
|
||||||
|
#include "btBulletWorldImporter.h"
|
||||||
|
#endif //TEST_SERIALIZATION
|
||||||
|
|
||||||
|
|
||||||
const int numObjects = 3;
|
const int numObjects = 3;
|
||||||
|
|
||||||
#define ENABLE_ALL_DEMOS 1
|
#define ENABLE_ALL_DEMOS 1
|
||||||
@@ -74,6 +82,15 @@ void drawLimit()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ConstraintDemo::setupEmptyDynamicsWorld()
|
||||||
|
{
|
||||||
|
m_collisionConfiguration = new btDefaultCollisionConfiguration();
|
||||||
|
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
|
||||||
|
m_overlappingPairCache = new btDbvtBroadphase();
|
||||||
|
m_constraintSolver = new btSequentialImpulseConstraintSolver();
|
||||||
|
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_overlappingPairCache,m_constraintSolver,m_collisionConfiguration);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void ConstraintDemo::initPhysics()
|
void ConstraintDemo::initPhysics()
|
||||||
{
|
{
|
||||||
@@ -83,14 +100,7 @@ void ConstraintDemo::initPhysics()
|
|||||||
setCameraDistance(26.f);
|
setCameraDistance(26.f);
|
||||||
m_Time = 0;
|
m_Time = 0;
|
||||||
|
|
||||||
m_collisionConfiguration = new btDefaultCollisionConfiguration();
|
setupEmptyDynamicsWorld();
|
||||||
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
|
|
||||||
btVector3 worldMin(-1000,-1000,-1000);
|
|
||||||
btVector3 worldMax(1000,1000,1000);
|
|
||||||
m_overlappingPairCache = new btAxisSweep3(worldMin,worldMax);
|
|
||||||
m_constraintSolver = new btSequentialImpulseConstraintSolver();
|
|
||||||
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_overlappingPairCache,m_constraintSolver,m_collisionConfiguration);
|
|
||||||
|
|
||||||
|
|
||||||
btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(40.),btScalar(50.)));
|
btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(40.),btScalar(50.)));
|
||||||
m_collisionShapes.push_back(groundShape);
|
m_collisionShapes.push_back(groundShape);
|
||||||
@@ -338,7 +348,7 @@ void ConstraintDemo::initPhysics()
|
|||||||
|
|
||||||
btHingeConstraint* pHinge = new btHingeConstraint( *pBody, btPivotA, btAxisA );
|
btHingeConstraint* pHinge = new btHingeConstraint( *pBody, btPivotA, btAxisA );
|
||||||
// pHinge->enableAngularMotor(true, -1.0, 0.165); // use for the old solver
|
// pHinge->enableAngularMotor(true, -1.0, 0.165); // use for the old solver
|
||||||
pHinge->enableAngularMotor(true, -1.0, 1.65); // use for the new SIMD solver
|
pHinge->enableAngularMotor(true, -1.0f, 1.65f); // use for the new SIMD solver
|
||||||
m_dynamicsWorld->addConstraint(pHinge);
|
m_dynamicsWorld->addConstraint(pHinge);
|
||||||
pHinge->setDbgDrawSize(btScalar(5.f));
|
pHinge->setDbgDrawSize(btScalar(5.f));
|
||||||
}
|
}
|
||||||
@@ -471,13 +481,35 @@ void ConstraintDemo::initPhysics()
|
|||||||
spHingeDynAB->setDbgDrawSize(btScalar(5.f));
|
spHingeDynAB->setDbgDrawSize(btScalar(5.f));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef TEST_SERIALIZATION
|
||||||
|
|
||||||
|
int maxSerializeBufferSize = 1024*1024*5;
|
||||||
|
|
||||||
|
btDefaultSerializer* serializer = new btDefaultSerializer(maxSerializeBufferSize);
|
||||||
|
m_dynamicsWorld->serialize(serializer);
|
||||||
|
|
||||||
|
FILE* f2 = fopen("testFile.bullet","wb");
|
||||||
|
fwrite(serializer->getBufferPointer(),serializer->getCurrentBufferSize(),1,f2);
|
||||||
|
fclose(f2);
|
||||||
|
|
||||||
|
|
||||||
|
exitPhysics();
|
||||||
|
|
||||||
|
setupEmptyDynamicsWorld();
|
||||||
|
|
||||||
|
btBulletWorldImporter* fileLoader = new btBulletWorldImporter(m_dynamicsWorld);
|
||||||
|
|
||||||
|
fileLoader->loadFile("testFile.bullet");
|
||||||
|
|
||||||
|
#endif //TEST_SERIALIZATION
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ConstraintDemo::~ConstraintDemo()
|
void ConstraintDemo::exitPhysics()
|
||||||
{
|
{
|
||||||
//cleanup in the reverse order of creation/initialization
|
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
//removed/delete constraints
|
//removed/delete constraints
|
||||||
for (i=m_dynamicsWorld->getNumConstraints()-1; i>=0 ;i--)
|
for (i=m_dynamicsWorld->getNumConstraints()-1; i>=0 ;i--)
|
||||||
@@ -511,6 +543,8 @@ ConstraintDemo::~ConstraintDemo()
|
|||||||
delete shape;
|
delete shape;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_collisionShapes.clear();
|
||||||
|
|
||||||
//delete dynamics world
|
//delete dynamics world
|
||||||
delete m_dynamicsWorld;
|
delete m_dynamicsWorld;
|
||||||
|
|
||||||
@@ -525,6 +559,13 @@ ConstraintDemo::~ConstraintDemo()
|
|||||||
|
|
||||||
delete m_collisionConfiguration;
|
delete m_collisionConfiguration;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ConstraintDemo::~ConstraintDemo()
|
||||||
|
{
|
||||||
|
//cleanup in the reverse order of creation/initialization
|
||||||
|
|
||||||
|
exitPhysics();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -550,7 +591,7 @@ void ConstraintDemo::clientMoveAndDisplay()
|
|||||||
// build twist target
|
// build twist target
|
||||||
//btQuaternion q2(0,0,0);
|
//btQuaternion q2(0,0,0);
|
||||||
//btQuaternion q2(btVehictor3(1,0,0), -0.3*sin(m_Time));
|
//btQuaternion q2(btVehictor3(1,0,0), -0.3*sin(m_Time));
|
||||||
btQuaternion q2(btVector3(1,0,0), -1.49*sin(1.5*m_Time));
|
btQuaternion q2(btVector3(1,0,0), -1.49f*btSin(1.5f*m_Time));
|
||||||
|
|
||||||
// compose cone + twist and set target
|
// compose cone + twist and set target
|
||||||
q1 = q1 * q2;
|
q1 = q1 * q2;
|
||||||
@@ -558,12 +599,21 @@ void ConstraintDemo::clientMoveAndDisplay()
|
|||||||
m_ctc->setMotorTargetInConstraintSpace(q1);
|
m_ctc->setMotorTargetInConstraintSpace(q1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
static bool once = false;
|
||||||
|
if (m_dynamicsWorld->getDebugDrawer())
|
||||||
|
{
|
||||||
|
m_dynamicsWorld->getDebugDrawer()->setDebugMode(btIDebugDraw::DBG_DrawConstraints+btIDebugDraw::DBG_DrawConstraintLimits);
|
||||||
|
once=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
//during idle mode, just run 1 simulation step maximum
|
//during idle mode, just run 1 simulation step maximum
|
||||||
int maxSimSubSteps = m_idle ? 1 : 1;
|
int maxSimSubSteps = m_idle ? 1 : 1;
|
||||||
if (m_idle)
|
if (m_idle)
|
||||||
dt = 1.0/420.f;
|
dt = 1.0f/420.f;
|
||||||
|
|
||||||
int numSimSteps = m_dynamicsWorld->stepSimulation(dt,maxSimSubSteps);
|
int numSimSteps = m_dynamicsWorld->stepSimulation(dt,maxSimSubSteps);
|
||||||
|
|
||||||
@@ -593,7 +643,7 @@ void ConstraintDemo::clientMoveAndDisplay()
|
|||||||
// drawLimit();
|
// drawLimit();
|
||||||
|
|
||||||
glFlush();
|
glFlush();
|
||||||
glutSwapBuffers();
|
swapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -611,7 +661,7 @@ void ConstraintDemo::displayCallback(void) {
|
|||||||
renderme();
|
renderme();
|
||||||
|
|
||||||
glFlush();
|
glFlush();
|
||||||
glutSwapBuffers();
|
swapBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,16 @@ subject to the following restrictions:
|
|||||||
#ifndef CONSTRAINT_DEMO_H
|
#ifndef CONSTRAINT_DEMO_H
|
||||||
#define CONSTRAINT_DEMO_H
|
#define CONSTRAINT_DEMO_H
|
||||||
|
|
||||||
|
#ifdef _WINDOWS
|
||||||
|
#include "Win32DemoApplication.h"
|
||||||
|
#define PlatformDemoApplication Win32DemoApplication
|
||||||
|
#else
|
||||||
#include "GlutDemoApplication.h"
|
#include "GlutDemoApplication.h"
|
||||||
|
#define PlatformDemoApplication GlutDemoApplication
|
||||||
|
#endif
|
||||||
|
|
||||||
///ConstraintDemo shows how to create a constraint, like Hinge or btGenericD6constraint
|
///ConstraintDemo shows how to create a constraint, like Hinge or btGenericD6constraint
|
||||||
class ConstraintDemo : public GlutDemoApplication
|
class ConstraintDemo : public PlatformDemoApplication
|
||||||
{
|
{
|
||||||
//keep track of variables to delete memory at the end
|
//keep track of variables to delete memory at the end
|
||||||
btAlignedObjectArray<btCollisionShape*> m_collisionShapes;
|
btAlignedObjectArray<btCollisionShape*> m_collisionShapes;
|
||||||
@@ -31,6 +37,8 @@ class ConstraintDemo : public GlutDemoApplication
|
|||||||
|
|
||||||
class btDefaultCollisionConfiguration* m_collisionConfiguration;
|
class btDefaultCollisionConfiguration* m_collisionConfiguration;
|
||||||
|
|
||||||
|
void setupEmptyDynamicsWorld();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
@@ -38,6 +46,8 @@ class ConstraintDemo : public GlutDemoApplication
|
|||||||
|
|
||||||
void initPhysics();
|
void initPhysics();
|
||||||
|
|
||||||
|
void exitPhysics();
|
||||||
|
|
||||||
virtual void clientMoveAndDisplay();
|
virtual void clientMoveAndDisplay();
|
||||||
|
|
||||||
virtual void displayCallback();
|
virtual void displayCallback();
|
||||||
|
|||||||
25
Demos/ConstraintDemo/Win32ConstraintDemo.cpp
Normal file
25
Demos/ConstraintDemo/Win32ConstraintDemo.cpp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#ifdef _WINDOWS
|
||||||
|
/*
|
||||||
|
Bullet Continuous Collision Detection and Physics Library
|
||||||
|
Copyright (c) 2003-2009 Erwin Coumans http://bulletphysics.org
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied warranty.
|
||||||
|
In no event will the authors be held liable for any damages arising from the use of this software.
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it freely,
|
||||||
|
subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ConstraintDemo.h"
|
||||||
|
|
||||||
|
///The 'createDemo' function is called from Bullet/Demos/OpenGL/Win32AppMain.cpp to instantiate this particular demo
|
||||||
|
DemoApplication* createDemo()
|
||||||
|
{
|
||||||
|
return new ConstraintDemo();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -24,7 +24,7 @@ subject to the following restrictions:
|
|||||||
#include "BulletCollision/CollisionShapes/btShapeHull.h"
|
#include "BulletCollision/CollisionShapes/btShapeHull.h"
|
||||||
|
|
||||||
#define TEST_SERIALIZATION
|
#define TEST_SERIALIZATION
|
||||||
#define NO_OBJ_TO_BULLET
|
//#define NO_OBJ_TO_BULLET
|
||||||
|
|
||||||
#ifdef TEST_SERIALIZATION
|
#ifdef TEST_SERIALIZATION
|
||||||
#include "LinearMath/btSerializer.h"
|
#include "LinearMath/btSerializer.h"
|
||||||
@@ -518,10 +518,10 @@ void ConvexDecompositionDemo::initPhysics(const char* filename)
|
|||||||
btBulletWorldImporter* fileLoader = new btBulletWorldImporter(m_dynamicsWorld);
|
btBulletWorldImporter* fileLoader = new btBulletWorldImporter(m_dynamicsWorld);
|
||||||
//fileLoader->setVerboseMode(true);
|
//fileLoader->setVerboseMode(true);
|
||||||
|
|
||||||
//fileLoader->loadFileFromMemory("testFile.bullet");
|
fileLoader->loadFile("testFile.bullet");
|
||||||
//fileLoader->loadFileFromMemory("testFile64Double.bullet");
|
//fileLoader->loadFile("testFile64Double.bullet");
|
||||||
//fileLoader->loadFileFromMemory("testFile64Single.bullet");
|
//fileLoader->loadFile("testFile64Single.bullet");
|
||||||
fileLoader->loadFileFromMemory("testFile32Single.bullet");
|
//fileLoader->loadFile("testFile32Single.bullet");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ void GL_DialogWindow::draw(btScalar deltaTime)
|
|||||||
int curVertPos = m_dialogVertPos;
|
int curVertPos = m_dialogVertPos;
|
||||||
curVertPos += yInc;
|
curVertPos += yInc;
|
||||||
|
|
||||||
GLDebugDrawString(m_dialogHorPos+m_dialogWidth/2-((strlen(m_dialogTitle)/2)*charWidth),m_dialogVertPos+yInc ,m_dialogTitle);
|
GLDebugDrawString(m_dialogHorPos+m_dialogWidth/2-((int(strlen(m_dialogTitle)/2))*charWidth),m_dialogVertPos+yInc ,m_dialogTitle);
|
||||||
curVertPos += 20;
|
curVertPos += 20;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -403,6 +403,7 @@ inline void glDrawVector(const btVector3& v) { glVertex3d(v[0], v[1], v[2]); }
|
|||||||
|
|
||||||
void GL_ShapeDrawer::drawOpenGL(btScalar* m, const btCollisionShape* shape, const btVector3& color,int debugMode,const btVector3& worldBoundsMin,const btVector3& worldBoundsMax)
|
void GL_ShapeDrawer::drawOpenGL(btScalar* m, const btCollisionShape* shape, const btVector3& color,int debugMode,const btVector3& worldBoundsMin,const btVector3& worldBoundsMax)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (shape->getShapeType() == CUSTOM_CONVEX_SHAPE_TYPE)
|
if (shape->getShapeType() == CUSTOM_CONVEX_SHAPE_TYPE)
|
||||||
{
|
{
|
||||||
btVector3 org(m[12], m[13], m[14]);
|
btVector3 org(m[12], m[13], m[14]);
|
||||||
@@ -795,7 +796,6 @@ void GL_ShapeDrawer::drawOpenGL(btScalar* m, const btCollisionShape* shape, cons
|
|||||||
btVector3 v3 = vtx[index3];
|
btVector3 v3 = vtx[index3];
|
||||||
btVector3 normal = (v3-v1).cross(v2-v1);
|
btVector3 normal = (v3-v1).cross(v2-v1);
|
||||||
normal.normalize ();
|
normal.normalize ();
|
||||||
|
|
||||||
glNormal3f(normal.getX(),normal.getY(),normal.getZ());
|
glNormal3f(normal.getX(),normal.getY(),normal.getZ());
|
||||||
glVertex3f (v1.x(), v1.y(), v1.z());
|
glVertex3f (v1.x(), v1.y(), v1.z());
|
||||||
glVertex3f (v2.x(), v2.y(), v2.z());
|
glVertex3f (v2.x(), v2.y(), v2.z());
|
||||||
@@ -813,7 +813,8 @@ void GL_ShapeDrawer::drawOpenGL(btScalar* m, const btCollisionShape* shape, cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
glNormal3f(0,1,0);
|
||||||
|
|
||||||
|
|
||||||
/// for polyhedral shapes
|
/// for polyhedral shapes
|
||||||
if (debugMode==btIDebugDraw::DBG_DrawFeaturesText && (shape->isPolyhedral()))
|
if (debugMode==btIDebugDraw::DBG_DrawFeaturesText && (shape->isPolyhedral()))
|
||||||
|
|||||||
@@ -159,8 +159,8 @@ void SerializeDemo::initPhysics()
|
|||||||
|
|
||||||
//btMultiSphereShape* colShape = new btMultiSphereShape(positions,radii,numSpheres);
|
//btMultiSphereShape* colShape = new btMultiSphereShape(positions,radii,numSpheres);
|
||||||
|
|
||||||
btCollisionShape* colShape = new btCapsuleShape(SCALING*1,SCALING*1);
|
btCollisionShape* colShape = new btCapsuleShapeZ(SCALING*1,SCALING*1);
|
||||||
//btCollisionShape* colShape = new btCylinderShape(btVector3(SCALING*1,SCALING*1,SCALING*1));
|
//btCollisionShape* colShape = new btCylinderShapeZ(btVector3(SCALING*1,SCALING*1,SCALING*1));
|
||||||
//btCollisionShape* colShape = new btBoxShape(btVector3(SCALING*1,SCALING*1,SCALING*1));
|
//btCollisionShape* colShape = new btBoxShape(btVector3(SCALING*1,SCALING*1,SCALING*1));
|
||||||
//btCollisionShape* colShape = new btSphereShape(btScalar(1.));
|
//btCollisionShape* colShape = new btSphereShape(btScalar(1.));
|
||||||
m_collisionShapes.push_back(colShape);
|
m_collisionShapes.push_back(colShape);
|
||||||
@@ -231,7 +231,7 @@ void SerializeDemo::initPhysics()
|
|||||||
|
|
||||||
btBulletWorldImporter* fileLoader = new btBulletWorldImporter(m_dynamicsWorld);
|
btBulletWorldImporter* fileLoader = new btBulletWorldImporter(m_dynamicsWorld);
|
||||||
|
|
||||||
fileLoader->loadFileFromMemory("testFile.bullet");
|
fileLoader->loadFile("testFile.bullet");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ m_verboseDumpAllTypes(false)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool btBulletWorldImporter::loadFileFromMemory( const char* fileName)
|
bool btBulletWorldImporter::loadFile( const char* fileName)
|
||||||
{
|
{
|
||||||
bParse::btBulletFile* bulletFile2 = new bParse::btBulletFile(fileName);
|
bParse::btBulletFile* bulletFile2 = new bParse::btBulletFile(fileName);
|
||||||
|
|
||||||
@@ -36,30 +36,11 @@ bool btBulletWorldImporter::loadFileFromMemory( char* memoryBuffer, int len)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
btCollisionShape* btBulletWorldImporter::convertCollisionShape( btCollisionShapeData* shapeData )
|
||||||
bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFile2)
|
|
||||||
{
|
{
|
||||||
|
btCollisionShape* shape = 0;
|
||||||
|
|
||||||
bool ok = (bulletFile2->getFlags()& bParse::FD_OK)!=0;
|
switch (shapeData->m_shapeType)
|
||||||
|
|
||||||
if (ok)
|
|
||||||
bulletFile2->parse(m_verboseDumpAllTypes);
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (m_verboseDumpAllTypes)
|
|
||||||
{
|
|
||||||
bulletFile2->dumpChunks(bulletFile2->getFileDNA());
|
|
||||||
}
|
|
||||||
|
|
||||||
int i;
|
|
||||||
btHashMap<btHashPtr,btCollisionShape*> shapeMap;
|
|
||||||
|
|
||||||
for (i=0;i<bulletFile2->m_collisionShapes.size();i++)
|
|
||||||
{
|
|
||||||
btCollisionShapeData* shapeData = (btCollisionShapeData*)bulletFile2->m_collisionShapes[i];
|
|
||||||
switch (shapeData->m_shapeType)
|
|
||||||
{
|
{
|
||||||
case CYLINDER_SHAPE_PROXYTYPE:
|
case CYLINDER_SHAPE_PROXYTYPE:
|
||||||
case CAPSULE_SHAPE_PROXYTYPE:
|
case CAPSULE_SHAPE_PROXYTYPE:
|
||||||
@@ -72,7 +53,6 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
|
|||||||
btVector3 implicitShapeDimensions;
|
btVector3 implicitShapeDimensions;
|
||||||
implicitShapeDimensions.deSerializeFloat(bsd->m_implicitShapeDimensions);
|
implicitShapeDimensions.deSerializeFloat(bsd->m_implicitShapeDimensions);
|
||||||
btVector3 margin(bsd->m_collisionMargin,bsd->m_collisionMargin,bsd->m_collisionMargin);
|
btVector3 margin(bsd->m_collisionMargin,bsd->m_collisionMargin,bsd->m_collisionMargin);
|
||||||
btCollisionShape* shape = 0;
|
|
||||||
switch (shapeData->m_shapeType)
|
switch (shapeData->m_shapeType)
|
||||||
{
|
{
|
||||||
case BOX_SHAPE_PROXYTYPE:
|
case BOX_SHAPE_PROXYTYPE:
|
||||||
@@ -87,14 +67,63 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
|
|||||||
}
|
}
|
||||||
case CAPSULE_SHAPE_PROXYTYPE:
|
case CAPSULE_SHAPE_PROXYTYPE:
|
||||||
{
|
{
|
||||||
shape = createCapsuleShape(implicitShapeDimensions.getX(),implicitShapeDimensions.getY());
|
btCapsuleShapeData* capData = (btCapsuleShapeData*)shapeData;
|
||||||
|
switch (capData->m_upAxis)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
shape = createCapsuleShapeX(implicitShapeDimensions.getY(),implicitShapeDimensions.getX());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
shape = createCapsuleShapeY(implicitShapeDimensions.getX(),implicitShapeDimensions.getY());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
shape = createCapsuleShapeZ(implicitShapeDimensions.getX(),implicitShapeDimensions.getZ());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
printf("error: wrong up axis for btCapsuleShape\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CYLINDER_SHAPE_PROXYTYPE:
|
case CYLINDER_SHAPE_PROXYTYPE:
|
||||||
{
|
{
|
||||||
|
btCylinderShapeData* cylData = (btCylinderShapeData*) shapeData;
|
||||||
btVector3 halfExtents = implicitShapeDimensions+margin;
|
btVector3 halfExtents = implicitShapeDimensions+margin;
|
||||||
|
switch (cylData->m_upAxis)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
shape = createCylinderShapeX(halfExtents.getY(),halfExtents.getX());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
shape = createCylinderShapeY(halfExtents.getX(),halfExtents.getY());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
shape = createCylinderShapeZ(halfExtents.getX(),halfExtents.getZ());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
printf("unknown Cylinder up axis\n");
|
||||||
|
}
|
||||||
|
|
||||||
shape = createCylinderShapeY(halfExtents.getX(),halfExtents.getY());
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MULTI_SPHERE_SHAPE_PROXYTYPE:
|
case MULTI_SPHERE_SHAPE_PROXYTYPE:
|
||||||
@@ -154,7 +183,6 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
|
|||||||
localScaling.deSerializeFloat(bsd->m_localScaling);
|
localScaling.deSerializeFloat(bsd->m_localScaling);
|
||||||
shape->setLocalScaling(localScaling);
|
shape->setLocalScaling(localScaling);
|
||||||
|
|
||||||
shapeMap.insert(shapeData,shape);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -198,17 +226,73 @@ bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFil
|
|||||||
|
|
||||||
btBvhTriangleMeshShape* trimeshShape = new btBvhTriangleMeshShape(meshInterface,true);
|
btBvhTriangleMeshShape* trimeshShape = new btBvhTriangleMeshShape(meshInterface,true);
|
||||||
trimeshShape->setMargin(trimesh->m_collisionMargin);
|
trimeshShape->setMargin(trimesh->m_collisionMargin);
|
||||||
shapeMap.insert(shapeData,trimeshShape);
|
shape = trimeshShape;
|
||||||
|
|
||||||
//printf("trimesh->m_collisionMargin=%f\n",trimesh->m_collisionMargin);
|
//printf("trimesh->m_collisionMargin=%f\n",trimesh->m_collisionMargin);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case COMPOUND_SHAPE_PROXYTYPE:
|
||||||
|
{
|
||||||
|
btCompoundShapeData* compoundData = (btCompoundShapeData*)shapeData;
|
||||||
|
btCompoundShape* compoundShape = new btCompoundShape();
|
||||||
|
|
||||||
|
|
||||||
|
btAlignedObjectArray<btCollisionShape*> childShapes;
|
||||||
|
for (int i=0;i<compoundData->m_numChildShapes;i++)
|
||||||
|
{
|
||||||
|
btCollisionShape* childShape = convertCollisionShape(compoundData->m_childShapePtr[i].m_childShape);
|
||||||
|
if (childShape)
|
||||||
|
{
|
||||||
|
btTransform localTransform;
|
||||||
|
localTransform.deSerializeFloat(compoundData->m_childShapePtr[i].m_transform);
|
||||||
|
compoundShape->addChildShape(localTransform,childShape);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
printf("error: couldn't create childShape for compoundShape\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
shape = compoundShape;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
printf("unsupported shape type (%d)\n",shapeData->m_shapeType);
|
printf("unsupported shape type (%d)\n",shapeData->m_shapeType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return shape;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool btBulletWorldImporter::loadFileFromMemory( bParse::btBulletFile* bulletFile2)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
bool ok = (bulletFile2->getFlags()& bParse::FD_OK)!=0;
|
||||||
|
|
||||||
|
if (ok)
|
||||||
|
bulletFile2->parse(m_verboseDumpAllTypes);
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (m_verboseDumpAllTypes)
|
||||||
|
{
|
||||||
|
bulletFile2->dumpChunks(bulletFile2->getFileDNA());
|
||||||
|
}
|
||||||
|
|
||||||
|
int i;
|
||||||
|
btHashMap<btHashPtr,btCollisionShape*> shapeMap;
|
||||||
|
|
||||||
|
for (i=0;i<bulletFile2->m_collisionShapes.size();i++)
|
||||||
|
{
|
||||||
|
btCollisionShapeData* shapeData = (btCollisionShapeData*)bulletFile2->m_collisionShapes[i];
|
||||||
|
btCollisionShape* shape = convertCollisionShape(shapeData);
|
||||||
|
if (shape)
|
||||||
|
shapeMap.insert(shapeData,shape);
|
||||||
}
|
}
|
||||||
for (i=0;i<bulletFile2->m_rigidBodies.size();i++)
|
for (i=0;i<bulletFile2->m_rigidBodies.size();i++)
|
||||||
{
|
{
|
||||||
@@ -311,17 +395,39 @@ btCollisionShape* btBulletWorldImporter::createSphereShape(btScalar radius)
|
|||||||
return new btSphereShape(radius);
|
return new btSphereShape(radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
btCollisionShape* btBulletWorldImporter::createCapsuleShape(btScalar radius, btScalar height)
|
|
||||||
|
btCollisionShape* btBulletWorldImporter::createCapsuleShapeX(btScalar radius, btScalar height)
|
||||||
|
{
|
||||||
|
return new btCapsuleShapeX(radius,height);
|
||||||
|
}
|
||||||
|
|
||||||
|
btCollisionShape* btBulletWorldImporter::createCapsuleShapeY(btScalar radius, btScalar height)
|
||||||
{
|
{
|
||||||
return new btCapsuleShape(radius,height);
|
return new btCapsuleShape(radius,height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
btCollisionShape* btBulletWorldImporter::createCapsuleShapeZ(btScalar radius, btScalar height)
|
||||||
|
{
|
||||||
|
return new btCapsuleShapeZ(radius,height);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
btCollisionShape* btBulletWorldImporter::createCylinderShapeX(btScalar radius,btScalar height)
|
||||||
|
{
|
||||||
|
return new btCylinderShapeX(btVector3(height,radius,radius));
|
||||||
|
}
|
||||||
|
|
||||||
btCollisionShape* btBulletWorldImporter::createCylinderShapeY(btScalar radius,btScalar height)
|
btCollisionShape* btBulletWorldImporter::createCylinderShapeY(btScalar radius,btScalar height)
|
||||||
{
|
{
|
||||||
return new btCylinderShape(btVector3(radius,height,radius));
|
return new btCylinderShape(btVector3(radius,height,radius));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
btCollisionShape* btBulletWorldImporter::createCylinderShapeZ(btScalar radius,btScalar height)
|
||||||
|
{
|
||||||
|
return new btCylinderShapeZ(btVector3(radius,radius,height));
|
||||||
|
}
|
||||||
|
|
||||||
btTriangleMesh* btBulletWorldImporter::createTriangleMeshContainer()
|
btTriangleMesh* btBulletWorldImporter::createTriangleMeshContainer()
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -29,24 +29,30 @@ class btTypedConstraint;
|
|||||||
class btDynamicsWorld;
|
class btDynamicsWorld;
|
||||||
struct ConstraintInput;
|
struct ConstraintInput;
|
||||||
class btRigidBodyColladaInfo;
|
class btRigidBodyColladaInfo;
|
||||||
|
struct btCollisionShapeData;
|
||||||
|
|
||||||
namespace bParse
|
namespace bParse
|
||||||
{
|
{
|
||||||
class btBulletFile;
|
class btBulletFile;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class btBulletWorldImporter
|
class btBulletWorldImporter
|
||||||
{
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
btDynamicsWorld* m_dynamicsWorld;
|
btDynamicsWorld* m_dynamicsWorld;
|
||||||
|
|
||||||
bool m_verboseDumpAllTypes;
|
bool m_verboseDumpAllTypes;
|
||||||
|
|
||||||
|
btCollisionShape* convertCollisionShape( btCollisionShapeData* shapeData );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
btBulletWorldImporter(btDynamicsWorld* world);
|
btBulletWorldImporter(btDynamicsWorld* world);
|
||||||
|
|
||||||
bool loadFileFromMemory(const char* fileName);
|
bool loadFile(const char* fileName);
|
||||||
|
|
||||||
///the memoryBuffer might be modified (for example if endian swaps are necessary)
|
///the memoryBuffer might be modified (for example if endian swaps are necessary)
|
||||||
bool loadFileFromMemory(char *memoryBuffer, int len);
|
bool loadFileFromMemory(char *memoryBuffer, int len);
|
||||||
@@ -83,8 +89,13 @@ public:
|
|||||||
virtual btCollisionShape* createPlaneShape(const btVector3& planeNormal,btScalar planeConstant);
|
virtual btCollisionShape* createPlaneShape(const btVector3& planeNormal,btScalar planeConstant);
|
||||||
virtual btCollisionShape* createBoxShape(const btVector3& halfExtents);
|
virtual btCollisionShape* createBoxShape(const btVector3& halfExtents);
|
||||||
virtual btCollisionShape* createSphereShape(btScalar radius);
|
virtual btCollisionShape* createSphereShape(btScalar radius);
|
||||||
virtual btCollisionShape* createCapsuleShape(btScalar radius, btScalar height);
|
virtual btCollisionShape* createCapsuleShapeX(btScalar radius, btScalar height);
|
||||||
|
virtual btCollisionShape* createCapsuleShapeY(btScalar radius, btScalar height);
|
||||||
|
virtual btCollisionShape* createCapsuleShapeZ(btScalar radius, btScalar height);
|
||||||
|
|
||||||
|
virtual btCollisionShape* createCylinderShapeX(btScalar radius,btScalar height);
|
||||||
virtual btCollisionShape* createCylinderShapeY(btScalar radius,btScalar height);
|
virtual btCollisionShape* createCylinderShapeY(btScalar radius,btScalar height);
|
||||||
|
virtual btCollisionShape* createCylinderShapeZ(btScalar radius,btScalar height);
|
||||||
virtual class btTriangleMesh* createTriangleMeshContainer();
|
virtual class btTriangleMesh* createTriangleMeshContainer();
|
||||||
virtual btCollisionShape* createBvhTriangleMeshShape(btTriangleMesh* trimesh);
|
virtual btCollisionShape* createBvhTriangleMeshShape(btTriangleMesh* trimesh);
|
||||||
virtual btCollisionShape* createConvexTriangleMeshShape(btTriangleMesh* trimesh);
|
virtual btCollisionShape* createConvexTriangleMeshShape(btTriangleMesh* trimesh);
|
||||||
|
|||||||
@@ -128,6 +128,9 @@ typedef unsigned long uintptr_t;
|
|||||||
#include "BulletCollision/CollisionShapes/btConvexHullShape.h"
|
#include "BulletCollision/CollisionShapes/btConvexHullShape.h"
|
||||||
#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h"
|
#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h"
|
||||||
#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h"
|
#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h"
|
||||||
|
#include "BulletCollision/CollisionShapes/btCompoundShape.h"
|
||||||
|
#include "BulletCollision/CollisionShapes/btCylinderShape.h"
|
||||||
|
#include "BulletCollision/CollisionShapes/btCapsuleShape.h"
|
||||||
#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
|
#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
|
||||||
#include "BulletDynamics/Dynamics/btRigidBody.h"
|
#include "BulletDynamics/Dynamics/btRigidBody.h"
|
||||||
|
|
||||||
@@ -153,6 +156,9 @@ char *includefiles[] = {
|
|||||||
"../../../src/BulletCollision/CollisionShapes/btMultiSphereShape.h",
|
"../../../src/BulletCollision/CollisionShapes/btMultiSphereShape.h",
|
||||||
"../../../src/BulletCollision/CollisionShapes/btStridingMeshInterface.h",
|
"../../../src/BulletCollision/CollisionShapes/btStridingMeshInterface.h",
|
||||||
"../../../src/BulletCollision/CollisionShapes/btTriangleMeshShape.h",
|
"../../../src/BulletCollision/CollisionShapes/btTriangleMeshShape.h",
|
||||||
|
"../../../src/BulletCollision/CollisionShapes/btCompoundShape.h",
|
||||||
|
"../../../src/BulletCollision/CollisionShapes/btCylinderShape.h",
|
||||||
|
"../../../src/BulletCollision/CollisionShapes/btCapsuleShape.h",
|
||||||
"../../../src/BulletCollision/CollisionShapes/btConvexHullShape.h",
|
"../../../src/BulletCollision/CollisionShapes/btConvexHullShape.h",
|
||||||
"../../../src/BulletCollision/CollisionDispatch/btCollisionObject.h",
|
"../../../src/BulletCollision/CollisionDispatch/btCollisionObject.h",
|
||||||
"../../../src/BulletDynamics/Dynamics/btRigidBody.h",
|
"../../../src/BulletDynamics/Dynamics/btRigidBody.h",
|
||||||
|
|||||||
@@ -88,6 +88,13 @@ public:
|
|||||||
m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;
|
m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///btCapsuleShapeX represents a capsule around the Z axis
|
///btCapsuleShapeX represents a capsule around the Z axis
|
||||||
@@ -125,5 +132,30 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct btCapsuleShapeData
|
||||||
|
{
|
||||||
|
btConvexInternalShapeData m_convexInternalShapeData;
|
||||||
|
|
||||||
|
int m_upAxis;
|
||||||
|
|
||||||
|
char m_padding[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE int btCapsuleShape::calculateSerializeBufferSize() const
|
||||||
|
{
|
||||||
|
return sizeof(btCapsuleShapeData);
|
||||||
|
}
|
||||||
|
|
||||||
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
|
SIMD_FORCE_INLINE const char* btCapsuleShape::serialize(void* dataBuffer, btSerializer* serializer) const
|
||||||
|
{
|
||||||
|
btCapsuleShapeData* shapeData = (btCapsuleShapeData*) dataBuffer;
|
||||||
|
|
||||||
|
btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData,serializer);
|
||||||
|
|
||||||
|
shapeData->m_upAxis = m_upAxis;
|
||||||
|
|
||||||
|
return "btCapsuleShapeData";
|
||||||
|
}
|
||||||
|
|
||||||
#endif //BT_CAPSULE_SHAPE_H
|
#endif //BT_CAPSULE_SHAPE_H
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ public:
|
|||||||
return m_userPointer;
|
return m_userPointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int calculateSerializeBufferSize();
|
virtual int calculateSerializeBufferSize() const;
|
||||||
|
|
||||||
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
||||||
@@ -133,7 +133,7 @@ struct btCollisionShapeData
|
|||||||
char m_padding[4];
|
char m_padding[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int btCollisionShape::calculateSerializeBufferSize()
|
SIMD_FORCE_INLINE int btCollisionShape::calculateSerializeBufferSize() const
|
||||||
{
|
{
|
||||||
return sizeof(btCollisionShapeData);
|
return sizeof(btCollisionShapeData);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ subject to the following restrictions:
|
|||||||
#include "btCompoundShape.h"
|
#include "btCompoundShape.h"
|
||||||
#include "btCollisionShape.h"
|
#include "btCollisionShape.h"
|
||||||
#include "BulletCollision/BroadphaseCollision/btDbvt.h"
|
#include "BulletCollision/BroadphaseCollision/btDbvt.h"
|
||||||
|
#include "LinearMath/btSerializer.h"
|
||||||
|
|
||||||
btCompoundShape::btCompoundShape(bool enableDynamicAabbTree)
|
btCompoundShape::btCompoundShape(bool enableDynamicAabbTree)
|
||||||
: m_localAabbMin(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)),
|
: m_localAabbMin(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT)),
|
||||||
@@ -278,5 +279,36 @@ void btCompoundShape::setLocalScaling(const btVector3& scaling)
|
|||||||
updateChildTransform(i, childTrans);
|
updateChildTransform(i, childTrans);
|
||||||
recalculateLocalAabb();
|
recalculateLocalAabb();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
|
const char* btCompoundShape::serialize(void* dataBuffer, btSerializer* serializer) const
|
||||||
|
{
|
||||||
|
|
||||||
|
btCompoundShapeData* shapeData = (btCompoundShapeData*) dataBuffer;
|
||||||
|
btCollisionShape::serialize(&shapeData->m_collisionShapeData, serializer);
|
||||||
|
|
||||||
|
shapeData->m_collisionMargin = float(m_collisionMargin);
|
||||||
|
shapeData->m_numChildShapes = m_children.size();
|
||||||
|
shapeData->m_childShapePtr = 0;
|
||||||
|
if (shapeData->m_numChildShapes)
|
||||||
|
{
|
||||||
|
btChunk* chunk = serializer->allocate(sizeof(btCompoundShapeChildData),shapeData->m_numChildShapes);
|
||||||
|
btCompoundShapeChildData* memPtr = (btCompoundShapeChildData*)chunk->m_oldPtr;
|
||||||
|
shapeData->m_childShapePtr = memPtr;
|
||||||
|
|
||||||
|
for (int i=0;i<shapeData->m_numChildShapes;i++,memPtr++)
|
||||||
|
{
|
||||||
|
memPtr->m_childMargin = float(m_children[i].m_childMargin);
|
||||||
|
memPtr->m_childShape = (btCollisionShapeData*)m_children[i].m_childShape;
|
||||||
|
memPtr->m_childShapeType = m_children[i].m_childShapeType;
|
||||||
|
m_children[i].m_transform.serializeFloat(memPtr->m_transform);
|
||||||
|
}
|
||||||
|
serializer->finalizeChunk(chunk,"btCompoundShapeChildData",BT_ARRAY_CODE,chunk->m_oldPtr);
|
||||||
|
}
|
||||||
|
return "btCompoundShapeData";
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,11 @@ ATTRIBUTE_ALIGNED16(class) btCompoundShape : public btCollisionShape
|
|||||||
///increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated
|
///increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated
|
||||||
int m_updateRevision;
|
int m_updateRevision;
|
||||||
|
|
||||||
|
btScalar m_collisionMargin;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
btVector3 m_localScaling;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BT_DECLARE_ALIGNED_ALLOCATOR();
|
BT_DECLARE_ALIGNED_ALLOCATOR();
|
||||||
|
|
||||||
@@ -158,13 +163,46 @@ public:
|
|||||||
return m_updateRevision;
|
return m_updateRevision;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
virtual int calculateSerializeBufferSize() const;
|
||||||
btScalar m_collisionMargin;
|
|
||||||
protected:
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
btVector3 m_localScaling;
|
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct btCompoundShapeChildData
|
||||||
|
{
|
||||||
|
btTransformFloatData m_transform;
|
||||||
|
btCollisionShapeData *m_childShape;
|
||||||
|
int m_childShapeType;
|
||||||
|
float m_childMargin;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct btCompoundShapeData
|
||||||
|
{
|
||||||
|
btCollisionShapeData m_collisionShapeData;
|
||||||
|
|
||||||
|
btCompoundShapeChildData *m_childShapePtr;
|
||||||
|
|
||||||
|
int m_numChildShapes;
|
||||||
|
|
||||||
|
float m_collisionMargin;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE int btCompoundShape::calculateSerializeBufferSize() const
|
||||||
|
{
|
||||||
|
return sizeof(btCompoundShapeData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //COMPOUND_SHAPE_H
|
#endif //COMPOUND_SHAPE_H
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public:
|
|||||||
///in case we receive negative scaling
|
///in case we receive negative scaling
|
||||||
virtual void setLocalScaling(const btVector3& scaling);
|
virtual void setLocalScaling(const btVector3& scaling);
|
||||||
|
|
||||||
virtual int calculateSerializeBufferSize();
|
virtual int calculateSerializeBufferSize() const;
|
||||||
|
|
||||||
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
||||||
@@ -110,7 +110,7 @@ struct btConvexHullShapeData
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int btConvexHullShape::calculateSerializeBufferSize()
|
SIMD_FORCE_INLINE int btConvexHullShape::calculateSerializeBufferSize() const
|
||||||
{
|
{
|
||||||
return sizeof(btConvexHullShapeData);
|
return sizeof(btConvexHullShapeData);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public:
|
|||||||
btAssert(0);
|
btAssert(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int calculateSerializeBufferSize();
|
virtual int calculateSerializeBufferSize() const;
|
||||||
|
|
||||||
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
||||||
@@ -135,7 +135,7 @@ struct btConvexInternalShapeData
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int btConvexInternalShape::calculateSerializeBufferSize()
|
SIMD_FORCE_INLINE int btConvexInternalShape::calculateSerializeBufferSize() const
|
||||||
{
|
{
|
||||||
return sizeof(btConvexInternalShapeData);
|
return sizeof(btConvexInternalShapeData);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,10 @@ public:
|
|||||||
return "CylinderY";
|
return "CylinderY";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -157,5 +160,33 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct btCylinderShapeData
|
||||||
|
{
|
||||||
|
btConvexInternalShapeData m_convexInternalShapeData;
|
||||||
|
|
||||||
|
int m_upAxis;
|
||||||
|
|
||||||
|
char m_padding[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE int btCylinderShape::calculateSerializeBufferSize() const
|
||||||
|
{
|
||||||
|
return sizeof(btCylinderShapeData);
|
||||||
|
}
|
||||||
|
|
||||||
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
|
SIMD_FORCE_INLINE const char* btCylinderShape::serialize(void* dataBuffer, btSerializer* serializer) const
|
||||||
|
{
|
||||||
|
btCylinderShapeData* shapeData = (btCylinderShapeData*) dataBuffer;
|
||||||
|
|
||||||
|
btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData,serializer);
|
||||||
|
|
||||||
|
shapeData->m_upAxis = m_upAxis;
|
||||||
|
|
||||||
|
return "btCylinderShapeData";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //CYLINDER_MINKOWSKI_H
|
#endif //CYLINDER_MINKOWSKI_H
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public:
|
|||||||
return "MultiSphere";
|
return "MultiSphere";
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int calculateSerializeBufferSize();
|
virtual int calculateSerializeBufferSize() const;
|
||||||
|
|
||||||
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
||||||
@@ -89,7 +89,7 @@ struct btMultiSphereShapeData
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int btMultiSphereShape::calculateSerializeBufferSize()
|
SIMD_FORCE_INLINE int btMultiSphereShape::calculateSerializeBufferSize() const
|
||||||
{
|
{
|
||||||
return sizeof(btMultiSphereShapeData);
|
return sizeof(btMultiSphereShapeData);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ class btStridingMeshInterface
|
|||||||
m_scaling = scaling;
|
m_scaling = scaling;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int calculateSerializeBufferSize();
|
virtual int calculateSerializeBufferSize() const;
|
||||||
|
|
||||||
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
||||||
@@ -132,7 +132,7 @@ struct btStridingMeshInterfaceData
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int btStridingMeshInterface::calculateSerializeBufferSize()
|
SIMD_FORCE_INLINE int btStridingMeshInterface::calculateSerializeBufferSize() const
|
||||||
{
|
{
|
||||||
return sizeof(btStridingMeshInterfaceData);
|
return sizeof(btStridingMeshInterfaceData);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public:
|
|||||||
//debugging
|
//debugging
|
||||||
virtual const char* getName()const {return "TRIANGLEMESH";}
|
virtual const char* getName()const {return "TRIANGLEMESH";}
|
||||||
|
|
||||||
virtual int calculateSerializeBufferSize();
|
virtual int calculateSerializeBufferSize() const;
|
||||||
|
|
||||||
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||||
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
virtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;
|
||||||
@@ -101,7 +101,7 @@ struct btTriangleMeshShapeData
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE int btTriangleMeshShape::calculateSerializeBufferSize()
|
SIMD_FORCE_INLINE int btTriangleMeshShape::calculateSerializeBufferSize() const
|
||||||
{
|
{
|
||||||
return sizeof(btTriangleMeshShapeData);
|
return sizeof(btTriangleMeshShapeData);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -503,6 +503,8 @@ public:
|
|||||||
|
|
||||||
void serialize(struct btMatrix3x3Data& dataOut) const;
|
void serialize(struct btMatrix3x3Data& dataOut) const;
|
||||||
|
|
||||||
|
void serializeFloat(struct btMatrix3x3FloatData& dataOut) const;
|
||||||
|
|
||||||
void deSerialize(const struct btMatrix3x3Data& dataIn);
|
void deSerialize(const struct btMatrix3x3Data& dataIn);
|
||||||
|
|
||||||
void deSerializeFloat(const struct btMatrix3x3FloatData& dataIn);
|
void deSerializeFloat(const struct btMatrix3x3FloatData& dataIn);
|
||||||
@@ -650,12 +652,19 @@ struct btMatrix3x3DoubleData
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE void btMatrix3x3::serialize(struct btMatrix3x3Data& dataOut) const
|
SIMD_FORCE_INLINE void btMatrix3x3::serialize(struct btMatrix3x3Data& dataOut) const
|
||||||
{
|
{
|
||||||
for (int i=0;i<3;i++)
|
for (int i=0;i<3;i++)
|
||||||
m_el[i].serialize(dataOut.m_el[i]);
|
m_el[i].serialize(dataOut.m_el[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE void btMatrix3x3::serializeFloat(struct btMatrix3x3FloatData& dataOut) const
|
||||||
|
{
|
||||||
|
for (int i=0;i<3;i++)
|
||||||
|
m_el[i].serializeFloat(dataOut.m_el[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE void btMatrix3x3::deSerialize(const struct btMatrix3x3Data& dataIn)
|
SIMD_FORCE_INLINE void btMatrix3x3::deSerialize(const struct btMatrix3x3Data& dataIn)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
unsigned char sBulletDNAstr64[]= {
|
unsigned char sBulletDNAstr64[]= {
|
||||||
83,68,78,65,78,65,77,69,85,0,0,0,109,95,115,105,122,101,0,109,
|
83,68,78,65,78,65,77,69,92,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,
|
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,
|
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,
|
108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110,
|
||||||
@@ -25,7 +24,12 @@ unsigned char sBulletDNAstr64[]= {
|
|||||||
0,109,95,110,117,109,86,101,114,116,105,99,101,115,0,42,109,95,109,101,
|
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,
|
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,
|
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,42,109,95,117,110,115,99,97,
|
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,
|
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,
|
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,
|
101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101,100,80,111,
|
||||||
@@ -75,7 +79,7 @@ unsigned char sBulletDNAstr64[]= {
|
|||||||
110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,
|
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,
|
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,
|
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,33,0,0,0,
|
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,
|
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,
|
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,
|
108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105,
|
||||||
@@ -96,55 +100,62 @@ unsigned char sBulletDNAstr64[]= {
|
|||||||
68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,
|
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,
|
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,
|
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,110,118,101,120,
|
115,104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,109,112,111,117,
|
||||||
72,117,108,108,83,104,97,112,101,68,97,116,97,0,98,116,67,111,108,108,
|
110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98,116,67,
|
||||||
105,115,105,111,110,79,98,106,101,99,116,68,111,117,98,108,101,68,97,116,
|
111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98,116,67,
|
||||||
97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,70,
|
121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98,116,67,
|
||||||
108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,
|
97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116,67,111,
|
||||||
70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100,
|
110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,98,116,
|
||||||
121,68,111,117,98,108,101,68,97,116,97,0,84,76,69,78,1,0,1,0,
|
67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,111,117,98,108,
|
||||||
2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,16,0,48,0,
|
101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,
|
||||||
16,0,16,0,32,0,48,0,96,0,64,0,-128,0,16,0,56,0,20,0,
|
101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,
|
||||||
72,0,4,0,4,0,40,0,32,0,56,0,80,0,-40,1,8,1,-16,1,
|
66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,
|
||||||
-88,3,0,0,83,84,82,67,23,0,0,0,10,0,3,0,4,0,0,0,
|
100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0,84,76,69,78,
|
||||||
4,0,1,0,9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,
|
1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,
|
||||||
10,0,5,0,12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,
|
16,0,48,0,16,0,16,0,32,0,48,0,96,0,64,0,-128,0,16,0,
|
||||||
7,0,8,0,14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,
|
56,0,20,0,72,0,4,0,4,0,40,0,32,0,56,0,80,0,32,0,
|
||||||
16,0,1,0,14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,
|
64,0,64,0,80,0,-40,1,8,1,-16,1,-88,3,0,0,83,84,82,67,
|
||||||
18,0,2,0,16,0,10,0,14,0,11,0,19,0,3,0,9,0,12,0,
|
27,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,9,0,2,0,
|
||||||
4,0,13,0,0,0,14,0,20,0,5,0,19,0,15,0,13,0,16,0,
|
11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,12,0,2,0,
|
||||||
13,0,17,0,7,0,18,0,4,0,19,0,21,0,2,0,13,0,20,0,
|
9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,14,0,1,0,
|
||||||
7,0,21,0,22,0,4,0,20,0,22,0,21,0,23,0,4,0,24,0,
|
8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,14,0,9,0,
|
||||||
0,0,14,0,23,0,1,0,4,0,25,0,24,0,2,0,2,0,26,0,
|
17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,16,0,10,0,
|
||||||
2,0,25,0,25,0,6,0,13,0,27,0,14,0,28,0,23,0,29,0,
|
14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,0,0,14,0,
|
||||||
24,0,30,0,4,0,31,0,4,0,32,0,26,0,4,0,25,0,33,0,
|
20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,7,0,18,0,
|
||||||
13,0,34,0,4,0,35,0,0,0,14,0,27,0,4,0,19,0,15,0,
|
4,0,19,0,21,0,2,0,13,0,20,0,7,0,21,0,22,0,4,0,
|
||||||
26,0,36,0,7,0,18,0,0,0,14,0,28,0,5,0,20,0,22,0,
|
20,0,22,0,21,0,23,0,4,0,24,0,0,0,14,0,23,0,1,0,
|
||||||
13,0,37,0,14,0,38,0,4,0,39,0,0,0,40,0,29,0,24,0,
|
4,0,25,0,24,0,2,0,2,0,26,0,2,0,25,0,25,0,6,0,
|
||||||
9,0,41,0,9,0,42,0,19,0,43,0,9,0,44,0,18,0,45,0,
|
13,0,27,0,14,0,28,0,23,0,29,0,24,0,30,0,4,0,31,0,
|
||||||
18,0,46,0,14,0,47,0,14,0,48,0,14,0,49,0,8,0,50,0,
|
4,0,32,0,26,0,4,0,25,0,33,0,13,0,34,0,4,0,35,0,
|
||||||
8,0,51,0,8,0,52,0,8,0,53,0,8,0,54,0,8,0,55,0,
|
0,0,14,0,27,0,4,0,19,0,15,0,26,0,36,0,7,0,18,0,
|
||||||
8,0,56,0,4,0,57,0,4,0,58,0,4,0,59,0,4,0,60,0,
|
0,0,14,0,28,0,4,0,17,0,37,0,19,0,38,0,4,0,39,0,
|
||||||
4,0,61,0,4,0,62,0,4,0,63,0,0,0,14,0,30,0,23,0,
|
7,0,40,0,29,0,4,0,19,0,15,0,28,0,41,0,4,0,42,0,
|
||||||
9,0,41,0,9,0,42,0,19,0,43,0,9,0,44,0,17,0,45,0,
|
7,0,18,0,30,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,
|
||||||
17,0,46,0,13,0,47,0,13,0,48,0,13,0,49,0,7,0,50,0,
|
31,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,32,0,5,0,
|
||||||
7,0,51,0,7,0,52,0,7,0,53,0,7,0,54,0,7,0,55,0,
|
20,0,22,0,13,0,44,0,14,0,45,0,4,0,46,0,0,0,47,0,
|
||||||
7,0,56,0,4,0,57,0,4,0,58,0,4,0,59,0,4,0,60,0,
|
33,0,24,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
|
||||||
4,0,61,0,4,0,62,0,4,0,63,0,31,0,21,0,30,0,64,0,
|
18,0,52,0,18,0,53,0,14,0,54,0,14,0,55,0,14,0,56,0,
|
||||||
15,0,65,0,13,0,66,0,13,0,67,0,13,0,68,0,13,0,69,0,
|
8,0,57,0,8,0,58,0,8,0,59,0,8,0,60,0,8,0,61,0,
|
||||||
13,0,70,0,13,0,71,0,13,0,72,0,13,0,73,0,13,0,74,0,
|
8,0,62,0,8,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
|
||||||
7,0,75,0,7,0,76,0,7,0,77,0,7,0,78,0,7,0,79,0,
|
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,0,0,14,0,
|
||||||
7,0,80,0,7,0,81,0,7,0,82,0,7,0,83,0,4,0,84,0,
|
34,0,23,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
|
||||||
32,0,22,0,29,0,64,0,16,0,65,0,14,0,66,0,14,0,67,0,
|
17,0,52,0,17,0,53,0,13,0,54,0,13,0,55,0,13,0,56,0,
|
||||||
14,0,68,0,14,0,69,0,14,0,70,0,14,0,71,0,14,0,72,0,
|
7,0,57,0,7,0,58,0,7,0,59,0,7,0,60,0,7,0,61,0,
|
||||||
14,0,73,0,14,0,74,0,8,0,75,0,8,0,76,0,8,0,77,0,
|
7,0,62,0,7,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
|
||||||
8,0,78,0,8,0,79,0,8,0,80,0,8,0,81,0,8,0,82,0,
|
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,35,0,21,0,
|
||||||
8,0,83,0,4,0,84,0,0,0,14,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,};
|
||||||
int sBulletDNAlen64= sizeof(sBulletDNAstr64);
|
int sBulletDNAlen64= sizeof(sBulletDNAstr64);
|
||||||
|
|
||||||
|
|
||||||
unsigned char sBulletDNAstr[]= {
|
unsigned char sBulletDNAstr[]= {
|
||||||
83,68,78,65,78,65,77,69,85,0,0,0,109,95,115,105,122,101,0,109,
|
83,68,78,65,78,65,77,69,92,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,
|
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,
|
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,
|
108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110,
|
||||||
@@ -169,7 +180,12 @@ unsigned char sBulletDNAstr[]= {
|
|||||||
0,109,95,110,117,109,86,101,114,116,105,99,101,115,0,42,109,95,109,101,
|
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,
|
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,
|
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,42,109,95,117,110,115,99,97,
|
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,
|
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,
|
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,
|
101,80,116,114,0,109,95,110,117,109,85,110,115,99,97,108,101,100,80,111,
|
||||||
@@ -219,7 +235,7 @@ unsigned char sBulletDNAstr[]= {
|
|||||||
110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,
|
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,
|
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,
|
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,33,0,0,0,
|
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,
|
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,
|
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,
|
108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105,
|
||||||
@@ -240,48 +256,56 @@ unsigned char sBulletDNAstr[]= {
|
|||||||
68,97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,
|
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,
|
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,
|
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,110,118,101,120,
|
115,104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,109,112,111,117,
|
||||||
72,117,108,108,83,104,97,112,101,68,97,116,97,0,98,116,67,111,108,108,
|
110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98,116,67,
|
||||||
105,115,105,111,110,79,98,106,101,99,116,68,111,117,98,108,101,68,97,116,
|
111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98,116,67,
|
||||||
97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,70,
|
121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98,116,67,
|
||||||
108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,
|
97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116,67,111,
|
||||||
70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100,
|
110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,98,116,
|
||||||
121,68,111,117,98,108,101,68,97,116,97,0,84,76,69,78,1,0,1,0,
|
67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,111,117,98,108,
|
||||||
2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,12,0,36,0,
|
101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,
|
||||||
8,0,16,0,32,0,48,0,96,0,64,0,-128,0,12,0,52,0,20,0,
|
101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,100,
|
||||||
64,0,4,0,4,0,24,0,28,0,48,0,68,0,-56,1,-8,0,-32,1,
|
66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,105,
|
||||||
-104,3,0,0,83,84,82,67,23,0,0,0,10,0,3,0,4,0,0,0,
|
100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0,84,76,69,78,
|
||||||
4,0,1,0,9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,
|
1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,
|
||||||
10,0,5,0,12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,
|
12,0,36,0,8,0,16,0,32,0,48,0,96,0,64,0,-128,0,12,0,
|
||||||
7,0,8,0,14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,
|
52,0,20,0,64,0,4,0,4,0,24,0,28,0,48,0,76,0,24,0,
|
||||||
16,0,1,0,14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,
|
60,0,60,0,68,0,-56,1,-8,0,-32,1,-104,3,0,0,83,84,82,67,
|
||||||
18,0,2,0,16,0,10,0,14,0,11,0,19,0,3,0,9,0,12,0,
|
27,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,9,0,2,0,
|
||||||
4,0,13,0,0,0,14,0,20,0,5,0,19,0,15,0,13,0,16,0,
|
11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,12,0,2,0,
|
||||||
13,0,17,0,7,0,18,0,4,0,19,0,21,0,2,0,13,0,20,0,
|
9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,14,0,1,0,
|
||||||
7,0,21,0,22,0,4,0,20,0,22,0,21,0,23,0,4,0,24,0,
|
8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,14,0,9,0,
|
||||||
0,0,14,0,23,0,1,0,4,0,25,0,24,0,2,0,2,0,26,0,
|
17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,16,0,10,0,
|
||||||
2,0,25,0,25,0,6,0,13,0,27,0,14,0,28,0,23,0,29,0,
|
14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,0,0,14,0,
|
||||||
24,0,30,0,4,0,31,0,4,0,32,0,26,0,4,0,25,0,33,0,
|
20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,7,0,18,0,
|
||||||
13,0,34,0,4,0,35,0,0,0,14,0,27,0,4,0,19,0,15,0,
|
4,0,19,0,21,0,2,0,13,0,20,0,7,0,21,0,22,0,4,0,
|
||||||
26,0,36,0,7,0,18,0,0,0,14,0,28,0,5,0,20,0,22,0,
|
20,0,22,0,21,0,23,0,4,0,24,0,0,0,14,0,23,0,1,0,
|
||||||
13,0,37,0,14,0,38,0,4,0,39,0,0,0,40,0,29,0,24,0,
|
4,0,25,0,24,0,2,0,2,0,26,0,2,0,25,0,25,0,6,0,
|
||||||
9,0,41,0,9,0,42,0,19,0,43,0,9,0,44,0,18,0,45,0,
|
13,0,27,0,14,0,28,0,23,0,29,0,24,0,30,0,4,0,31,0,
|
||||||
18,0,46,0,14,0,47,0,14,0,48,0,14,0,49,0,8,0,50,0,
|
4,0,32,0,26,0,4,0,25,0,33,0,13,0,34,0,4,0,35,0,
|
||||||
8,0,51,0,8,0,52,0,8,0,53,0,8,0,54,0,8,0,55,0,
|
0,0,14,0,27,0,4,0,19,0,15,0,26,0,36,0,7,0,18,0,
|
||||||
8,0,56,0,4,0,57,0,4,0,58,0,4,0,59,0,4,0,60,0,
|
0,0,14,0,28,0,4,0,17,0,37,0,19,0,38,0,4,0,39,0,
|
||||||
4,0,61,0,4,0,62,0,4,0,63,0,0,0,14,0,30,0,23,0,
|
7,0,40,0,29,0,4,0,19,0,15,0,28,0,41,0,4,0,42,0,
|
||||||
9,0,41,0,9,0,42,0,19,0,43,0,9,0,44,0,17,0,45,0,
|
7,0,18,0,30,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,
|
||||||
17,0,46,0,13,0,47,0,13,0,48,0,13,0,49,0,7,0,50,0,
|
31,0,3,0,20,0,22,0,4,0,43,0,0,0,14,0,32,0,5,0,
|
||||||
7,0,51,0,7,0,52,0,7,0,53,0,7,0,54,0,7,0,55,0,
|
20,0,22,0,13,0,44,0,14,0,45,0,4,0,46,0,0,0,47,0,
|
||||||
7,0,56,0,4,0,57,0,4,0,58,0,4,0,59,0,4,0,60,0,
|
33,0,24,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
|
||||||
4,0,61,0,4,0,62,0,4,0,63,0,31,0,21,0,30,0,64,0,
|
18,0,52,0,18,0,53,0,14,0,54,0,14,0,55,0,14,0,56,0,
|
||||||
15,0,65,0,13,0,66,0,13,0,67,0,13,0,68,0,13,0,69,0,
|
8,0,57,0,8,0,58,0,8,0,59,0,8,0,60,0,8,0,61,0,
|
||||||
13,0,70,0,13,0,71,0,13,0,72,0,13,0,73,0,13,0,74,0,
|
8,0,62,0,8,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
|
||||||
7,0,75,0,7,0,76,0,7,0,77,0,7,0,78,0,7,0,79,0,
|
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,0,0,14,0,
|
||||||
7,0,80,0,7,0,81,0,7,0,82,0,7,0,83,0,4,0,84,0,
|
34,0,23,0,9,0,48,0,9,0,49,0,19,0,50,0,9,0,51,0,
|
||||||
32,0,22,0,29,0,64,0,16,0,65,0,14,0,66,0,14,0,67,0,
|
17,0,52,0,17,0,53,0,13,0,54,0,13,0,55,0,13,0,56,0,
|
||||||
14,0,68,0,14,0,69,0,14,0,70,0,14,0,71,0,14,0,72,0,
|
7,0,57,0,7,0,58,0,7,0,59,0,7,0,60,0,7,0,61,0,
|
||||||
14,0,73,0,14,0,74,0,8,0,75,0,8,0,76,0,8,0,77,0,
|
7,0,62,0,7,0,63,0,4,0,64,0,4,0,65,0,4,0,66,0,
|
||||||
8,0,78,0,8,0,79,0,8,0,80,0,8,0,81,0,8,0,82,0,
|
4,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0,35,0,21,0,
|
||||||
8,0,83,0,4,0,84,0,0,0,14,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,};
|
||||||
int sBulletDNAlen= sizeof(sBulletDNAstr);
|
int sBulletDNAlen= sizeof(sBulletDNAstr);
|
||||||
|
|||||||
@@ -268,18 +268,18 @@ public:
|
|||||||
|
|
||||||
if (VOID_IS_8)
|
if (VOID_IS_8)
|
||||||
{
|
{
|
||||||
//#if _WIN64
|
#if _WIN64
|
||||||
initDNA((const char*)sBulletDNAstr64,sBulletDNAlen64);
|
initDNA((const char*)sBulletDNAstr64,sBulletDNAlen64);
|
||||||
//#else
|
#else
|
||||||
// btAssert(0);
|
btAssert(0);
|
||||||
//#endif
|
#endif
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
//#ifndef _WIN64
|
#ifndef _WIN64
|
||||||
initDNA((const char*)sBulletDNAstr,sBulletDNAlen);
|
initDNA((const char*)sBulletDNAstr,sBulletDNAlen);
|
||||||
//#else
|
#else
|
||||||
// btAssert(0);
|
btAssert(0);
|
||||||
//#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -210,6 +210,8 @@ public:
|
|||||||
|
|
||||||
void serialize(struct btTransformData& dataOut) const;
|
void serialize(struct btTransformData& dataOut) const;
|
||||||
|
|
||||||
|
void serializeFloat(struct btTransformFloatData& dataOut) const;
|
||||||
|
|
||||||
void deSerialize(const struct btTransformData& dataIn);
|
void deSerialize(const struct btTransformData& dataIn);
|
||||||
|
|
||||||
void deSerializeDouble(const struct btTransformDoubleData& dataIn);
|
void deSerializeDouble(const struct btTransformDoubleData& dataIn);
|
||||||
@@ -270,6 +272,13 @@ SIMD_FORCE_INLINE void btTransform::serialize(btTransformData& dataOut) const
|
|||||||
m_origin.serialize(dataOut.m_origin);
|
m_origin.serialize(dataOut.m_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SIMD_FORCE_INLINE void btTransform::serializeFloat(btTransformFloatData& dataOut) const
|
||||||
|
{
|
||||||
|
m_basis.serializeFloat(dataOut.m_basis);
|
||||||
|
m_origin.serializeFloat(dataOut.m_origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SIMD_FORCE_INLINE void btTransform::deSerialize(const btTransformData& dataIn)
|
SIMD_FORCE_INLINE void btTransform::deSerialize(const btTransformData& dataIn)
|
||||||
{
|
{
|
||||||
m_basis.deSerialize(dataIn.m_basis);
|
m_basis.deSerialize(dataIn.m_basis);
|
||||||
|
|||||||
Reference in New Issue
Block a user