deltaluca

Untitled

Apr 16th, 2012
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.33 KB | None | 0 0
  1. function swefBody(body:Body, ?zeroVelocities:Bool=true):void {
  2.    if(body.space!=null && body.space.zpp_inner.midstep) throw "Error: Cannot swef body during space.step()";
  3.  
  4.    if(body.isStatic()) return;
  5.    var b = body.zpp_inner;
  6.  
  7.    if(zeroVelocities) {
  8.       b.velx = b.vely = b.angvel = 0;
  9.       b.forcex = b.forcey = b.torque = 0;  
  10.    }
  11.  
  12.    if(b.component.sleeping) return;
  13.    b.component.sleeping = true;
  14.  
  15.    if(b.space==null) return;
  16.  
  17.    if(body.isDynamic()) b.space.live.remove(b);
  18.    else {
  19.       b.space.kinematics.remove(b);
  20.       b.space.staticsleep.remove(b);
  21.    }
  22.  
  23.    var arbi = b.arbiters.begin();
  24.    while(arbi!=null) {
  25.       var arb = arbi.elem();
  26.       if(!arb.cleared) {
  27.          arb.sleeping = true;
  28.          arb.sleep_stamp = b.space.stamp;
  29.          if(arb.type == ZPP_Arbiter.COL) {
  30.             var carb = arb.colarb;
  31.             if(carb.stat) b.space.c_arbiters_true.remove(carb);
  32.             else          b.space.c_arbiters_false.remove(carb);
  33.          }else if(arb.type == ZPP_Arbiter.FLUID)
  34.               b.space.f_arbiters.remove(arb.fluidarb);
  35.          else b.space.s_arbiters.remove(arb.sensorarb);
  36.       }
  37.       arbi = arbi.next;
  38.    }
  39.  
  40.    if(!b.space.bphase.is_sweep) {
  41.       for(shape in body.shapes) {
  42.          var s = shape.zpp_inner;
  43.          b.space.bphase.sync(s);
  44.       }
  45.    }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment