Fixing serialization issues introduced in previous commits:

0 maps to 0 (for getUniquePointer)
use getUniquePointer for names too
This commit is contained in:
erwin.coumans
2010-03-02 11:40:08 +00:00
parent 8fbe399ea4
commit 1f38568f14
4 changed files with 13 additions and 6 deletions

View File

@@ -89,10 +89,12 @@ const char* btCollisionObject::serialize(void* dataBuffer, btSerializer* seriali
dataOut->m_friction = m_friction; dataOut->m_friction = m_friction;
dataOut->m_restitution = m_restitution; dataOut->m_restitution = m_restitution;
dataOut->m_internalType = m_internalType; dataOut->m_internalType = m_internalType;
dataOut->m_name = (char*) serializer->findNameForPointer(this);
char* name = (char*) serializer->findNameForPointer(this);
dataOut->m_name = (char*)serializer->getUniquePointer(name);
if (dataOut->m_name) if (dataOut->m_name)
{ {
serializer->serializeName(dataOut->m_name); serializer->serializeName(name);
} }
dataOut->m_hitFraction = m_hitFraction; dataOut->m_hitFraction = m_hitFraction;
dataOut->m_ccdSweptSphereRadius = m_ccdSweptSphereRadius; dataOut->m_ccdSweptSphereRadius = m_ccdSweptSphereRadius;

View File

@@ -99,10 +99,11 @@ void btCollisionShape::calculateTemporalAabb(const btTransform& curTrans,const b
const char* btCollisionShape::serialize(void* dataBuffer, btSerializer* serializer) const const char* btCollisionShape::serialize(void* dataBuffer, btSerializer* serializer) const
{ {
btCollisionShapeData* shapeData = (btCollisionShapeData*) dataBuffer; btCollisionShapeData* shapeData = (btCollisionShapeData*) dataBuffer;
shapeData->m_name = (char*) serializer->findNameForPointer(this); char* name = (char*) serializer->findNameForPointer(this);
shapeData->m_name = (char*)serializer->getUniquePointer(name);
if (shapeData->m_name) if (shapeData->m_name)
{ {
serializer->serializeName(shapeData->m_name); serializer->serializeName(name);
} }
shapeData->m_shapeType = m_shapeType; shapeData->m_shapeType = m_shapeType;
//shapeData->m_padding//?? //shapeData->m_padding//??

View File

@@ -105,10 +105,11 @@ const char* btTypedConstraint::serialize(void* dataBuffer, btSerializer* seriali
tcd->m_rbA = (btRigidBodyData*)serializer->getUniquePointer(&m_rbA); tcd->m_rbA = (btRigidBodyData*)serializer->getUniquePointer(&m_rbA);
tcd->m_rbB = (btRigidBodyData*)serializer->getUniquePointer(&m_rbB); tcd->m_rbB = (btRigidBodyData*)serializer->getUniquePointer(&m_rbB);
tcd->m_name = (char*) serializer->findNameForPointer(this); char* name = (char*) serializer->findNameForPointer(this);
tcd->m_name = (char*)serializer->getUniquePointer(name);
if (tcd->m_name) if (tcd->m_name)
{ {
serializer->serializeName(tcd->m_name); serializer->serializeName(name);
} }
tcd->m_objectType = m_objectType; tcd->m_objectType = m_objectType;

View File

@@ -473,6 +473,9 @@ public:
virtual void* getUniquePointer(void*oldPtr) virtual void* getUniquePointer(void*oldPtr)
{ {
if (!oldPtr)
return 0;
btPointerUid* uptr = (btPointerUid*)m_uniquePointers.find(oldPtr); btPointerUid* uptr = (btPointerUid*)m_uniquePointers.find(oldPtr);
if (uptr) if (uptr)
{ {