diff options
Diffstat (limited to 'source/gameengine/Physics')
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsController.h | 4 | ||||
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp | 20 |
2 files changed, 23 insertions, 1 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h index dc7a88e8db1..00ecc64c41e 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h @@ -577,6 +577,10 @@ protected: return m_parentCtrl; } + virtual const char* getName() + { + return 0; + } #ifdef WITH_CXX_GUARDEDALLOC public: diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 171f13e9b9f..f28ce953d0b 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -2797,8 +2797,26 @@ float CcdPhysicsEnvironment::getAppliedImpulse(int constraintid) void CcdPhysicsEnvironment::exportFile(const char* filename) { btDefaultSerializer* serializer = new btDefaultSerializer(); - m_dynamicsWorld->serialize(serializer); + + for (int i=0;i<m_dynamicsWorld->getNumCollisionObjects();i++) + { + + btCollisionObject* colObj = m_dynamicsWorld->getCollisionObjectArray()[i]; + + CcdPhysicsController* controller = static_cast<CcdPhysicsController*>(colObj->getUserPointer()); + if (controller) + { + const char* name = controller->getName(); + if (name) + { + serializer->registerNameForPointer(colObj,name); + } + } + } + + m_dynamicsWorld->serialize(serializer); + FILE* file = fopen(filename,"wb"); if (file) { |