Added preliminary binary serialization code in btCollisionWorld.cpp, with example in Bullet/Demos/BasicDemo.cpp
(work-in-progress, some initial working version should be ready very soon, for Bullet 2.76)
This commit is contained in:
@@ -13,7 +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
|
||||||
|
|
||||||
///create 125 (5x5x5) dynamic object
|
///create 125 (5x5x5) dynamic object
|
||||||
#define ARRAY_SIZE_X 5
|
#define ARRAY_SIZE_X 5
|
||||||
@@ -33,6 +33,10 @@ subject to the following restrictions:
|
|||||||
#include "GlutStuff.h"
|
#include "GlutStuff.h"
|
||||||
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
///btBulletDynamicsCommon.h is the main Bullet include file, contains most common include files.
|
||||||
#include "btBulletDynamicsCommon.h"
|
#include "btBulletDynamicsCommon.h"
|
||||||
|
#ifdef TEST_SERIALIZATION
|
||||||
|
#include "LinearMath/btSerializer.h"
|
||||||
|
#endif //TEST_SERIALIZATION
|
||||||
|
|
||||||
#include <stdio.h> //printf debugging
|
#include <stdio.h> //printf debugging
|
||||||
|
|
||||||
|
|
||||||
@@ -166,9 +170,9 @@ void BasicDemo::initPhysics()
|
|||||||
for(int j = 0;j<ARRAY_SIZE_Z;j++)
|
for(int j = 0;j<ARRAY_SIZE_Z;j++)
|
||||||
{
|
{
|
||||||
startTransform.setOrigin(SCALING*btVector3(
|
startTransform.setOrigin(SCALING*btVector3(
|
||||||
2.0*i + start_x,
|
btScalar(2.0*i + start_x),
|
||||||
20+2.0*k + start_y,
|
btScalar(20+2.0*k + start_y),
|
||||||
2.0*j + start_z));
|
btScalar(2.0*j + start_z)));
|
||||||
|
|
||||||
|
|
||||||
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
|
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
|
||||||
@@ -187,6 +191,34 @@ void BasicDemo::initPhysics()
|
|||||||
|
|
||||||
|
|
||||||
clientResetScene();
|
clientResetScene();
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef TEST_SERIALIZATION
|
||||||
|
//test serializing this
|
||||||
|
|
||||||
|
int maxSerializeBufferSize = 1024*1024*5;
|
||||||
|
|
||||||
|
btDefaultSerializer* serializer = new btDefaultSerializer(maxSerializeBufferSize);
|
||||||
|
m_dynamicsWorld->serialize(serializer);
|
||||||
|
|
||||||
|
FILE* f2 = fopen("testFile.bullet","wb");
|
||||||
|
fwrite(serializer->m_buffer,serializer->m_currentSize,1,f2);
|
||||||
|
fclose(f2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
bParse::btBulletFile* bulletFile2 = new bParse::btBulletFile("testFile.bullet");
|
||||||
|
bool ok = (bulletFile2->getFlags()& bParse::FD_OK)!=0;
|
||||||
|
bool verboseDumpAllTypes = true;
|
||||||
|
if (ok)
|
||||||
|
bulletFile2->parse(verboseDumpAllTypes);
|
||||||
|
|
||||||
|
if (verboseDumpAllTypes)
|
||||||
|
{
|
||||||
|
bulletFile2->dumpChunks(bulletFile2->getFileDNA());
|
||||||
|
}
|
||||||
|
#endif //TEST_SERIALIZATION
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
|
|||||||
if (gDemoApplication->getDynamicsWorld())
|
if (gDemoApplication->getDynamicsWorld())
|
||||||
gDemoApplication->getDynamicsWorld()->setDebugDrawer(&debugDraw);
|
gDemoApplication->getDynamicsWorld()->setDebugDrawer(&debugDraw);
|
||||||
|
|
||||||
|
gDemoApplication->reshape(sWidth,sHeight);
|
||||||
|
|
||||||
// program main loop
|
// program main loop
|
||||||
while ( !quit )
|
while ( !quit )
|
||||||
@@ -383,7 +384,7 @@ void EnableOpenGL(HWND hWnd, HDC * hDC, HGLRC * hRC)
|
|||||||
*hRC = wglCreateContext( *hDC );
|
*hRC = wglCreateContext( *hDC );
|
||||||
wglMakeCurrent( *hDC, *hRC );
|
wglMakeCurrent( *hDC, *hRC );
|
||||||
sOpenGLInitialized = true;
|
sOpenGLInitialized = true;
|
||||||
gDemoApplication->reshape(sWidth,sHeight);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ subject to the following restrictions:
|
|||||||
#include "LinearMath/btAabbUtil2.h"
|
#include "LinearMath/btAabbUtil2.h"
|
||||||
#include "LinearMath/btQuickprof.h"
|
#include "LinearMath/btQuickprof.h"
|
||||||
#include "LinearMath/btStackAlloc.h"
|
#include "LinearMath/btStackAlloc.h"
|
||||||
|
#include "LinearMath/btSerializer.h"
|
||||||
|
|
||||||
//#define USE_BRUTEFORCE_RAYBROADPHASE 1
|
//#define USE_BRUTEFORCE_RAYBROADPHASE 1
|
||||||
//RECALCULATE_AABB is slower, but benefit is that you don't need to call 'stepSimulation' or 'updateAabbs' before using a rayTest
|
//RECALCULATE_AABB is slower, but benefit is that you don't need to call 'stepSimulation' or 'updateAabbs' before using a rayTest
|
||||||
@@ -1228,4 +1229,52 @@ void btCollisionWorld::debugDrawWorld()
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void btCollisionWorld::serialize(btDefaultSerializer* serializer)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
const bool VOID_IS_8 = ((sizeof(void*)==8));
|
||||||
|
|
||||||
|
if (VOID_IS_8)
|
||||||
|
{
|
||||||
|
//64bit not yet supported (soon)
|
||||||
|
btAssert(0);
|
||||||
|
return;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
serializer->initDNA((const char*)sBulletDNAstr,sBulletDNAlen);
|
||||||
|
}
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
//serialize all collision objects
|
||||||
|
for (i=0;i<m_collisionObjects.size();i++)
|
||||||
|
{
|
||||||
|
btCollisionObject* colObj = m_collisionObjects[i];
|
||||||
|
int len = colObj->calculateSerializeBufferSize();
|
||||||
|
btChunk* chunk = serializer->allocate(len,1);
|
||||||
|
const char* structType = colObj->serialize(chunk->m_oldPtr);
|
||||||
|
chunk->m_dna_nr = serializer->getReverseType(structType);
|
||||||
|
chunk->m_chunkCode = BT_COLLISIONOBJECT_CODE;
|
||||||
|
chunk->m_oldPtr = colObj;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
{
|
||||||
|
//serialize all collision shapes
|
||||||
|
int len = boxShape->calculateSerializeBufferSize();
|
||||||
|
btChunk* chunk = serializer->allocate(len,1);
|
||||||
|
const char* structType = boxShape->serialize(chunk->m_oldPtr);
|
||||||
|
chunk->m_dna_nr = serializer->getReverseType(structType);
|
||||||
|
chunk->m_chunkCode = BT_BOXSHAPE_CODE;
|
||||||
|
chunk->m_oldPtr = boxShape;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
serializer->writeDNA();
|
||||||
}
|
}
|
||||||
@@ -68,6 +68,8 @@ class btStackAlloc;
|
|||||||
class btCollisionShape;
|
class btCollisionShape;
|
||||||
class btConvexShape;
|
class btConvexShape;
|
||||||
class btBroadphaseInterface;
|
class btBroadphaseInterface;
|
||||||
|
class btDefaultSerializer;
|
||||||
|
|
||||||
#include "LinearMath/btVector3.h"
|
#include "LinearMath/btVector3.h"
|
||||||
#include "LinearMath/btTransform.h"
|
#include "LinearMath/btTransform.h"
|
||||||
#include "btCollisionObject.h"
|
#include "btCollisionObject.h"
|
||||||
@@ -420,6 +422,9 @@ public:
|
|||||||
m_forceUpdateAllAabbs = forceUpdateAllAabbs;
|
m_forceUpdateAllAabbs = forceUpdateAllAabbs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (to be added in the Bullet/Extras)
|
||||||
|
void serialize(btDefaultSerializer* serializer);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,34 +5,35 @@ INCLUDE_DIRECTORIES(
|
|||||||
|
|
||||||
SET(LinearMath_SRCS
|
SET(LinearMath_SRCS
|
||||||
btAlignedAllocator.cpp
|
btAlignedAllocator.cpp
|
||||||
btConvexHull.cpp
|
btConvexHull.cpp
|
||||||
btGeometryUtil.cpp
|
btGeometryUtil.cpp
|
||||||
btQuickprof.cpp
|
btQuickprof.cpp
|
||||||
|
btSerializer.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(LinearMath_HDRS
|
SET(LinearMath_HDRS
|
||||||
btAabbUtil2.h
|
btAabbUtil2.h
|
||||||
btAlignedAllocator.h
|
btAlignedAllocator.h
|
||||||
btAlignedObjectArray.h
|
btAlignedObjectArray.h
|
||||||
btConvexHull.h
|
btConvexHull.h
|
||||||
btDefaultMotionState.h
|
btDefaultMotionState.h
|
||||||
btGeometryUtil.h
|
btGeometryUtil.h
|
||||||
btHashMap.h
|
btHashMap.h
|
||||||
btIDebugDraw.h
|
btIDebugDraw.h
|
||||||
btList.h
|
btList.h
|
||||||
btMatrix3x3.h
|
btMatrix3x3.h
|
||||||
btMinMax.h
|
btMinMax.h
|
||||||
btMotionState.h
|
btMotionState.h
|
||||||
btPoolAllocator.h
|
btPoolAllocator.h
|
||||||
btQuadWord.h
|
btQuadWord.h
|
||||||
btQuaternion.h
|
btQuaternion.h
|
||||||
btQuickprof.h
|
btQuickprof.h
|
||||||
btRandom.h
|
btRandom.h
|
||||||
btScalar.h
|
btScalar.h
|
||||||
btSerializer.h
|
btSerializer.h
|
||||||
btStackAlloc.h
|
btStackAlloc.h
|
||||||
btTransform.h
|
btTransform.h
|
||||||
btTransformUtil.h
|
btTransformUtil.h
|
||||||
btVector3.h
|
btVector3.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
89
src/LinearMath/btSerializer.cpp
Normal file
89
src/LinearMath/btSerializer.cpp
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
unsigned char sBulletDNAstr[]= {
|
||||||
|
83,68,78,65,78,65,77,69,64,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,
|
||||||
|
115,116,114,97,105,110,116,115,0,42,102,105,114,115,116,0,42,108,97,115,
|
||||||
|
116,0,109,95,102,108,111,97,116,115,91,52,93,0,121,97,119,0,112,105,
|
||||||
|
116,99,104,0,114,111,108,108,0,109,95,101,108,91,51,93,0,109,95,98,
|
||||||
|
97,115,105,115,0,109,95,111,114,105,103,105,110,0,42,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,104,97,108,102,
|
||||||
|
69,120,116,101,110,116,115,0,109,95,108,111,99,97,108,83,99,97,108,105,
|
||||||
|
110,103,0,109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,
|
||||||
|
109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,
|
||||||
|
84,114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,
|
||||||
|
97,116,105,111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,
|
||||||
|
109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,
|
||||||
|
97,114,86,101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,
|
||||||
|
111,112,105,99,70,114,105,99,116,105,111,110,0,109,95,104,97,115,65,110,
|
||||||
|
105,115,111,116,114,111,112,105,99,70,114,105,99,116,105,111,110,0,109,95,
|
||||||
|
99,111,110,116,97,99,116,80,114,111,99,101,115,115,105,110,103,84,104,114,
|
||||||
|
101,115,104,111,108,100,0,42,109,95,98,114,111,97,100,112,104,97,115,101,
|
||||||
|
72,97,110,100,108,101,0,42,109,95,99,111,108,108,105,115,105,111,110,83,
|
||||||
|
104,97,112,101,0,42,109,95,114,111,111,116,67,111,108,108,105,115,105,111,
|
||||||
|
110,83,104,97,112,101,0,109,95,99,111,108,108,105,115,105,111,110,70,108,
|
||||||
|
97,103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,
|
||||||
|
111,109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,
|
||||||
|
105,111,110,83,116,97,116,101,49,0,109,95,100,101,97,99,116,105,118,97,
|
||||||
|
116,105,111,110,84,105,109,101,0,109,95,102,114,105,99,116,105,111,110,0,
|
||||||
|
109,95,114,101,115,116,105,116,117,116,105,111,110,0,109,95,105,110,116,101,
|
||||||
|
114,110,97,108,84,121,112,101,0,42,109,95,117,115,101,114,79,98,106,101,
|
||||||
|
99,116,80,111,105,110,116,101,114,0,109,95,104,105,116,70,114,97,99,116,
|
||||||
|
105,111,110,0,109,95,99,99,100,83,119,101,112,116,83,112,104,101,114,101,
|
||||||
|
82,97,100,105,117,115,0,109,95,99,99,100,77,111,116,105,111,110,84,104,
|
||||||
|
114,101,115,104,111,108,100,0,109,95,99,104,101,99,107,67,111,108,108,105,
|
||||||
|
100,101,87,105,116,104,0,109,95,105,110,118,73,110,101,114,116,105,97,84,
|
||||||
|
101,110,115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,86,
|
||||||
|
101,108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,108,
|
||||||
|
111,99,105,116,121,0,109,95,105,110,118,101,114,115,101,77,97,115,115,0,
|
||||||
|
109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0,109,95,108,105,
|
||||||
|
110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97,118,105,116,121,
|
||||||
|
0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108,101,114,97,116,
|
||||||
|
105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97,76,111,99,97,
|
||||||
|
108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109,95,116,111,116,
|
||||||
|
97,108,84,111,114,113,117,101,0,109,95,108,105,110,101,97,114,68,97,109,
|
||||||
|
112,105,110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,110,
|
||||||
|
103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110,
|
||||||
|
103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,110,
|
||||||
|
103,70,97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,108,
|
||||||
|
76,105,110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,
|
||||||
|
108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,
|
||||||
|
103,117,108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,
|
||||||
|
100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,
|
||||||
|
117,108,97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,95,
|
||||||
|
108,105,110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,104,
|
||||||
|
111,108,100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,110,
|
||||||
|
103,84,104,114,101,115,104,111,108,100,0,109,95,99,111,108,108,105,115,105,
|
||||||
|
111,110,79,98,106,101,99,116,68,97,116,97,0,0,0,0,84,89,80,69,
|
||||||
|
22,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116,
|
||||||
|
0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111,
|
||||||
|
110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100,
|
||||||
|
0,98,116,83,99,97,108,97,114,0,80,111,105,110,116,101,114,65,114,114,
|
||||||
|
97,121,0,98,116,80,104,121,115,105,99,115,83,121,115,116,101,109,0,76,
|
||||||
|
105,115,116,66,97,115,101,0,98,116,86,101,99,116,111,114,51,68,97,116,
|
||||||
|
97,0,69,117,108,101,114,0,98,116,77,97,116,114,105,120,51,120,51,68,
|
||||||
|
97,116,97,0,98,116,84,114,97,110,115,102,111,114,109,68,97,116,97,0,
|
||||||
|
98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,
|
||||||
|
0,98,116,66,111,120,83,104,97,112,101,68,97,116,97,0,98,116,67,111,
|
||||||
|
108,108,105,115,105,111,110,79,98,106,101,99,116,68,97,116,97,0,98,116,
|
||||||
|
82,105,103,105,100,66,111,100,121,68,97,116,97,0,0,0,84,76,69,78,
|
||||||
|
1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,
|
||||||
|
4,0,12,0,36,0,8,0,16,0,12,0,48,0,64,0,12,0,32,0,
|
||||||
|
-8,0,-32,1,83,84,82,67,11,0,0,0,11,0,3,0,4,0,0,0,
|
||||||
|
4,0,1,0,9,0,2,0,12,0,3,0,11,0,3,0,11,0,4,0,
|
||||||
|
11,0,5,0,13,0,2,0,9,0,6,0,9,0,7,0,14,0,1,0,
|
||||||
|
10,0,8,0,15,0,3,0,10,0,9,0,10,0,10,0,10,0,11,0,
|
||||||
|
16,0,1,0,14,0,12,0,17,0,2,0,16,0,13,0,14,0,14,0,
|
||||||
|
18,0,3,0,9,0,15,0,4,0,16,0,0,0,17,0,19,0,2,0,
|
||||||
|
14,0,18,0,14,0,19,0,20,0,23,0,17,0,20,0,17,0,21,0,
|
||||||
|
14,0,22,0,14,0,23,0,14,0,24,0,4,0,25,0,10,0,26,0,
|
||||||
|
9,0,27,0,9,0,28,0,18,0,29,0,4,0,30,0,4,0,31,0,
|
||||||
|
4,0,32,0,4,0,33,0,10,0,34,0,10,0,35,0,10,0,36,0,
|
||||||
|
4,0,37,0,9,0,38,0,10,0,39,0,10,0,40,0,10,0,41,0,
|
||||||
|
4,0,42,0,21,0,21,0,16,0,43,0,14,0,44,0,14,0,45,0,
|
||||||
|
10,0,46,0,14,0,47,0,14,0,48,0,14,0,49,0,14,0,50,0,
|
||||||
|
14,0,51,0,14,0,52,0,14,0,53,0,10,0,54,0,10,0,55,0,
|
||||||
|
4,0,56,0,10,0,57,0,10,0,58,0,10,0,59,0,10,0,60,0,
|
||||||
|
10,0,61,0,10,0,62,0,20,0,63,0,};
|
||||||
|
int sBulletDNAlen= sizeof(sBulletDNAstr);
|
||||||
@@ -18,6 +18,11 @@ subject to the following restrictions:
|
|||||||
|
|
||||||
#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE
|
#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE
|
||||||
#include "btStackAlloc.h"
|
#include "btStackAlloc.h"
|
||||||
|
#include "btHashMap.h"
|
||||||
|
|
||||||
|
///only the 32bit versions for now
|
||||||
|
extern unsigned char sBulletDNAstr[];
|
||||||
|
extern int sBulletDNAlen;
|
||||||
|
|
||||||
class btChunk
|
class btChunk
|
||||||
{
|
{
|
||||||
@@ -43,7 +48,15 @@ class btSerializer
|
|||||||
|
|
||||||
|
|
||||||
#define BT_HEADER_LENGTH 12
|
#define BT_HEADER_LENGTH 12
|
||||||
|
#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__)
|
||||||
|
# define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )
|
||||||
|
#else
|
||||||
|
# define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BT_COLLISIONOBJECT_CODE MAKE_ID('C','O','B','J')
|
||||||
|
#define BT_RIGIDBODY_CODE MAKE_ID('R','B','D','Y')
|
||||||
|
#define BT_BOXSHAPE_CODE MAKE_ID('B','O','X','S')
|
||||||
|
|
||||||
class btDefaultSerializer
|
class btDefaultSerializer
|
||||||
{
|
{
|
||||||
@@ -59,7 +72,7 @@ public:
|
|||||||
|
|
||||||
int m_totalSize;
|
int m_totalSize;
|
||||||
unsigned char* m_buffer;
|
unsigned char* m_buffer;
|
||||||
int m_bufferPointer;
|
int m_currentSize;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -70,12 +83,12 @@ public:
|
|||||||
|
|
||||||
btDefaultSerializer(int totalSize)
|
btDefaultSerializer(int totalSize)
|
||||||
:m_totalSize(totalSize),
|
:m_totalSize(totalSize),
|
||||||
m_bufferPointer(0)
|
m_currentSize(0)
|
||||||
// m_dna(0),
|
// m_dna(0),
|
||||||
// m_dnaLength(0)
|
// m_dnaLength(0)
|
||||||
{
|
{
|
||||||
m_buffer = (unsigned char*)btAlignedAlloc(16,totalSize);
|
m_buffer = (unsigned char*)btAlignedAlloc(16,totalSize);
|
||||||
m_bufferPointer += BT_HEADER_LENGTH;
|
m_currentSize += BT_HEADER_LENGTH;
|
||||||
|
|
||||||
memcpy(m_buffer, "BULLET ", 7);
|
memcpy(m_buffer, "BULLET ", 7);
|
||||||
int endian= 1;
|
int endian= 1;
|
||||||
@@ -122,16 +135,16 @@ public:
|
|||||||
|
|
||||||
void writeDNA()
|
void writeDNA()
|
||||||
{
|
{
|
||||||
unsigned char* dnaTarget = m_buffer+m_bufferPointer;
|
unsigned char* dnaTarget = m_buffer+m_currentSize;
|
||||||
memcpy(dnaTarget,m_dna,m_dnaLength);
|
memcpy(dnaTarget,m_dna,m_dnaLength);
|
||||||
m_bufferPointer += m_dnaLength;
|
m_currentSize += m_dnaLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual btChunk* allocate(size_t size, int numElements)
|
virtual btChunk* allocate(size_t size, int numElements)
|
||||||
{
|
{
|
||||||
|
|
||||||
unsigned char* ptr = m_buffer+m_bufferPointer;
|
unsigned char* ptr = m_buffer+m_currentSize;
|
||||||
m_bufferPointer += size*numElements+sizeof(btChunk);
|
m_currentSize += size*numElements+sizeof(btChunk);
|
||||||
|
|
||||||
unsigned char* data = ptr + sizeof(btChunk);
|
unsigned char* data = ptr + sizeof(btChunk);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user