Search code examples
c++iosobjective-cxcodebox2d

Don't understand these C++ box2d Errors


I've trying to get this C++ method to work in my iOS game.

-(b2Vec2) RayCheckWithInput:p1 andX:p2
{
    b2RayCastInput input;
    input.p1 = p1;
    input.p2 = p2;
    input.maxFraction = 1;

    //check every fixture of every body to find closest
    float closestFraction = 1; //start with end of line as p2
    b2Vec2 intersectionNormal(0,0);
    for (b2Body* b = self.world.world->GetBodyList(); b; b = b->GetNext()) {
        for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) {

            b2RayCastOutput output;
            if ( ! f->RayCast( &output, input ) )
                continue;
            if ( output.fraction < closestFraction ) {
                closestFraction = output.fraction;
                intersectionNormal = output.normal;
            }
        }
    }

    b2Vec2 intersectionPoint = p1 + closestFraction * (p2 - p1);

    return intersectionPoint;
}

I know a fair bit about obj-c, but not C++. Here's a screen shot of the errors for that method it's showing.

enter image description here

Any help appreciated (in Chrome you can do right click and open image in new tab to see it better)


Solution

  • You need to be more explicit with the variables passed into the Objective-C function. You are passing without a type so it is not able to infer that it is actually a C++ type rather than an Objective-C type.

    Try something like:

    -(b2Vec2) RayCheckWithInput: (CPPTye*)p1 andX: (CPPTye*)p2
    

    Edit: a quick check of the box2d docs says you need something like this:

    -(b2Vec2) RayCheckWithInput: (b2Vec2)p1 andX: (b2Vec2)p2
    

    Edit 2: Also worth noting that the Raycast function takes a third parameter childIndex as described in the docs.