Box2d CreateFixture with b2FixtureDef gives a clean virtual function call

I have this code that gives me a runtime error on a line:

  body->CreateFixture(&boxDef) 

im using cocos2d-x 2.1.5 with box2d 2.2.1 on windows

CCSprite *sprite = CCSprite::create(imageName.c_str());
    this->addChild(sprite,1);

    b2BodyDef bodyDef;
    bodyDef.type = isStatic?b2_staticBody:b2_dynamicBody;
    bodyDef.position.Set((position.x+sprite->getContentSize().width/2.0f)/PTM_RATIO,
                         (position.y+sprite->getContentSize().height/2.0f)/PTM_RATIO);
    bodyDef.angle = CC_DEGREES_TO_RADIANS(rotation);
    bodyDef.userData = sprite;
    b2Body *body = world->CreateBody(&bodyDef);

    b2FixtureDef boxDef;
    if (isCircle)
    {
        b2CircleShape circle;
        circle.m_radius = sprite->getContentSize().width/2.0f/PTM_RATIO;
        boxDef.shape = &circle;
    }
    else
    {
        b2PolygonShape box;
        box.SetAsBox(sprite->getContentSize().width/2.0f/PTM_RATIO, sprite->getContentSize().height/2.0f/PTM_RATIO);
        boxDef.shape = &box;
    }

    if (isEnemy)
    {
        boxDef.userData = (void*)1;
        enemies->insert(body);

    }

    boxDef.density = 0.5f;
    body->CreateFixture(&boxDef)  //<-- HERE IS THE RUN TIME ERROR 

;

when I debug box2d im code, getting b2Fixture.cpp in the method:

void b2Fixture::Create(b2BlockAllocator* allocator, b2Body* body, const b2FixtureDef* def)

in line:

m_shape = def->shape->Clone(allocator);

getting runtime error:

virtual function call R6025

+4
source share
1 answer

Difficult. I came across this myself a couple of times. This is due to the variable scope.

boxDef.shape. if/else, boxDef. if/else, . boxDef.shape .

, , if/else.

+9

All Articles