static void
EstimateCrushing(cpBody *body, cpArbiter *arb, struct CrushingContext *context)
{
    cpVect j = cpArbiterTotalImpulse(arb);
    context->magnitudeSum += cpvlength(j);
    context->vectorSum = cpvadd(context->vectorSum, j);
}
Пример #2
0
static mrb_value
arbiter_total_impulse(mrb_state* mrb, mrb_value self)
{
  cpArbiter* arbiter;
  cpVect vect;
  arbiter = mrb_cp_get_arbiter_ptr(mrb, self);
  vect = cpArbiterTotalImpulse(arbiter);
  return mrb_cp_vect_value(mrb, vect);
}
static void
update(cpSpace *space, double dt)
{
    cpSpaceStep(space, dt);

    ChipmunkDemoPrintString("Place objects on the scale to weigh them. The ball marks the shapes it's sitting on.\n");

    // Sum the total impulse applied to the scale from all collision pairs in the contact graph.
    // If your compiler supports blocks, your life is a little easier.
    // You can use the "Block" versions of the functions without needing the callbacks above.
#if USE_BLOCKS
    __block cpVect impulseSum = cpvzero;
    cpBodyEachArbiter_b(scaleStaticBody, ^(cpArbiter *arb) {
        impulseSum = cpvadd(impulseSum, cpArbiterTotalImpulse(arb));
    });
Пример #4
0
cVect cArbiter::TotalImpulse() {
	return tovect( cpArbiterTotalImpulse( mArbiter ) );
}
static void
ScaleIterator(cpBody *body, cpArbiter *arb, cpVect *sum)
{
    (*sum) = cpvadd(*sum, cpArbiterTotalImpulse(arb));
}
JNIEXPORT jfloat JNICALL Java_com_wiyun_engine_chipmunk_Arbiter_getTotalImpulseY
  (JNIEnv * env, jobject thiz) {
	cpArbiter* arb = (cpArbiter*)env->GetIntField(thiz, g_fid_Arbiter_mPointer);
	cpVect v = cpArbiterTotalImpulse(arb);
	return v.y;
}
Пример #7
0
// From cpArbiter.h
void wrArbiterTotalImpulse(cpArbiter *arb, cpVect *ret) {
    *ret = cpArbiterTotalImpulse(arb);
}
Пример #8
0
static int cpArbiter_totalImpulse(lua_State *L) {
    cpArbiter *arb = toarbiter(L);
    push_cpVect(L, cpArbiterTotalImpulse(arb));
    return 2;
}
Пример #9
0
int modArbiterTotalImpulse(INSTANCE * my, int * params){
    cpVect v=cpArbiterTotalImpulse((cpArbiter *)params[0]);
    *(float*)params[1]=v.x;
    *(float*)params[2]=v.y;
    return 1;
}