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?
Bullet dynamicsWorld Error
-
- Posts: 28
- Joined: Tue Jan 05, 2010 12:41 pm
Re: Bullet dynamicsWorld Error
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();
}
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();
}