From 6c972d634e54029a4711547ba5870269ba028286 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 16 Mar 2011 21:20:24 +0000 Subject: BGE PhysicsConstraints.exportBulletFile improvement: also export the object names to .bullet files. --- .../gameengine/Ketsji/KX_BulletPhysicsController.cpp | 11 +++++++++++ .../gameengine/Ketsji/KX_BulletPhysicsController.h | 2 ++ .../gameengine/Physics/Bullet/CcdPhysicsController.h | 4 ++++ .../Physics/Bullet/CcdPhysicsEnvironment.cpp | 20 +++++++++++++++++++- 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp index 74f410f05f9..fde01961fd5 100644 --- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp +++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp @@ -524,4 +524,15 @@ bool KX_BulletPhysicsController::Update(double time) // return false; } + +const char* KX_BulletPhysicsController::getName() +{ + if (m_pObject) + { + KX_GameObject* gameobj = (KX_GameObject*) m_pObject->GetSGClientObject(); + return gameobj->GetName(); + } + return 0; +} + #endif // USE_BULLET diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.h b/source/gameengine/Ketsji/KX_BulletPhysicsController.h index d46caca49f1..c0ff143919d 100644 --- a/source/gameengine/Ketsji/KX_BulletPhysicsController.h +++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.h @@ -80,6 +80,8 @@ public: virtual bool Update(double time); void* GetUserData() { return m_userdata;} + virtual const char* getName(); + void SetOption( int option, 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;igetNumCollisionObjects();i++) + { + + btCollisionObject* colObj = m_dynamicsWorld->getCollisionObjectArray()[i]; + + CcdPhysicsController* controller = static_cast(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) { -- cgit v1.2.3