Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function swefBody(body:Body, ?zeroVelocities:Bool=true):void {
- if(body.space!=null && body.space.zpp_inner.midstep) throw "Error: Cannot swef body during space.step()";
- if(body.isStatic()) return;
- var b = body.zpp_inner;
- if(zeroVelocities) {
- b.velx = b.vely = b.angvel = 0;
- b.forcex = b.forcey = b.torque = 0;
- }
- if(b.component.sleeping) return;
- b.component.sleeping = true;
- if(b.space==null) return;
- if(body.isDynamic()) b.space.live.remove(b);
- else {
- b.space.kinematics.remove(b);
- b.space.staticsleep.remove(b);
- }
- var arbi = b.arbiters.begin();
- while(arbi!=null) {
- var arb = arbi.elem();
- if(!arb.cleared) {
- arb.sleeping = true;
- arb.sleep_stamp = b.space.stamp;
- if(arb.type == ZPP_Arbiter.COL) {
- var carb = arb.colarb;
- if(carb.stat) b.space.c_arbiters_true.remove(carb);
- else b.space.c_arbiters_false.remove(carb);
- }else if(arb.type == ZPP_Arbiter.FLUID)
- b.space.f_arbiters.remove(arb.fluidarb);
- else b.space.s_arbiters.remove(arb.sensorarb);
- }
- arbi = arbi.next;
- }
- if(!b.space.bphase.is_sweep) {
- for(shape in body.shapes) {
- var s = shape.zpp_inner;
- b.space.bphase.sync(s);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment