diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2011-03-17 00:20:24 +0300 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2011-03-17 00:20:24 +0300 |
commit | 6c972d634e54029a4711547ba5870269ba028286 (patch) | |
tree | f8aa244fe849b268242889e9f91a72a4310cc712 /source/gameengine/Physics/Bullet | |
parent | 67c7fa46db18a0a5101d9d138389a08794a4a707 (diff) |
BGE PhysicsConstraints.exportBulletFile improvement: also export the object names to .bullet files.
Diffstat (limited to 'source/gameengine/Physics/Bullet')
-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) { |