cpBody *physics_arbiter_get_other(cpBody *self, cpArbiter *arbiter) { cpBody *a, *b; cpArbiterGetBodies(arbiter, &a, &b); if (self == a) { return b; } else { return a; } }
void cArbiter::GetBodies( cBody ** a, cBody ** b) { cpBody * tA; cpBody * tB; cpArbiterGetBodies( mArbiter, &tA, &tB ); if ( NULL != tA ) *a = reinterpret_cast<cBody*>( tA->data ); else *a = NULL; if ( NULL != tB ) *b = reinterpret_cast<cBody*>( tB->data ); else *b = NULL; }
static void _add_collision(cpBody *body, cpArbiter *arbiter, void *collisions) { cpBody *ba, *bb; Collision *col; /* get in right order */ cpArbiterGetBodies(arbiter, &ba, &bb); if (bb == body) { ba = body; bb = ba; } /* save collision */ col = array_add(collisions); col->a = cpBodyGetUserData(ba); col->b = cpBodyGetUserData(bb); }
static World_CollisionInfo _collisionInfoForArbiter(cpArbiter *aArbiter) { cpBody *bodyA, *bodyB; cpArbiterGetBodies(aArbiter, &bodyA, &bodyB); WorldEntity_t *a = bodyA->data; dynamo_assert(a != NULL, "Incomplete collision"); WorldEntity_t *b = bodyB->data; dynamo_assert(b != NULL, "Incomplete collision"); cpContactPointSet cpPointSet = cpArbiterGetContactPointSet(aArbiter); World_ContactPointSet pointSet = *(World_ContactPointSet *)&cpPointSet; return (World_CollisionInfo) { a, b, cpArbiterIsFirstContact(aArbiter), pointSet, aArbiter }; }
/* * @return [Array<Chipmunk2d::Body>] */ static mrb_value arbiter_bodies(mrb_state* mrb, mrb_value self) { cpArbiter* arbiter; cpBody* body1; cpBody* body2; mrb_value argv[2] = { mrb_nil_value(), mrb_nil_value() }; mrb_cp_body_user_data* user_data; arbiter = mrb_cp_get_arbiter_ptr(mrb, self); cpArbiterGetBodies(arbiter, &body1, &body2); user_data = (struct mrb_cp_body_user_data*)cpBodyGetUserData(body1); if (user_data) { argv[0] = user_data->body; } user_data = (struct mrb_cp_body_user_data*)cpBodyGetUserData(body2); if (user_data) { argv[1] = user_data->body; } return mrb_ary_new_from_values(mrb, 2, argv); }
std::pair<Body*, Body*> Arbiter::getBodies() const { cpBody* a, * b; cpArbiterGetBodies(_arbiter, &a, &b); return std::make_pair((Body*)cpBodyGetUserData(a), (Body*)cpBodyGetUserData(b)); }
int modArbiterProcessB(INSTANCE * my, int * params){ cpBody * b,*c; cpArbiterGetBodies((cpArbiter *)params[0], &b,&c); return ((DataPointer)c->data)->father; }