Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <blender@erwincoumans.com>2011-03-17 00:20:24 +0300
committerErwin Coumans <blender@erwincoumans.com>2011-03-17 00:20:24 +0300
commit6c972d634e54029a4711547ba5870269ba028286 (patch)
treef8aa244fe849b268242889e9f91a72a4310cc712
parent67c7fa46db18a0a5101d9d138389a08794a4a707 (diff)
BGE PhysicsConstraints.exportBulletFile improvement: also export the object names to .bullet files.
-rw-r--r--source/gameengine/Ketsji/KX_BulletPhysicsController.cpp11
-rw-r--r--source/gameengine/Ketsji/KX_BulletPhysicsController.h2
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.h4
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp20
4 files changed, 36 insertions, 1 deletions
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;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)
{