MCPcopy Create free account
hub / github.com/cinder/Cinder / BeginContact

Method BeginContact

samples/FallingGears/src/SceneController.cpp:351–374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

349}
350
351void SceneController::BeginContact( b2Contact* contact )
352{
353 void *userDataA = contact->GetFixtureA()->GetBody()->GetUserData();
354 void *userDataB = contact->GetFixtureB()->GetBody()->GetUserData();
355
356 CI_ASSERT( userDataA && userDataB );
357
358 b2WorldManifold worldManifold;
359 contact->GetWorldManifold( &worldManifold );
360
361 vec2 contactPoint = metersToPoints( box2d::toCinder( worldManifold.points[0] ) );
362
363 SceneObject *objectA = static_cast<SceneObject *>( userDataA );
364 SceneObject *objectB = static_cast<SceneObject *>( userDataB );
365
366 if( typeid( *objectA ) == typeid( Island ) )
367 handleIslandCollision( dynamic_cast<Island *>( objectA ), objectB, contactPoint );
368 else if( typeid( *objectA ) == typeid( Wall ) )
369 handleWallCollision( dynamic_cast<Wall *>( objectA ), objectB, contactPoint );
370 else if( typeid( *objectB ) == typeid( Island ) )
371 handleIslandCollision( dynamic_cast<Island *>( objectB ), objectA, contactPoint );
372 else if( typeid( *objectB ) == typeid( Wall ) )
373 handleWallCollision( dynamic_cast<Wall *>( objectB ), objectA, contactPoint );
374}
375
376void SceneController::handleIslandCollision( Island *island, SceneObject *object, const vec2 &contactPoint )
377{

Callers

nothing calls this directly

Calls 7

metersToPointsFunction · 0.85
toCinderFunction · 0.85
GetBodyMethod · 0.80
GetFixtureAMethod · 0.80
GetFixtureBMethod · 0.80
GetWorldManifoldMethod · 0.80
GetUserDataMethod · 0.45

Tested by

no test coverage detected