I have an objective-c class cald Scene, that has a parameter called bulletDynamics, and a Function called myTickCallback of course;
a had no idea how to implement this tick callback function into my Class.
errors:
/Users/andris/Documents/andrisDocuments/develop/sumoBall/Classes/Scene.mm:57: error: invalid conversion from 'void (*)(const btDynamicsWorld*, btScalar)' to 'void (*)(btDynamicsWorld*, btScalar)'
/Users/andris/Documents/andrisDocuments/develop/sumoBall/Classes/Scene.mm:57: error: initializing argument 1 of 'void btDynamicsWorld::setInternalTickCallback(void (*)(btDynamicsWorld*, btScalar), void*)'
header:
Code: Select all
#import <Foundation/Foundation.h>
#import "btBulletDynamicsCommon.h"
@interface Scene : NSObject {
NSMutableArray *objects;
btDiscreteDynamicsWorld *dynamicsWorld;
}
@property (nonatomic,retain) NSMutableArray *objects;
@property btDiscreteDynamicsWorld *dynamicsWorld;
-(void)draw;
-(void)initPhysics;
-(void)addObject:(id)anObject;
- (void)removeObject:(id)anObject;
void myTickCallback(const btDynamicsWorld *world, btScalar timeStep);
@end
Code: Select all
#import "Scene.h"
@implementation Scene
@synthesize objects;
@synthesize dynamicsWorld;
void myTickCallback(const btDynamicsWorld *world, btScalar timeStep) {
printf("The world just ticked by %f seconds\n", (float)timeStep);
}
- (id) init
{
self = [super init];
if (self != nil) {
objects=[[NSMutableArray alloc]init];
}
return self;
}
-(void)draw{
for (id object in objects)
{
[object draw];
}
}
-(void)initPhysics{
//--broadphase
int maxProxies = 32;
btVector3 worldAabbMin(-50,-50,-50);
btVector3 worldAabbMax(50,50,50);
btAxisSweep3* broadphase = new btAxisSweep3(worldAabbMin,worldAabbMax,maxProxies);
//--Set up the collision configuration and dispatcher
btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration();
btCollisionDispatcher* dispatcher = new btCollisionDispatcher(collisionConfiguration);
//--The actual physics solver
btSequentialImpulseConstraintSolver* solver = new btSequentialImpulseConstraintSolver;
//--The world.
dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);
dynamicsWorld->setGravity(btVector3(0,-200,0));
for (id object in objects)
{
if([object isKindOfClass:[RBNode class]]){
dynamicsWorld->addRigidBody([object rigidBody]);
}
}
dynamicsWorld->setInternalTickCallback(myTickCallback);
}
...
@end