Cocos2d and Chipmunk

Chipmunk and Cocos2d

In Short: With the right methods set up anytime you add a sprite to the data part of a cpShape than it will draw the sprite and set its rotation on every frame.

In long: Lets say your starting from a new cocos2d project that compiles. First you’re going to want to set up the chipmunk engine, I have a nice little helper method for this, that’s well commented.


- (void) initChipmunk{
// start chipumnk
// create the space for the bodies
// and set the hash to a rough estimate of how many shapes there could be
// set gravity, make the physics run loop
// make a bounding box the size of the screen
cpInitChipmunk();
space = cpSpaceNew();
cpSpaceResizeStaticHash(space, 4, 20);
cpSpaceResizeActiveHash(space, 50.0, 500);
space->gravity = cpv(0, -200);
staticBody = cpBodyNew(INFINITY, INFINITY);
[self schedule: @selector(step:)];
// Game specific logic here.
}

Next I would write the code for the physics run loop, luckily Riq has made this for me, and the less code I’ve wrote the better


-(void) step: (ccTime) delta {
int steps = 2;
cpFloat dt = delta/(cpFloat)steps;
for(int i=0; iactiveShapes, &eachShape, nil);
cpSpaceHashEach(space->staticShapes, &eachShape, nil);

}

This will keep the chipmunk engine working in realtime (because if frames get skipped than the dt will go up) we then give cpSpaceHashEach a method pointer (in the case &eachShape) to have this method called on every static/active object in the space. This has to be a C method, so lets look at that


static void eachShape(void *ptr, void* unused){
cpShape *shape = (cpShape*) ptr;
Sprite *sprite = shape->data;
if( sprite ) {
cpBody *body = shape->body;
[sprite setPosition: cpv( body->p.x, body->p.y)];
[sprite setRotation: RADIANS_TO_DEGREES( -body->a )];
}
}

This is a great piece of code in my opinion, again, Riqs work. we make a shape from the void pointer then check if it has a sprite in its data, if so, set the position and rotation in accordance to the chupmunk body. Perfect.
That’s the longer explaination of how Chipmunk connects to Cocos2d.

I really advise checking out both thrown and grabbed as they have some useful helper methods for making shapes quickly and throwing them into your scene that I was tempted to add to this post.

Like whoah

So Tumblr updated their API with my requests at some undisclosed point, probably during the big update a few weeks back. What does this mean? This means Tumblette is more awesome. So I’m going to go into private beta, no idea how anyone else could know this even exists, but if you want to test a Tumblr client for Mac OS X give me an email at orta.therox@gmail.com

Welcome to orta’s collection of Kieronononon links 0.0
Seriously though, this should be the first text post with Tumblette. So excuse me if its a bit off. More to come.