I'm trying to create a squishy ball with Cocos2d and Chipmunk (via SpaceManager) using a bunch of rects all chained together then joined with springs to a central body.
But in order to do this, i think I need to store all the cpShapes in an array after I've created them so I can then loop through the array to link them all together with constraints.
However, when i try to put cpShapes in an array, I get an error telling me it's an "incompatible pointer type". So... I either need to use something other than an array (I've tried a set, that didn't work either) or I need to do something to the shape to make it compatible... but what? OR I need another aproach.
Any ideas?
Here's the code so far should it be relevant...
- (id) init
{
    if ( (self = [super init]) ) {
        SpaceManager * spaceMgr = [[SpaceManager alloc] init];
        [spaceMgr addWindowContainmentWithFriction:1.0 elasticity:1.0 inset:cpv(5, 5)];
            // This is a layer that draws all the chipmunk shapes
        ChipmunkDrawingLayer *debug = [[ChipmunkDrawingLayer node] initWithSpace:spaceMgr.space];
        [self addChild:debug];
        int ballPeices = 10; // the number of peices I want my ball to be composed of
        int ballRadius = 100;
        float circum = M_PI * (ballRadius * 2);
        float peiceSize = circum / ballPeices;
        float angleIncrement = 360 / ballPeices;
        CGPoint origin = ccp(240, 160);
        float currentAngleIncrement = 0;
            NSMutableArray *peiceArray = [NSMutableArray arrayWithCapacity:ballPeices];
        for (int i = 0; i < ballPeices; i++) {
            float angleIncrementInRadians = CC_DEGREES_TO_RADIANS(currentAngleIncrement);
            float xp = origin.x + ballRadius * cos(angleIncrementInRadians);
            float yp = origin.y + ballRadius * sin(angleIncrementInRadians);
                    // This is wrong, I need to figure out what's going on here.
            float peiceRotation = atan2( origin.y - yp, origin.x - xp);
            cpShape *currentPeice = [spaceMgr addRectAt:ccp(xp, yp) mass:1 width:peiceSize height:10 rotation:peiceRotation];
            currentAngleIncrement += angleIncrement;
                    [peiceArray addObject:currentPeice]; //!! incompatible pointer type
        }
        spaceMgr.constantDt = 0.9/55.0;
        spaceMgr.gravity = ccp(0,-980);
        spaceMgr.damping = 1.0;
    }
    return self;
}