remove Extras/obsolete/quickstep
improve serialization based on feedback: make it easier to serialize a single object, or single shape, or single bvh. Modified Bullet/Demos/ConcaveDemo to use btSerializer to serialize the btOptimizedBvh (or optionally the trimesh+bvh) You can also serialize trimesh without BVH, use: serializer->setSerializationFlags(BT_SERIALIZE_NO_BVH);// or BT_SERIALIZE_NO_TRIANGLEINFOMAP
This commit is contained in:
@@ -104,4 +104,10 @@ const char* btCollisionObject::serialize(void* dataBuffer, btSerializer* seriali
|
||||
}
|
||||
|
||||
|
||||
|
||||
void btCollisionObject::serializeSingleObject(class btSerializer* serializer) const
|
||||
{
|
||||
int len = calculateSerializeBufferSize();
|
||||
btChunk* chunk = serializer->allocate(len,1);
|
||||
const char* structType = serialize(chunk->m_oldPtr, serializer);
|
||||
serializer->finalizeChunk(chunk,structType,BT_COLLISIONOBJECT_CODE,(void*)this);
|
||||
}
|
||||
|
||||
@@ -430,6 +430,7 @@ public:
|
||||
///fills the dataBuffer and returns the struct name (and 0 on failure)
|
||||
virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;
|
||||
|
||||
virtual void serializeSingleObject(class btSerializer* serializer) const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -1382,9 +1382,7 @@ void btCollisionWorld::serializeCollisionObjects(btSerializer* serializer)
|
||||
btCollisionObject* colObj = m_collisionObjects[i];
|
||||
if (colObj->getInternalType() == btCollisionObject::CO_COLLISION_OBJECT)
|
||||
{
|
||||
btChunk* chunk = serializer->allocate(colObj->calculateSerializeBufferSize(),1);
|
||||
const char* structType = colObj->serialize(chunk->m_oldPtr, serializer);
|
||||
serializer->finalizeChunk(chunk,structType,BT_COLLISIONOBJECT_CODE,colObj);
|
||||
colObj->serializeSingleObject(serializer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1399,11 +1397,7 @@ void btCollisionWorld::serializeCollisionObjects(btSerializer* serializer)
|
||||
if (!serializedShapes.find(shape))
|
||||
{
|
||||
serializedShapes.insert(shape,shape);
|
||||
//serialize all collision shapes
|
||||
int len = shape->calculateSerializeBufferSize();
|
||||
btChunk* chunk = serializer->allocate(len,1);
|
||||
const char* structType = shape->serialize(chunk->m_oldPtr, serializer);
|
||||
serializer->finalizeChunk(chunk,structType,BT_SHAPE_CODE,shape);
|
||||
shape->serializeSingleShape(serializer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1412,6 +1406,8 @@ void btCollisionWorld::serializeCollisionObjects(btSerializer* serializer)
|
||||
|
||||
void btCollisionWorld::serialize(btSerializer* serializer)
|
||||
{
|
||||
|
||||
serializer->startSerialization();
|
||||
|
||||
serializeCollisionObjects(serializer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user