var b2world; var b2bods=[]; var b2new=[]; var b2Count=0; var b2newWorld = function(scaleFactor, gravityVector) { // Initialize box2d physics and create the world b2world = new box2d.b2World(new box2d.b2Vec2(gravityVector.x,gravityVector.y), true); b2scaleFactor = scaleFactor; b2world.SetContactListener(new b2Listener()); } var b2scaleFactor; var b2scaleTo = function(a) { return new box2d.b2Vec2(a.x/b2scaleFactor,a.y/b2scaleFactor); } var b2scaleFrom = function(a) { return createVector(a.x*b2scaleFactor,a.y*b2scaleFactor); } function b2scalexTo(x) {return x/b2scaleFactor;} function b2scalexFrom(x) {return x*b2scaleFactor;} function b2getBodyCount() {return b2Count;} function b2Update() { // 2nd and 3rd arguments are velocity and position iterations b2world.Step(1.0/30,10,10); if (b2contacts.length==0) return; for (var i=0; i0) b2bods.push(b2new.pop()); } function b2Destroy() { for (var i=0; iwidth) return true; if (pos.y>height) return true; if (this.life-- < 0) return true; if (!this.visible) return false; var a = this.angle; for (var i=0; i