// // Chipmunk defines // var cp = cp || {}; cp.v = cc.p; cp._v = cc._p; cp.vzero = cp.v(0,0); // Vector: Compatibility with Chipmunk-JS cp.v.add = cp.vadd; cp.v.clamp = cp.vclamp; cp.v.cross = cp.vcross; cp.v.dist = cp.vdist; cp.v.distsq = cp.vdistsq; cp.v.dot = cp.vdot; cp.v.eql = cp.veql; cp.v.forangle = cp.vforangle; cp.v.len = cp.vlength; cp.v.lengthsq = cp.vlengthsq; cp.v.lerp = cp.vlerp; cp.v.lerpconst = cp.vlerpconst; cp.v.mult = cp.vmult; cp.v.near = cp.vnear; cp.v.neg = cp.vneg; cp.v.normalize = cp.vnormalize; cp.v.normalize_safe = cp.vnormalize_safe; cp.v.perp = cp.vperp; cp.v.project = cp.vproject; cp.v.rotate = cp.vrotate; cp.v.rperp = cp.vrperp; cp.v.slerp = cp.vslerp; cp.v.slerpconst = cp.vslerpconst; cp.v.sub = cp.vsub; cp.v.toangle = cp.vtoangle; cp.v.unrotate = cp.vunrotate; // XXX: renaming functions should be supported in JSB cp.clamp01 = cp.fclamp01; /// Initialize an offset box shaped polygon shape. cp.BoxShape2 = function(body, box) { var verts = [ box.l, box.b, box.l, box.t, box.r, box.t, box.r, box.b ]; return new cp.PolyShape(body, verts, cp.vzero); }; /// Initialize a box shaped polygon shape. cp.BoxShape = function(body, width, height) { var hw = width/2; var hh = height/2; return cp.BoxShape2(body, new cp.BB(-hw, -hh, hw, hh)); }; /// Initialize an static body cp.StaticBody = function() { return new cp.Body(Infinity, Infinity); }; // "Bounding Box" compatibility with Chipmunk-JS cp.BB = function(l, b, r, t) { return {l:l, b:b, r:r, t:t}; }; // helper function to create a BB cp.bb = function(l, b, r, t) { return new cp.BB(l, b, r, t); }; // // Some properties // // "handle" needed in some cases Object.defineProperties(cp.Base.prototype, { "handle" : { get : function(){ return this.getHandle(); }, enumerable : true, configurable : true } }); // Properties, for Chipmunk-JS compatibility // Space properties Object.defineProperties(cp.Space.prototype, { "gravity" : { get : function(){ return this.getGravity(); }, set : function(newValue){ this.setGravity(newValue); }, enumerable : true, configurable : true }, "iterations" : { get : function(){ return this.getIterations(); }, set : function(newValue){ this.setIterations(newValue); }, enumerable : true, configurable : true }, "damping" : { get : function(){ return this.getDamping(); }, set : function(newValue){ this.setDamping(newValue); }, enumerable : true, configurable : true }, "staticBody" : { get : function(){ return this.getStaticBody(); }, enumerable : true, configurable : true }, "idleSpeedThreshold" : { get : function(){ return this.getIdleSpeedThreshold(); }, set : function(newValue){ this.setIdleSpeedThreshold(newValue); }, enumerable : true, configurable : true }, "sleepTimeThreshold": { get : function(){ return this.getSleepTimeThreshold(); }, set : function(newValue){ this.setSleepTimeThreshold(newValue); }, enumerable : true, configurable : true }, "collisionSlop": { get : function(){ return this.getCollisionSlop(); }, set : function(newValue){ this.setCollisionSlop(newValue); }, enumerable : true, configurable : true }, "collisionBias": { get : function(){ return this.getCollisionBias(); }, set : function(newValue){ this.setCollisionBias(newValue); }, enumerable : true, configurable : true }, "collisionPersistence": { get : function(){ return this.getCollisionPersistence(); }, set : function(newValue){ this.setCollisionPersistence(newValue); }, enumerable : true, configurable : true }, "enableContactGraph": { get : function(){ return this.getEnableContactGraph(); }, set : function(newValue){ this.setEnableContactGraph(newValue); }, enumerable : true, configurable : true } }); // Body properties Object.defineProperties(cp.Body.prototype, { "a" : { get : function(){ return this.getAngle(); }, set : function(newValue){ this.setAngle(newValue); }, enumerable : true, configurable : true }, "w" : { get : function(){ return this.getAngVel(); }, set : function(newValue){ this.setAngVel(newValue); }, enumerable : true, configurable : true }, "p" : { get : function(){ return this.getPos(); }, set : function(newValue){ this.setPos(newValue); }, enumerable : true, configurable : true }, "v" : { get : function(){ return this.getVel(); }, set : function(newValue){ this.setVel(newValue); }, enumerable : true, configurable : true }, "i" : { get : function(){ return this.getMoment(); }, set : function(newValue){ this.setMoment(newValue); }, enumerable : true, configurable : true } }); // Shape properties Object.defineProperties(cp.Shape.prototype, { "body" : { get : function(){ return this.getBody(); }, set : function(newValue){ this.setBody(newValue); }, enumerable : true, configurable : true }, "group" : { get : function(){ return this.getGroup(); }, set : function(newValue){ this.setGroup(newValue); }, enumerable : true, configurable : true }, "collision_type" : { get : function(){ return this.getCollisionType(); }, enumerable : true, configurable : true } }); // Constraint properties Object.defineProperties(cp.Constraint.prototype, { "maxForce" : { get : function(){ return this.getMaxForce(); }, set : function(newValue){ this.setMaxForce(newValue); }, enumerable : true, configurable : true } }); // PinJoint properties Object.defineProperties(cp.PinJoint.prototype, { "anchr1" : { get : function(){ return this.getAnchr1(); }, set : function(newValue){ this.setAnchr1(newValue); }, enumerable : true, configurable : true }, "anchr2" : { get : function(){ return this.getAnchr2(); }, set : function(newValue){ this.setAnchr2(newValue); }, enumerable : true, configurable : true } });