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_restitution = m_restitution;
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)
{
serializer->serializeName(dataOut->m_name);
serializer->serializeName(name);
}
dataOut->m_hitFraction = m_hitFraction;
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
{
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)
{
serializer->serializeName(shapeData->m_name);
serializer->serializeName(name);
}
shapeData->m_shapeType = m_shapeType;
//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_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)
{
serializer->serializeName(tcd->m_name);
serializer->serializeName(name);
}
tcd->m_objectType = m_objectType;

View File

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