2014-10-27 23:31:26 +00:00
/* p2.js custom build for Phaser v2.1.4 - http://phaser.io - @photonstorm - (c) 2014 Photon Storm Ltd. */
2014-08-28 03:53:05 +00:00
! function ( a ) { "object" == typeof exports ? module . exports = a ( ) : "function" == typeof define && define . amd ? define ( "p2" , function ( ) { return this . p2 = a ( ) } ( ) ) : "undefined" != typeof window ? window . p2 = a ( ) : "undefined" != typeof global ? self . p2 = a ( ) : "undefined" != typeof self && ( self . p2 = a ( ) ) } ( function ( ) { return function a ( b , c , d ) { function e ( g , h ) { if ( ! c [ g ] ) { if ( ! b [ g ] ) { var i = "function" == typeof require && require ; if ( ! h && i ) return i ( g , ! 0 ) ; if ( f ) return f ( g , ! 0 ) ; throw new Error ( "Cannot find module '" + g + "'" ) } var j = c [ g ] = { exports : { } } ; b [ g ] [ 0 ] . call ( j . exports , function ( a ) { var c = b [ g ] [ 1 ] [ a ] ; return e ( c ? c : a ) } , j , j . exports , a , b , c , d ) } return c [ g ] . exports } for ( var f = "function" == typeof require && require , g = 0 ; g < d . length ; g ++ ) e ( d [ g ] ) ; return e } ( { 1 : [ function ( a , b ) { a = function c ( b , d , e ) { function f ( h , i ) { if ( ! d [ h ] ) { if ( ! b [ h ] ) { var j = "function" == typeof a && a ; if ( ! i && j ) return j ( h , ! 0 ) ; if ( g ) return g ( h , ! 0 ) ; throw new Error ( "Cannot find module '" + h + "'" ) } var k = d [ h ] = { exports : { } } ; b [ h ] [ 0 ] . call ( k . exports , function ( a ) { var c = b [ h ] [ 1 ] [ a ] ; return f ( c ? c : a ) } , k , k . exports , c , b , d , e ) } return d [ h ] . exports } for ( var g = "function" == typeof a && a , h = 0 ; h < e . length ; h ++ ) f ( e [ h ] ) ; return f } ( { PcZj9L : [ function ( a , b , c ) { function d ( a , b ) { var c = typeof a ; if ( "base64" === b && "string" === c ) for ( a = ib ( a ) ; a . length % 4 !== 0 ; ) a += "=" ; var e ; if ( "number" === c ) e = nb ( a ) ; else if ( "string" === c ) e = d . byteLength ( a , b ) ; else { if ( "object" !== c ) throw new Error ( "First argument needs to be a number, array or string." ) ; e = nb ( a . length ) } var f = lb ( new Cb ( e ) ) ; if ( d . isBuffer ( a ) ) f . set ( a ) ; else if ( ob ( a ) ) for ( var g = 0 ; e > g ; g ++ ) f [ g ] = d . isBuffer ( a ) ? a . readUInt8 ( g ) : a [ g ] ; else "string" === c && f . write ( a , 0 , b ) ; return f } function e ( a , b , c , e ) { c = Number ( c ) || 0 ; var f = a . length - c ; e ? ( e = Number ( e ) , e > f && ( e = f ) ) : e = f ; var g = b . length ; if ( g % 2 !== 0 ) throw new Error ( "Invalid hex string" ) ; e > g / 2 && ( e = g / 2 ) ; for ( var h = 0 ; e > h ; h ++ ) { var i = parseInt ( b . substr ( 2 * h , 2 ) , 16 ) ; if ( isNaN ( i ) ) throw new Error ( "Invalid hex string" ) ; a [ c + h ] = i } return d . _charsWritten = 2 * h , h } function f ( a , b , c , e ) { return d . _charsWritten = tb ( qb ( b ) , a , c , e ) } function g ( a , b , c , e ) { return d . _charsWritten = tb ( rb ( b ) , a , c , e ) } function h ( a , b , c , d ) { return g ( a , b , c , d ) } function i ( a , b , c , e ) { return d . _charsWritten = tb ( sb ( b ) , a , c , e ) } function j ( a , b , c , d ) { if ( isFinite ( b ) ) isFinite ( c ) || ( d = c , c = void 0 ) ; else { var j = d ; d = b , b = c , c = j } b = Number ( b ) || 0 ; var k = this . length - b ; switch ( c ? ( c = Number ( c ) , c > k && ( c = k ) ) : c = k , d = String ( d || "utf8" ) . toLowerCase ( ) ) { case "hex" : return e ( this , a , b , c ) ; case "utf8" : case "utf-8" : return f ( this , a , b , c ) ; case "ascii" : return g ( this , a , b , c ) ; case "binary" : return h ( this , a , b , c ) ; case "base64" : return i ( this , a , b , c ) ; default : throw new Error ( "Unknown encoding" ) } } function k ( a , b , c ) { var d = this instanceof kb ? this . _proxy : this ; if ( a = String ( a || "utf8" ) . toLowerCase ( ) , b = Number ( b ) || 0 , c = void 0 !== c ? Number ( c ) : c = d . length , c === b ) return "" ; switch ( a ) { case "hex" : return r ( d , b , c ) ; case "utf8" : case "utf-8" : return o ( d , b , c ) ; case "ascii" : return p ( d , b , c ) ; case "binary" : return q ( d , b , c ) ; case "base64" : return n ( d , b , c ) ; default : throw new Error ( "Unknown encoding" ) } } function l ( ) { return { type : "Buffer" , data : Array . prototype . slice . call ( this , 0 ) } } function m ( a , b , c , d ) { var e = this ; if ( c || ( c = 0 ) , d || 0 === d || ( d = this . length ) , b || ( b = 0 ) , d !== c && 0 !== a . length && 0 !== e . length ) { if ( c > d ) throw new Error ( "sourceEnd < sourceStart" ) ; if ( 0 > b || b >= a . length ) throw new Error ( "targetStart out of bounds" ) ; if ( 0 > c || c >= e . length ) throw new Error ( "sourceStart out of bounds" ) ; if ( 0 > d || d > e . length ) throw new Error ( "sourceEnd out of bounds" ) ; d > this . length && ( d = this . length ) , a . length - b < d - c && ( d = a . length - b + c ) ; for ( var f = 0 ; d - c > f ; f ++ ) a [ f + b ] = this [ f + c ] } } function n ( b , c , d ) { var e = b . slice ( c , d ) ; return a ( "base64-js" ) . fromByteArray ( e ) } function o ( a , b , c ) { for ( var d = a . slice ( b , c ) , e = "" , f = "" , g = 0 ; g < d . length ; ) d [ g ] <= 127 ? ( e += ub ( f ) + String . fromCharCode ( d [ g ] ) , f = "" ) : f += "%" + d [ g ] . toString ( 16 ) , g ++ ; return e + ub ( f ) } function p ( a , b , c ) { for ( var d = a . slice ( b , c ) , e = "" , f = 0 ; f < d . length ; f ++ ) e += String . fromCharCode ( d [ f ] ) ; return e } function q ( a , b , c ) { return p ( a , b , c ) } function r ( a , b , c ) { var d = a . length ; ( ! b || 0 > b ) && ( b = 0 ) , ( ! c || 0 > c || c > d ) && ( c = d ) ; for ( var e = "" , f = b ; c > f ; f ++ ) e += pb ( a [ f ] ) ; return e } function s ( a , b ) { var c = this . length ; return a = mb ( a , c , 0 ) , b = mb ( b , c , c ) , lb ( this . subarray ( a , b ) ) } function t ( a , b ) { var c = this ; return b || ( yb ( void 0 !== a && null !== a , "missing offset" ) , yb ( a < c . length , " Trying to read beyond buffer length
for ( var x = 0 ; x < this . vertices . length ; ++ x ) if ( v . isReflex ( x ) ) { b . push ( v . vertices [ x ] ) , m = n = Number . MAX _VALUE ; for ( var y = 0 ; y < this . vertices . length ; ++ y ) f . left ( v . at ( x - 1 ) , v . at ( x ) , v . at ( y ) ) && f . rightOn ( v . at ( x - 1 ) , v . at ( x ) , v . at ( y - 1 ) ) && ( l = d ( v . at ( x - 1 ) , v . at ( x ) , v . at ( y ) , v . at ( y - 1 ) ) , f . right ( v . at ( x + 1 ) , v . at ( x ) , l ) && ( o = f . sqdist ( v . vertices [ x ] , l ) , n > o && ( n = o , k = l , r = y ) ) ) , f . left ( v . at ( x + 1 ) , v . at ( x ) , v . at ( y + 1 ) ) && f . rightOn ( v . at ( x + 1 ) , v . at ( x ) , v . at ( y ) ) && ( l = d ( v . at ( x + 1 ) , v . at ( x ) , v . at ( y ) , v . at ( y + 1 ) ) , f . left ( v . at ( x - 1 ) , v . at ( x ) , l ) && ( o = f . sqdist ( v . vertices [ x ] , l ) , m > o && ( m = o , j = l , q = y ) ) ) ; if ( r == ( q + 1 ) % this . vertices . length ) l [ 0 ] = ( k [ 0 ] + j [ 0 ] ) / 2 , l [ 1 ] = ( k [ 1 ] + j [ 1 ] ) / 2 , e . push ( l ) , q > x ? ( t . append ( v , x , q + 1 ) , t . vertices . push ( l ) , u . vertices . push ( l ) , 0 != r && u . append ( v , r , v . vertices . length ) , u . append ( v , 0 , x + 1 ) ) : ( 0 != x && t . append ( v , x , v . vertices . length ) , t . append ( v , 0 , q + 1 ) , t . vertices . push ( l ) , u . vertices . push ( l ) , u . append ( v , r , x + 1 ) ) ; else { if ( r > q && ( q += this . vertices . length ) , p = Number . MAX _VALUE , r > q ) return a ; for ( var y = r ; q >= y ; ++ y ) f . leftOn ( v . at ( x - 1 ) , v . at ( x ) , v . at ( y ) ) && f . rightOn ( v . at ( x + 1 ) , v . at ( x ) , v . at ( y ) ) && ( o = f . sqdist ( v . at ( x ) , v . at ( y ) ) , p > o && ( p = o , s = y % this . vertices . length ) ) ; s > x ? ( t . append ( v , x , s + 1 ) , 0 != s && u . append ( v , s , w . length ) , u . append ( v , 0 , x + 1 ) ) : ( 0 != x && t . append ( v , x , w . length ) , t . append ( v , 0 , s + 1 ) , u . append ( v , s , x + 1 ) ) } return t . vertices . length < u . vertices . length ? ( t . quickDecomp ( a , b , e , g , h , i ) , u . quickDecomp ( a , b , e , g , h , i ) ) : ( u . quickDecomp ( a , b , e , g , h , i ) , t . quickDecomp ( a , b , e , g , h , i ) ) , a } return a . push ( this ) , a } , c . prototype . removeCollinearPoints = function ( a ) { for ( var b = 0 , c = this . vertices . length - 1 ; this . vertices . length > 3 && c >= 0 ; -- c ) f . collinear ( this . at ( c - 1 ) , this . at ( c ) , this . at ( c + 1 ) , a ) && ( this . vertices . splice ( c % this . vertices . length , 1 ) , c -- , b ++ ) ; return b } } , { "./Line" : 3 , "./Point" : 4 , "./Scalar" : 6 , _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 6 : [ function ( a , b ) { function c ( ) { } a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) ; b . exports = c , c . eq = function ( a , b , c ) { return c = c || 0 , Math . abs ( a - b ) < c } } , { _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 7 : [ function ( a , b ) { a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) ; b . exports = { Polygon : a ( "./Polygon" ) , Point : a ( "./Point" ) } } , { "./Point" : 4 , "./Polygon" : 5 , _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 8 : [ function ( a , b ) { a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) ; b . exports = { name : "p2" , version : "0.6.0" , description : "A JavaScript 2D physics engine." , author : "Stefan Hedman <schteppe@gmail.com> (http://steffe.se)" , keywords : [ "p2.js" , "p2" , "physics" , "engine" , "2d" ] , main : "./src/p2.js" , engines : { node : "*" } , repository : { type : "git" , url : "https://github.com/schteppe/p2.js.git" } , bugs : { url : "https://github.com/schteppe/p2.js/issues" } , licenses : [ { type : "MIT" } ] , devDependencies : { grunt : "~0.4.0" , "grunt-contrib-jshint" : "~0.9.2" , "grunt-contrib-nodeunit" : "~0.1.2" , "grunt-contrib-uglify" : "~0.4.0" , "grunt-contrib-watch" : "~0.5.0" , "grunt-browserify" : "~2.0.1" , "grunt-contrib-concat" : "^0.4.0" } , dependencies : { "poly-decomp" : "0.1.0" } } } , { _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 9 : [ function ( a , b ) { function c ( a ) { this . lowerBound = d . create ( ) , a && a . lowerBound && d . copy ( this . lowerBound , a . lowerBound ) , this . upperBound = d . create ( ) , a && a . upperBound && d . copy ( this . upperBound , a . upperBound ) } { var d = ( a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) , a ( "../math/vec2" ) ) ; a ( "../utils/Utils" ) } b . exports = c ; var e = d . create ( ) ; c . prototype . setFromPoints = function ( a , b , c , f ) { var g = this . lowerBound , h = this . upperBound ; "number" != typeof c && ( c = 0 ) , 0 !== c ? d . rotate ( g , a [ 0 ] , c ) : d . copy ( g , a [ 0 ] ) , d . copy ( h , g ) ; for ( var i = Math . cos ( c ) , j = Math . sin ( c ) , k = 1 ; k < a . length ; k ++ ) { var l = a [ k ] ; if ( 0 !== c ) { var m = l [ 0 ] , n = l [ 1 ] ; e [ 0 ] = i * m - j * n , e [ 1 ] = j * m + i * n , l = e } for ( var o = 0 ; 2 > o ; o ++ ) l [ o ] > h [ o ] && ( h [ o ] = l [ o ] ) , l [ o ] < g [ o ] && ( g [ o ] = l [ o ] ) } b && ( d . add ( this . lowerBound , this . lowerBound , b ) , d . add ( this . upperBound , this . upperBound , b ) ) , f && ( this . lowerBound [ 0 ] -= f , this . lowerBound [ 1 ] -= f , this . upperBound [ 0 ] += f , this . upperBound [ 1 ] += f ) } , c . prototype . copy = function ( a ) { d . copy ( this . lowerBound , a . lowerBound ) , d . copy ( this . upperBound , a . upperBound ) } , c . prototype . extend = function ( a ) { for ( var b = 2 ; b -- ; ) { var c = a . lowerBound [ b ] ; this . lowerBound [ b ] > c && ( this . lowerBound [ b ] = c ) ; var d = a . upperBound [ b ] ; this . upperBound [ b ] < d && ( this . upperBound [ b ] = d ) } } , c . prototype . overlaps = function ( a ) { var b = this . lowerBound , c = this . upperBound , d = a . lowerBound ,
else { var j = f . create ( ) , k = f . create ( ) , l = f . create ( ) ; f . rotate ( j , h , a . angle ) , f . rotate ( k , i , b . angle ) , f . add ( l , b . position , k ) , f . sub ( l , l , j ) , f . sub ( l , l , a . position ) , this . distance = f . length ( l ) } var m ; m = "undefined" == typeof c . maxForce ? Number . MAX _VALUE : c . maxForce ; var n = new e ( a , b , - m , m ) ; this . equations = [ n ] , this . maxForce = m ; var l = f . create ( ) , o = f . create ( ) , p = f . create ( ) , q = this ; n . computeGq = function ( ) { var a = this . bodyA , b = this . bodyB , c = a . position , d = b . position ; return f . rotate ( o , h , a . angle ) , f . rotate ( p , i , b . angle ) , f . add ( l , d , p ) , f . sub ( l , l , o ) , f . sub ( l , l , c ) , f . length ( l ) - q . distance } , this . setMaxForce ( m ) , this . upperLimitEnabled = ! 1 , this . upperLimit = 1 , this . lowerLimitEnabled = ! 1 , this . lowerLimit = 0 , this . position = 0 } var d = ( a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) , a ( "./Constraint" ) ) , e = a ( "../equations/Equation" ) , f = a ( "../math/vec2" ) , g = a ( "../utils/Utils" ) ; b . exports = c , c . prototype = new d ; var h = f . create ( ) , i = f . create ( ) , j = f . create ( ) ; c . prototype . update = function ( ) { var a = this . equations [ 0 ] , b = this . bodyA , c = this . bodyB , d = ( this . distance , b . position ) , e = c . position , g = this . equations [ 0 ] , k = a . G ; f . rotate ( i , this . localAnchorA , b . angle ) , f . rotate ( j , this . localAnchorB , c . angle ) , f . add ( h , e , j ) , f . sub ( h , h , i ) , f . sub ( h , h , d ) , this . position = f . length ( h ) ; var l = ! 1 ; if ( this . upperLimitEnabled && this . position > this . upperLimit && ( g . maxForce = 0 , g . minForce = - this . maxForce , this . distance = this . upperLimit , l = ! 0 ) , this . lowerLimitEnabled && this . position < this . lowerLimit && ( g . maxForce = this . maxForce , g . minForce = 0 , this . distance = this . lowerLimit , l = ! 0 ) , ( this . lowerLimitEnabled || this . upperLimitEnabled ) && ! l ) return void ( g . enabled = ! 1 ) ; g . enabled = ! 0 , f . normalize ( h , h ) ; var m = f . crossLength ( i , h ) , n = f . crossLength ( j , h ) ; k [ 0 ] = - h [ 0 ] , k [ 1 ] = - h [ 1 ] , k [ 2 ] = - m , k [ 3 ] = h [ 0 ] , k [ 4 ] = h [ 1 ] , k [ 5 ] = n } , c . prototype . setMaxForce = function ( a ) { var b = this . equations [ 0 ] ; b . minForce = - a , b . maxForce = a } , c . prototype . getMaxForce = function ( ) { var a = this . equations [ 0 ] ; return a . maxForce } } , { "../equations/Equation" : 23 , "../math/vec2" : 31 , "../utils/Utils" : 50 , "./Constraint" : 15 , _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 17 : [ function ( a , b ) { function c ( a , b , c ) { c = c || { } , d . call ( this , a , b , d . GEAR , c ) , this . ratio = "number" == typeof c . ratio ? c . ratio : 1 , this . angle = "number" == typeof c . angle ? c . angle : b . angle - this . ratio * a . angle , c . angle = this . angle , c . ratio = this . ratio , this . equations = [ new e ( a , b , c ) ] , "number" == typeof c . maxTorque && this . setMaxTorque ( c . maxTorque ) } { var d = ( a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) , a ( "./Constraint" ) ) , e = ( a ( "../equations/Equation" ) , a ( "../equations/AngleLockEquation" ) ) ; a ( "../math/vec2" ) } b . exports = c , c . prototype = new d , c . prototype . update = function ( ) { var a = this . equations [ 0 ] ; a . ratio !== this . ratio && a . setRatio ( this . ratio ) , a . angle = this . angle } , c . prototype . setMaxTorque = function ( a ) { this . equations [ 0 ] . setMaxTorque ( a ) } , c . prototype . getMaxTorque = function ( ) { return this . equations [ 0 ] . maxForce } } , { "../equations/AngleLockEquation" : 21 , "../equations/Equation" : 23 , "../math/vec2" : 31 , "./Constraint" : 15 , _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 18 : [ function ( a , b ) { function c ( a , b , c ) { c = c || { } , d . call ( this , a , b , d . LOCK , c ) ; var g = "undefined" == typeof c . maxForce ? Number . MAX _VALUE : c . maxForce , h = ( c . localAngleB || 0 , new f ( a , b , - g , g ) ) , i = new f ( a , b , - g , g ) , j = new f ( a , b , - g , g ) , k = e . create ( ) , l = e . create ( ) , m = this ; h . computeGq = function ( ) { return e . rotate ( k , m . localOffsetB , a . angle ) , e . sub ( l , b . position , a . position ) , e . sub ( l , l , k ) , l [ 0 ] } , i . computeGq = function ( ) { return e . rotate ( k , m . localOffsetB , a . angle ) , e . sub ( l , b . position , a . position ) , e . sub ( l , l , k ) , l [ 1 ] } ; var n = e . create ( ) , o = e . create ( ) ; j . computeGq = function ( ) { return e . rotate ( n , m . localOffsetB , b . angle - m . localAngleB ) , e . scale ( n , n , - 1 ) , e . sub ( l , a . position , b . position ) , e . add ( l , l , n ) , e . rotate ( o , n , - Math . PI / 2 ) , e . normalize ( o , o ) , e . dot ( l , o ) } , this . localOffsetB = e . create ( ) , c . localOffsetB ? e . copy ( this . localOffsetB , c . localOffsetB ) : ( e . sub ( this . localOffsetB , b . position , a . position ) , e . rotate ( this . localOffsetB , this . localOffsetB , - a . angle ) ) , this . localAngleB = 0 , this . localAngleB = "number" == typeof c . localAngleB ? c . localAngleB : b . angle - a . angle , this . equations . push ( h , i , j ) , this . setMaxForce ( g ) } var d = ( a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) , a ( "./Constraint" ) ) , e = a ( "../math/vec2" ) , f = a ( "../equations/Equation" ) ; b . exports = c , c . prototype = new d , c . prototype . setMaxForce = function (
this . getWorldAnchorA ( u ) , this . getWorldAnchorB ( v ) , d . sub ( w , u , e . position ) , d . sub ( x , v , o . position ) , d . sub ( p , v , u ) ; var y = d . len ( p ) ; d . normalize ( q , p ) , d . sub ( r , o . velocity , e . velocity ) , d . crossZV ( t , o . angularVelocity , x ) , d . add ( r , r , t ) , d . crossZV ( t , e . angularVelocity , w ) , d . sub ( r , r , t ) , d . scale ( s , q , - a * ( y - c ) - b * d . dot ( r , q ) ) , d . sub ( e . force , e . force , s ) , d . add ( o . force , o . force , s ) ; var z = d . crossLength ( w , s ) , A = d . crossLength ( x , s ) ; e . angularForce -= z , o . angularForce += A } } , { "../math/vec2" : 31 , "../utils/Utils" : 50 , "./Spring" : 35 , _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 34 : [ function ( a , b ) { function c ( a , b , c ) { c = c || { } , d . call ( this , a , b , c ) , this . restAngle = "number" == typeof c . restAngle ? c . restAngle : b . angle - a . angle } var d = ( a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) , a ( "../math/vec2" ) , a ( "./Spring" ) ) ; b . exports = c , c . prototype = new d , c . prototype . applyForce = function ( ) { var a = this . stiffness , b = this . damping , c = this . restAngle , d = this . bodyA , e = this . bodyB , f = e . angle - d . angle , g = e . angularVelocity - d . angularVelocity , h = - a * ( f - c ) - b * g * 0 ; d . angularForce -= h , e . angularForce += h } } , { "../math/vec2" : 31 , "./Spring" : 35 , _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 35 : [ function ( a , b ) { function c ( a , b , c ) { c = d . defaults ( c , { stiffness : 100 , damping : 1 } ) , this . stiffness = c . stiffness , this . damping = c . damping , this . bodyA = a , this . bodyB = b } var d = ( a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) , a ( "../math/vec2" ) , a ( "../utils/Utils" ) ) ; b . exports = c , c . prototype . applyForce = function ( ) { } } , { "../math/vec2" : 31 , "../utils/Utils" : 50 , _ _browserify _Buffer : 1 , _ _browserify _process : 2 } ] , 36 : [ function ( a , b ) { a ( "__browserify_process" ) , a ( "__browserify_Buffer" ) ; b . exports = { AABB : a ( "./collision/AABB" ) , AngleLockEquation : a ( "./equations/AngleLockEquation" ) , Body : a ( "./objects/Body" ) , Broadphase : a ( "./collision/Broadphase" ) , Capsule : a ( "./shapes/Capsule" ) , Circle : a ( "./shapes/Circle" ) , Constraint : a ( "./constraints/Constraint" ) , ContactEquation : a ( "./equations/ContactEquation" ) , ContactMaterial : a ( "./material/ContactMaterial" ) , Convex : a ( "./shapes/Convex" ) , DistanceConstraint : a ( "./constraints/DistanceConstraint" ) , Equation : a ( "./equations/Equation" ) , EventEmitter : a ( "./events/EventEmitter" ) , FrictionEquation : a ( "./equations/FrictionEquation" ) , GearConstraint : a ( "./constraints/GearConstraint" ) , GridBroadphase : a ( "./collision/GridBroadphase" ) , GSSolver : a ( "./solver/GSSolver" ) , Heightfield : a ( "./shapes/Heightfield" ) , Line : a ( "./shapes/Line" ) , LockConstraint : a ( "./constraints/LockConstraint" ) , Material : a ( "./material/Material" ) , Narrowphase : a ( "./collision/Narrowphase" ) , NaiveBroadphase : a ( "./collision/NaiveBroadphase" ) , Particle : a ( "./shapes/Particle" ) , Plane : a ( "./shapes/Plane" ) , RevoluteConstraint : a ( "./constraints/RevoluteConstraint" ) , PrismaticConstraint : a ( "./constraints/PrismaticConstraint" ) , Rectangle : a ( "./shapes/Rectangle" ) , RotationalVelocityEquation : a ( "./equations/RotationalVelocityEquation" ) , SAPBroadphase : a ( "./collision/SAPBroadphase" ) , Shape : a ( "./shapes/Shape" ) , Solver : a ( "./solver/Solver" ) , Spring : a ( "./objects/Spring" ) , LinearSpring : a ( "./objects/LinearSpring" ) , RotationalSpring : a ( "./objects/RotationalSpring" ) , Utils : a ( "./utils/Utils" ) , World : a ( "./world/World" ) , vec2 : a ( "./math/vec2" ) , version : a ( "../package.json" ) . version } } , { "../package.json" : 8 , "./collision/AABB" : 9 , "./collision/Broadphase" : 10 , "./collision/GridBroadphase" : 11 , "./collision/NaiveBroadphase" : 12 , "./collision/Narrowphase" : 13 , "./collision/SAPBroadphase" : 14 , "./constraints/Constraint" : 15 , "./constraints/DistanceConstraint" : 16 , "./constraints/GearConstraint" : 17 , "./constraints/LockConstraint" : 18 , "./constraints/PrismaticConstraint" : 19 , "./constraints/RevoluteConstraint" : 20 , "./equations/AngleLockEquation" : 21 , "./equations/ContactEquation" : 22 , "./equations/Equation" : 23 , "./equations/FrictionEquation" : 24 , "./equations/RotationalVelocityEquation" : 26 , "./events/EventEmitter" : 27 , "./material/ContactMaterial" : 28 , "./material/Material" : 29 , "./math/vec2" : 31 , "./objects/Body" : 32 , "./objects/LinearSpring" : 33 , "./objects/RotationalSpring" : 34 , "./objects/Spring" : 35 , "./shapes/Capsule" : 37 , "./shapes/Circle" : 38 , "./shapes/Convex" : 39 , "./shapes/Heightfield" : 40 , "./shapes/Line" : 41 , "./shapes/Particle" : 42 , "./shapes/Plane" : 43 , "./shapes/Rectangle" : 44 , "./shapes/Shape" : 45 , "./solver/GSSolver" : 46 , " . / solver / Solver
2014-09-09 13:47:54 +00:00
} , c . prototype . runNarrowphase = function ( a , b , c , d , f , g , h , i , j , k , m ) { if ( 0 !== ( c . collisionGroup & h . collisionMask ) && 0 !== ( h . collisionGroup & c . collisionMask ) ) { e . rotate ( v , d , b . angle ) , e . rotate ( w , i , g . angle ) , e . add ( v , v , b . position ) , e . add ( w , w , g . position ) ; var n = f + b . angle , o = j + g . angle ; a . enableFriction = k . friction > 0 , a . frictionCoefficient = k . friction ; var p ; p = b . type === l . STATIC || b . type === l . KINEMATIC ? g . mass : g . type === l . STATIC || g . type === l . KINEMATIC ? b . mass : b . mass * g . mass / ( b . mass + g . mass ) , a . slipForce = k . friction * m * p , a . restitution = k . restitution , a . surfaceVelocity = k . surfaceVelocity , a . frictionStiffness = k . frictionStiffness , a . frictionRelaxation = k . frictionRelaxation , a . stiffness = k . stiffness , a . relaxation = k . relaxation , a . contactSkinSize = k . contactSkinSize ; var q = a [ c . type | h . type ] , r = 0 ; if ( q ) { var s = c . sensor || h . sensor , t = a . frictionEquations . length ; r = c . type < h . type ? q . call ( a , b , c , v , n , g , h , w , o , s ) : q . call ( a , g , h , w , o , b , c , v , n , s ) ; var u = a . frictionEquations . length - t ; if ( r ) { if ( b . allowSleep && b . type === l . DYNAMIC && b . sleepState === l . SLEEPING && g . sleepState === l . AWAKE && g . type !== l . STATIC ) { var x = e . squaredLength ( g . velocity ) + Math . pow ( g . angularVelocity , 2 ) , y = Math . pow ( g . sleepSpeedLimit , 2 ) ; x >= 2 * y && ( b . _wakeUpAfterNarrowphase = ! 0 ) } if ( g . allowSleep && g . type === l . DYNAMIC && g . sleepState === l . SLEEPING && b . sleepState === l . AWAKE && b . type !== l . STATIC ) { var z = e . squaredLength ( b . velocity ) + Math . pow ( b . angularVelocity , 2 ) , A = Math . pow ( b . sleepSpeedLimit , 2 ) ; z >= 2 * A && ( g . _wakeUpAfterNarrowphase = ! 0 ) } if ( this . overlapKeeper . setOverlapping ( b , c , g , h ) , this . has ( "beginContact" ) && this . overlapKeeper . isNewOverlap ( c , h ) ) { var B = this . beginContactEvent ; if ( B . shapeA = c , B . shapeB = h , B . bodyA = b , B . bodyB = g , B . contactEquations . length = 0 , "number" == typeof r ) for ( var C = a . contactEquations . length - r ; C < a . contactEquations . length ; C ++ ) B . contactEquations . push ( a . contactEquations [ C ] ) ; this . emit ( B ) } if ( "number" == typeof r && u > 1 ) for ( var C = a . frictionEquations . length - u ; C < a . frictionEquations . length ; C ++ ) { var D = a . frictionEquations [ C ] ; D . setSlipForce ( D . getSlipForce ( ) / u ) } } } } } , c . prototype . addSpring = function ( a ) { this . springs . push ( a ) , this . addSpringEvent . spring = a , this . emit ( this . addSpringEvent ) } , c . prototype . removeSpring = function ( a ) { var b = this . springs . indexOf ( a ) ; - 1 !== b && q . splice ( this . springs , b , 1 ) } , c . prototype . addBody = function ( a ) { - 1 === this . bodies . indexOf ( a ) && ( this . bodies . push ( a ) , a . world = this , this . addBodyEvent . body = a , this . emit ( this . addBodyEvent ) ) } , c . prototype . removeBody = function ( a ) { if ( this . stepping ) this . bodiesToBeRemoved . push ( a ) ; else { a . world = null ; var b = this . bodies . indexOf ( a ) ; - 1 !== b && ( q . splice ( this . bodies , b , 1 ) , this . removeBodyEvent . body = a , a . resetConstraintVelocity ( ) , this . emit ( this . removeBodyEvent ) ) } } , c . prototype . getBodyById = function ( a ) { for ( var b = this . bodies , c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; if ( d . id === a ) return d } return ! 1 } , c . prototype . disableBodyCollision = function ( a , b ) { this . disabledBodyCollisionPairs . push ( a , b ) } , c . prototype . enableBodyCollision = function ( a , b ) { for ( var c = this . disabledBodyCollisionPairs , d = 0 ; d < c . length ; d += 2 ) if ( c [ d ] === a && c [ d + 1 ] === b || c [ d + 1 ] === a && c [ d ] === b ) return void c . splice ( d , 2 ) } , c . prototype . clear = function ( ) { this . time = 0 , this . fixedStepTime = 0 , this . solver && this . solver . equations . length && this . solver . removeAllEquations ( ) ; for ( var a = this . constraints , b = a . length - 1 ; b >= 0 ; b -- ) this . removeConstraint ( a [ b ] ) ; for ( var d = this . bodies , b = d . length - 1 ; b >= 0 ; b -- ) this . removeBody ( d [ b ] ) ; for ( var e = this . springs , b = e . length - 1 ; b >= 0 ; b -- ) this . removeSpring ( e [ b ] ) ; for ( var f = this . contactMaterials , b = f . length - 1 ; b >= 0 ; b -- ) this . removeContactMaterial ( f [ b ] ) ; c . apply ( this ) } , c . prototype . clone = function ( ) { var a = new c ; return a . fromJSON ( this . toJSON ( ) ) , a } ; var B = e . create ( ) , C = e . fromValues ( 0 , 0 ) , D = e . fromValues ( 0 , 0 ) ; c . prototype . hitTest = function ( a , b , c ) { c = c || 0 ; var d = new l ( { position : a } ) , k = new j , m = a , n = 0 , o = B , p = C , q = D ; d . addShape ( k ) ; for ( var r = this . narrowphase , s = [ ] , t = 0 , u = b . length ; t !== u ; t ++ ) for ( var v = b [ t ] , w = 0 , x = v . shapes . length ; w !== x ; w ++ ) { var y = v . shapes [ w ] , z = v . shapeOffsets [ w ] || p , A = v . shapeAngles [ w ] || 0 ; e . rotate ( o , z , v . angle ) , e . add ( o , o , v . position ) ; var E = A + v . angle ; ( y instanceof f && r . circleParticle ( v , y , o , E , d , k , m , n , ! 0 ) || y instanceof g && r . particleConvex ( d , k , m , n , v , y , o , E , ! 0 ) || y instanceof h && r . particlePlane ( d , k , m , n , v , y , o , E , ! 0 ) || y instanceof i && r . particleCapsule ( d , k , m , n , v , y , o , E , ! 0 ) || y instan
2014-11-08 19:11:28 +00:00
} , setRectangleFromSprite : function ( a ) { return "undefined" == typeof a && ( a = this . sprite ) , this . clearShapes ( ) , this . addRectangle ( a . width , a . height , 0 , 0 , a . rotation ) } , setMaterial : function ( a , b ) { if ( "undefined" == typeof b ) for ( var c = this . data . shapes . length - 1 ; c >= 0 ; c -- ) this . data . shapes [ c ] . material = a ; else b . material = a } , shapeChanged : function ( ) { this . debugBody && this . debugBody . draw ( ) } , addPhaserPolygon : function ( a , b ) { for ( var c = this . game . cache . getPhysicsData ( a , b ) , d = [ ] , e = 0 ; e < c . length ; e ++ ) { var f = c [ e ] , g = this . addFixture ( f ) ; d [ f . filter . group ] = d [ f . filter . group ] || [ ] , d [ f . filter . group ] = d [ f . filter . group ] . concat ( g ) , f . fixtureKey && ( d [ f . fixtureKey ] = g ) } return this . data . aabbNeedsUpdate = ! 0 , this . shapeChanged ( ) , d } , addFixture : function ( a ) { var b = [ ] ; if ( a . circle ) { var c = new p2 . Circle ( this . world . pxm ( a . circle . radius ) ) ; c . collisionGroup = a . filter . categoryBits , c . collisionMask = a . filter . maskBits , c . sensor = a . isSensor ; var d = p2 . vec2 . create ( ) ; d [ 0 ] = this . world . pxmi ( a . circle . position [ 0 ] - this . sprite . width / 2 ) , d [ 1 ] = this . world . pxmi ( a . circle . position [ 1 ] - this . sprite . height / 2 ) , this . data . addShape ( c , d ) , b . push ( c ) } else for ( var e = a . polygons , f = p2 . vec2 . create ( ) , g = 0 ; g < e . length ; g ++ ) { for ( var h = e [ g ] , i = [ ] , j = 0 ; j < h . length ; j += 2 ) i . push ( [ this . world . pxmi ( h [ j ] ) , this . world . pxmi ( h [ j + 1 ] ) ] ) ; for ( var c = new p2 . Convex ( i ) , k = 0 ; k !== c . vertices . length ; k ++ ) { var l = c . vertices [ k ] ; p2 . vec2 . sub ( l , l , c . centerOfMass ) } p2 . vec2 . scale ( f , c . centerOfMass , 1 ) , f [ 0 ] -= this . world . pxmi ( this . sprite . width / 2 ) , f [ 1 ] -= this . world . pxmi ( this . sprite . height / 2 ) , c . updateTriangles ( ) , c . updateCenterOfMass ( ) , c . updateBoundingRadius ( ) , c . collisionGroup = a . filter . categoryBits , c . collisionMask = a . filter . maskBits , c . sensor = a . isSensor , this . data . addShape ( c , f ) , b . push ( c ) } return b } , loadPolygon : function ( a , b ) { for ( var c = this . game . cache . getPhysicsData ( a , b ) , d = p2 . vec2 . create ( ) , e = 0 ; e < c . length ; e ++ ) { for ( var f = [ ] , g = 0 ; g < c [ e ] . shape . length ; g += 2 ) f . push ( [ this . world . pxmi ( c [ e ] . shape [ g ] ) , this . world . pxmi ( c [ e ] . shape [ g + 1 ] ) ] ) ; for ( var h = new p2 . Convex ( f ) , i = 0 ; i !== h . vertices . length ; i ++ ) { var j = h . vertices [ i ] ; p2 . vec2 . sub ( j , j , h . centerOfMass ) } p2 . vec2 . scale ( d , h . centerOfMass , 1 ) , d [ 0 ] -= this . world . pxmi ( this . sprite . width / 2 ) , d [ 1 ] -= this . world . pxmi ( this . sprite . height / 2 ) , h . updateTriangles ( ) , h . updateCenterOfMass ( ) , h . updateBoundingRadius ( ) , this . data . addShape ( h , d ) } return this . data . aabbNeedsUpdate = ! 0 , this . shapeChanged ( ) , ! 0 } } , Phaser . Physics . P2 . Body . prototype . constructor = Phaser . Physics . P2 . Body , Phaser . Physics . P2 . Body . DYNAMIC = 1 , Phaser . Physics . P2 . Body . STATIC = 2 , Phaser . Physics . P2 . Body . KINEMATIC = 4 , Object . defineProperty ( Phaser . Physics . P2 . Body . prototype , "static" , { get : function ( ) { return this . data . type === Phaser . Physics . P2 . Body . STATIC } , set : function ( a ) { a && this . data . type !== Phaser . Physics . P2 . Body . STATIC ? ( this . data . type = Phaser . Physics . P2 . Body . STATIC , this . mass = 0 ) : a || this . data . type !== Phaser . Physics . P2 . Body . STATIC || ( this . data . type = Phaser . Physics . P2 . Body . DYNAMIC , 0 === this . mass && ( this . mass = 1 ) ) } } ) , Object . defineProperty ( Phaser . Physics . P2 . Body . prototype , "dynamic" , { get : function ( ) { return this . data . type === Phaser . Physics . P2 . Body . DYNAMIC } , set : function ( a ) { a && this . data . type !== Phaser . Physics . P2 . Body . DYNAMIC ? ( this . data . type = Phaser . Physics . P2 . Body . DYNAMIC , 0 === this . mass && ( this . mass = 1 ) ) : a || this . data . type !== Phaser . Physics . P2 . Body . DYNAMIC || ( this . data . type = Phaser . Physics . P2 . Body . STATIC , this . mass = 0 ) } } ) , Object . defineProperty ( Phaser . Physics . P2 . Body . prototype , "kinematic" , { get : function ( ) { return this . data . type === Phaser . Physics . P2 . Body . KINEMATIC } , set : function ( a ) { a && this . data . type !== Phaser . Physics . P2 . Body . KINEMATIC ? ( this . data . type = Phaser . Physics . P2 . Body . KINEMATIC , this . mass = 4 ) : a || this . data . type !== Phaser . Physics . P2 . Body . KINEMATIC || ( this . data . type = Phaser . Physics . P2 . Body . STATIC , this . mass = 0 ) } } ) , Object . defineProperty ( Phaser . Physics . P2 . Body . prototype , "allowSleep" , { get : function ( ) { return this . data . allowSleep } , set : function ( a ) { a !== this . data . allowSleep && ( this . data . allowSleep = a ) } } ) , Object . defineProperty ( Phaser . Physics . P2 . Body . prototype , "angle" , { get : function ( ) { return Phaser . Math . wrapAngle ( Phaser . Math . radToDeg ( this . data . angle ) ) } , set : function ( a ) { this . data . angle = Phaser . Math . degToRad ( Phaser . Math . wrapAngle ( a ) ) } } ) , Object . defineProperty ( Phaser . Physics . P2 . Body . prototype , "angularDamping" , { get : funct