/* * @return [Boolean] */ static mrb_value arbiter_is_first_contact(mrb_state* mrb, mrb_value self) { cpArbiter* arbiter; arbiter = mrb_cp_get_arbiter_ptr(mrb, self); return mrb_bool_value(cpArbiterIsFirstContact(arbiter)); }
//----------------------------------------------------------------// static int _cpCollisionBeginFunc ( cpArbiter* arb, cpSpace* space, void *data ) { UNUSED ( space ); if ( cpArbiterIsFirstContact ( arb )) { return _cpCollisionFunc ( arb, data, MOAICpSpace::BEGIN, true ); } return true; }
void cpArbiterApplyCachedImpulse(cpArbiter *arb, cpFloat dt_coef) { if(cpArbiterIsFirstContact(arb)) return; cpBody *a = arb->body_a; cpBody *b = arb->body_b; for(int i=0; i<arb->numContacts; i++){ cpContact *con = &arb->contacts[i]; cpVect j = cpvrotate(con->n, cpv(con->jnAcc, con->jtAcc)); apply_impulses(a, b, con->r1, con->r2, cpvmult(j, dt_coef)); } }
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 }; }
bool cArbiter::IsFirstContact() { return 0 != cpArbiterIsFirstContact( mArbiter ); }
JNIEXPORT jboolean JNICALL Java_com_wiyun_engine_chipmunk_Arbiter_isFirstContact (JNIEnv * env, jobject thiz) { cpArbiter* arb = (cpArbiter*)env->GetIntField(thiz, g_fid_Arbiter_mPointer); return cpArbiterIsFirstContact(arb) == 1; }
static int cpArbiter_isFirstContact(lua_State *L) { cpArbiter *arb = toarbiter(L); lua_pushboolean(L, cpArbiterIsFirstContact(arb)); return 1; }
int modArbiterIsFirstContact(INSTANCE * my, int * params){ return cpArbiterIsFirstContact((cpArbiter *)params[0]); }