Esempio n. 1
0
cpBody *physics_arbiter_get_other(cpBody *self, cpArbiter *arbiter) {
    cpBody *a, *b;
    cpArbiterGetBodies(arbiter, &a, &b);

    if (self == a) {
        return b;
    } else {
        return a;
    }
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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
    };
}
Esempio n. 5
0
/*
 * @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);
}
Esempio n. 6
0
 std::pair<Body*, Body*> Arbiter::getBodies() const
 {
     cpBody* a, * b;
     cpArbiterGetBodies(_arbiter, &a, &b);
     return std::make_pair((Body*)cpBodyGetUserData(a), (Body*)cpBodyGetUserData(b));
 }
Esempio n. 7
0
int modArbiterProcessB(INSTANCE * my, int * params){
    cpBody * b,*c;
    cpArbiterGetBodies((cpArbiter *)params[0], &b,&c);
    return ((DataPointer)c->data)->father;
}