2012-11-22 16:11:47 +08:00
|
|
|
//
|
|
|
|
// Chipmunk defines
|
|
|
|
//
|
|
|
|
|
2013-01-05 13:58:56 +08:00
|
|
|
var cp = cp || {};
|
|
|
|
|
2012-11-22 16:11:47 +08:00
|
|
|
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;
|
|
|
|
|
2012-11-29 15:29:58 +08:00
|
|
|
// XXX: renaming functions should be supported in JSB
|
|
|
|
cp.clamp01 = cp.fclamp01;
|
2012-11-22 16:11:47 +08:00
|
|
|
|
|
|
|
|
|
|
|
/// 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
|
|
|
|
];
|
2012-11-23 10:05:18 +08:00
|
|
|
|
2012-11-22 16:11:47 +08:00
|
|
|
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;
|
2012-11-23 10:05:18 +08:00
|
|
|
|
2012-11-22 16:11:47 +08:00
|
|
|
return cp.BoxShape2(body, new cp.BB(-hw, -hh, hw, hh));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/// Initialize an static body
|
2012-11-23 10:05:18 +08:00
|
|
|
cp.StaticBody = function()
|
2012-11-22 16:11:47 +08:00
|
|
|
{
|
|
|
|
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
|
2013-01-05 13:58:56 +08:00
|
|
|
}
|
2012-11-22 16:11:47 +08:00
|
|
|
|
|
|
|
});
|
2012-11-23 10:05:18 +08:00
|
|
|
|
|
|
|
// Shape properties
|
|
|
|
Object.defineProperties(cp.Shape.prototype,
|
|
|
|
{
|
|
|
|
"body" : {
|
|
|
|
get : function(){
|
|
|
|
return this.getBody();
|
|
|
|
},
|
|
|
|
set : function(newValue){
|
|
|
|
this.setBody(newValue);
|
|
|
|
},
|
|
|
|
enumerable : true,
|
|
|
|
configurable : true
|
|
|
|
},
|
2012-11-29 15:29:58 +08:00
|
|
|
"group" : {
|
|
|
|
get : function(){
|
|
|
|
return this.getGroup();
|
|
|
|
},
|
|
|
|
set : function(newValue){
|
|
|
|
this.setGroup(newValue);
|
|
|
|
},
|
|
|
|
enumerable : true,
|
|
|
|
configurable : true
|
|
|
|
},
|
2012-11-23 10:05:18 +08:00
|
|
|
"collision_type" : {
|
|
|
|
get : function(){
|
|
|
|
return this.getCollisionType();
|
|
|
|
},
|
|
|
|
enumerable : true,
|
|
|
|
configurable : true
|
|
|
|
}
|
|
|
|
});
|
2012-11-29 15:29:58 +08:00
|
|
|
|
|
|
|
// 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
|
|
|
|
}
|
|
|
|
});
|