Bullet dynamicsWorld Error

Spawn
Posts: 22
Joined: Wed Sep 02, 2009 3:52 am

Bullet dynamicsWorld Error

Post by Spawn »

I am trying to wrap the basic code into a class to make it easier to use. Well I just started and already ran into problems.

Here is my code
#include <btBulletDynamicsCommon.h>

class Physics
{
public:
Physics();
~Physics();

int maxProxies;
btAxisSweep3* broadphase;
btDefaultCollisionConfiguration* collisionConfiguration;
btCollisionDispatcher* dispatcher;
btSequentialImpulseConstraintSolver* solver;
btDiscreteDynamicsWorld* dynamicsWorld;
};

Physics::Physics()
{
maxProxies = 1024;

btVector3 worldAabbMin(-10000,-10000,-10000);
btVector3 worldAabbMax(10000,10000,10000);

broadphase = new btAxisSweep3(worldAabbMin,worldAabbMax,maxProxies);

collisionConfiguration = new btDefaultCollisionConfiguration();
dispatcher = new btCollisionDispatcher(collisionConfiguration);

solver = new btSequentialImpulseConstraintSolver;

dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);

dynamicsWorld->setGravity(btVector3(0,-10,0));
}

Physics::~Physics()
{
delete dynamicsWorld;
delete solver;
delete dispatcher;
delete collisionConfiguration;
delete broadphase;
}

physics=new Physics();

Done quickly to see if it works. It doesn't... I crashes every time I add dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);

But the weird thing is that when I debug it runs fine. Only normally does it crash... It also works normally but when put into the class it is broken again...

What am I doing wrong?
mako90
Posts: 28
Joined: Tue Jan 05, 2010 12:41 pm

Re: Bullet dynamicsWorld Error

Post by mako90 »

Hi,
how do you actually call this method?
physics=new Physics();

You should put this in physics.h


#include <btBulletDynamicsCommon.h>

class Physics
{
public:
Physics();
~Physics();

int maxProxies;
btAxisSweep3* broadphase;
btDefaultCollisionConfiguration* collisionConfiguration;
btCollisionDispatcher* dispatcher;
btSequentialImpulseConstraintSolver* solver;
btDiscreteDynamicsWorld* dynamicsWorld;
};

Physics::Physics()
{
maxProxies = 1024;

btVector3 worldAabbMin(-10000,-10000,-10000);
btVector3 worldAabbMax(10000,10000,10000);

broadphase = new btAxisSweep3(worldAabbMin,worldAabbMax,maxProxies);

collisionConfiguration = new btDefaultCollisionConfiguration();
dispatcher = new btCollisionDispatcher(collisionConfiguration);

solver = new btSequentialImpulseConstraintSolver;

dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);

dynamicsWorld->setGravity(btVector3(0,-10,0));
}

Physics::~Physics()
{
delete dynamicsWorld;
delete solver;
delete dispatcher;
delete collisionConfiguration;
delete broadphase;
}


and write the main.c

#include "physics.h"
int main(){
Physics *physics = new Physics();
}