add starting point for btGeneric6DofSpring2ConstraintData import, not all parameters are deserialized though

restore activation state after picking
add .bullet file import (only tested/available on Windows)
This commit is contained in:
erwincoumans
2015-05-01 16:27:09 -07:00
parent d7c7fdf517
commit d50242fc27
7 changed files with 190 additions and 18 deletions

View File

@@ -6,13 +6,19 @@
class SerializeSetup : public CommonRigidBodyBase
{
char m_fileName[1024];
public:
SerializeSetup(struct GUIHelperInterface* helper);
SerializeSetup(struct GUIHelperInterface* helper, const char* fileName);
virtual ~SerializeSetup();
virtual void initPhysics();
virtual void stepSimulation(float deltaTime);
virtual void setFileName(const char* fileName)
{
memcpy(m_fileName,fileName,strlen(fileName)+1);
}
virtual void resetCamera()
{
float dist = 9.5;
@@ -25,10 +31,16 @@ public:
};
SerializeSetup::SerializeSetup(struct GUIHelperInterface* helper)
SerializeSetup::SerializeSetup(struct GUIHelperInterface* helper, const char* fileName)
:CommonRigidBodyBase(helper)
{
if (fileName)
{
setFileName(fileName);
} else
{
setFileName("spider.bullet");
}
}
SerializeSetup::~SerializeSetup()
{
@@ -41,9 +53,9 @@ void SerializeSetup::initPhysics()
m_guiHelper->createPhysicsDebugDrawer(m_dynamicsWorld);
m_dynamicsWorld->getDebugDrawer()->setDebugMode(btIDebugDraw::DBG_DrawWireframe+btIDebugDraw::DBG_DrawContactPoints);
btBulletWorldImporter* importer = new btBulletWorldImporter(m_dynamicsWorld);
const char* someFileName="spider.bullet";
const char* prefix[]={"./","./data/","../data/","../../data/","../../../data/","../../../../data/"};
const char* prefix[]={"","./","./data/","../data/","../../data/","../../../data/","../../../../data/"};
int numPrefixes = sizeof(prefix)/sizeof(const char*);
char relativeFileName[1024];
FILE* f=0;
@@ -52,7 +64,7 @@ void SerializeSetup::initPhysics()
for (int i=0;!f && i<numPrefixes;i++)
{
sprintf(relativeFileName,"%s%s",prefix[i],someFileName);
sprintf(relativeFileName,"%s%s",prefix[i],m_fileName);
f = fopen(relativeFileName,"rb");
if (f)
{
@@ -84,7 +96,7 @@ void SerializeSetup::initPhysics()
btDefaultSerializer* serializer = new btDefaultSerializer();
m_dynamicsWorld->serialize(serializer);
FILE* file = fopen("testFile.bullet","wb");
FILE* file = fopen("SerializeSetupTestFile.bullet","wb");
fwrite(serializer->getBufferPointer(),serializer->getCurrentBufferSize(),1, file);
fclose(file);
@@ -101,5 +113,5 @@ void SerializeSetup::stepSimulation(float deltaTime)
class CommonExampleInterface* SerializeBulletCreateFunc(struct CommonExampleOptions& options)
{
return new SerializeSetup(options.m_guiHelper);
return new SerializeSetup(options.m_guiHelper, options.m_fileName);
}