diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
-

+

- API Docs for: 0.9 + API Docs for: 1.0
@@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/src/pixi/Sprite.js b/src/pixi/Sprite.js index fa23d1b..4b8954a 100644 --- a/src/pixi/Sprite.js +++ b/src/pixi/Sprite.js @@ -70,6 +70,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -92,7 +159,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -107,7 +186,6 @@ // some helper functions.. - /** * * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/src/pixi/Sprite.js b/src/pixi/Sprite.js index fa23d1b..4b8954a 100644 --- a/src/pixi/Sprite.js +++ b/src/pixi/Sprite.js @@ -70,6 +70,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -92,7 +159,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -107,7 +186,6 @@ // some helper functions.. - /** * * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId diff --git a/src/pixi/Stage.js b/src/pixi/Stage.js index 75bea00..4abe469 100644 --- a/src/pixi/Stage.js +++ b/src/pixi/Stage.js @@ -8,8 +8,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -19,6 +20,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -34,11 +39,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/src/pixi/Sprite.js b/src/pixi/Sprite.js index fa23d1b..4b8954a 100644 --- a/src/pixi/Sprite.js +++ b/src/pixi/Sprite.js @@ -70,6 +70,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -92,7 +159,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -107,7 +186,6 @@ // some helper functions.. - /** * * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId diff --git a/src/pixi/Stage.js b/src/pixi/Stage.js index 75bea00..4abe469 100644 --- a/src/pixi/Stage.js +++ b/src/pixi/Stage.js @@ -8,8 +8,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -19,6 +20,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -34,11 +39,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/src/pixi/Sprite.js b/src/pixi/Sprite.js index fa23d1b..4b8954a 100644 --- a/src/pixi/Sprite.js +++ b/src/pixi/Sprite.js @@ -70,6 +70,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -92,7 +159,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -107,7 +186,6 @@ // some helper functions.. - /** * * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId diff --git a/src/pixi/Stage.js b/src/pixi/Stage.js index 75bea00..4abe469 100644 --- a/src/pixi/Stage.js +++ b/src/pixi/Stage.js @@ -8,8 +8,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -19,6 +20,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -34,11 +39,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/src/pixi/Sprite.js b/src/pixi/Sprite.js index fa23d1b..4b8954a 100644 --- a/src/pixi/Sprite.js +++ b/src/pixi/Sprite.js @@ -70,6 +70,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -92,7 +159,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -107,7 +186,6 @@ // some helper functions.. - /** * * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId diff --git a/src/pixi/Stage.js b/src/pixi/Stage.js index 75bea00..4abe469 100644 --- a/src/pixi/Stage.js +++ b/src/pixi/Stage.js @@ -8,8 +8,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -19,6 +20,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -34,11 +39,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/src/pixi/Sprite.js b/src/pixi/Sprite.js index fa23d1b..4b8954a 100644 --- a/src/pixi/Sprite.js +++ b/src/pixi/Sprite.js @@ -70,6 +70,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -92,7 +159,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -107,7 +186,6 @@ // some helper functions.. - /** * * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId diff --git a/src/pixi/Stage.js b/src/pixi/Stage.js index 75bea00..4abe469 100644 --- a/src/pixi/Stage.js +++ b/src/pixi/Stage.js @@ -8,8 +8,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -19,6 +20,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -34,11 +39,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i>>>>>> Interactivity Added } return new PIXI.CanvasRenderer(width, height, view); diff --git a/README.md b/README.md index b9a1118..263ccf9 100644 --- a/README.md +++ b/README.md @@ -86,4 +86,8 @@ } ``` +<<<<<<< HEAD This content is released under the (http://opensource.org/licenses/MIT) MIT License. +======= +This content is released under the (http://opensource.org/licenses/MIT) MIT License. +>>>>>>> Interactivity Added diff --git a/bin/pixi.js b/bin/pixi.js index 775c51c..e4c61db 100644 --- a/bin/pixi.js +++ b/bin/pixi.js @@ -1,114 +1,128 @@ -var PIXI=PIXI||{};PIXI.Point=function(b,c){this.x=b?b:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(b,c,f,e){this.x=b?b:0;this.y=c?c:0;this.width=f?f:0;this.height=e?e:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(b){window.setTimeout(b,1E3/60)}}();function HEXtoRGB(b){return[(b>>16&255)/255,(b>>8&255)/255,(b&255)/255]} -"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var b=Array.prototype.slice;return function(c){function f(){var h=g.concat(b.call(arguments));e.apply(this instanceof f?this:c,h)}var e=this,g=b.call(arguments,1);if("function"!=typeof e)throw new TypeError;f.prototype=function j(b){b&&(j.prototype=b);if(!(this instanceof j))return new j}(e.prototype);return f}}()); -var AjaxRequest=function(){var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var d=g[0];return d*(1.5-0.5*a*d*d)}}else e.invsqrt=function(a){return 1/Math.sqrt(a)}; -var j=null;f();var n={create:function(a){var d=new j(3);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2]):d[0]=d[1]=d[2]=0;return d},createFrom:function(a,d,l){var b=new j(3);b[0]=a;b[1]=d;b[2]=l;return b},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])},add:function(a,d,l){if(!l||a===l)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a;l[0]=a[0]+d[0];l[1]=a[1]+d[1];l[2]=a[2]+d[2];return l},subtract:function(a, -d,l){if(!l||a===l)return a[0]-=d[0],a[1]-=d[1],a[2]-=d[2],a;l[0]=a[0]-d[0];l[1]=a[1]-d[1];l[2]=a[2]-d[2];return l},multiply:function(a,d,l){if(!l||a===l)return a[0]*=d[0],a[1]*=d[1],a[2]*=d[2],a;l[0]=a[0]*d[0];l[1]=a[1]*d[1];l[2]=a[2]*d[2];return l},negate:function(a,d){d||(d=a);d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];return d},scale:function(a,d,l){if(!l||a===l)return a[0]*=d,a[1]*=d,a[2]*=d,a;l[0]=a[0]*d;l[1]=a[1]*d;l[2]=a[2]*d;return l},normalize:function(a,d){d||(d=a);var l=a[0],b=a[1],c=a[2],e=Math.sqrt(l* -l+b*b+c*c);if(!e)return d[0]=0,d[1]=0,d[2]=0,d;if(1===e)return d[0]=l,d[1]=b,d[2]=c,d;e=1/e;d[0]=l*e;d[1]=b*e;d[2]=c*e;return d},cross:function(a,d,l){l||(l=a);var b=a[0],c=a[1];a=a[2];var e=d[0],k=d[1];d=d[2];l[0]=c*d-a*k;l[1]=a*e-b*d;l[2]=b*k-c*e;return l},length:function(a){var d=a[0],l=a[1];a=a[2];return Math.sqrt(d*d+l*l+a*a)},squaredLength:function(a){var d=a[0],l=a[1];a=a[2];return d*d+l*l+a*a},dot:function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]},direction:function(a,d,l){l||(l=a);var b= -a[0]-d[0],c=a[1]-d[1];a=a[2]-d[2];d=Math.sqrt(b*b+c*c+a*a);if(!d)return l[0]=0,l[1]=0,l[2]=0,l;d=1/d;l[0]=b*d;l[1]=c*d;l[2]=a*d;return l},lerp:function(a,d,l,b){b||(b=a);b[0]=a[0]+l*(d[0]-a[0]);b[1]=a[1]+l*(d[1]-a[1]);b[2]=a[2]+l*(d[2]-a[2]);return b},dist:function(a,d){var l=d[0]-a[0],b=d[1]-a[1],c=d[2]-a[2];return Math.sqrt(l*l+b*b+c*c)}},q=null,p=new j(4);n.unproject=function(a,d,l,b,c){c||(c=a);q||(q=u.create());var e=q;p[0]=2*(a[0]-b[0])/b[2]-1;p[1]=2*(a[1]-b[1])/b[3]-1;p[2]=2*a[2]-1;p[3]=1; -u.multiply(l,d,e);if(!u.inverse(e))return null;u.multiplyVec4(e,p);if(0===p[3])return null;c[0]=p[0]/p[3];c[1]=p[1]/p[3];c[2]=p[2]/p[3];return c};var C=n.createFrom(1,0,0),D=n.createFrom(0,1,0),s=n.createFrom(0,0,1),x=n.create();n.rotationTo=function(a,d,l){l||(l=m.create());var b=n.dot(a,d);if(1<=b)m.set(E,l);else if(-0.999999>b)n.cross(C,a,x),1E-6>n.length(x)&&n.cross(D,a,x),1E-6>n.length(x)&&n.cross(s,a,x),n.normalize(x),m.fromAngleAxis(Math.PI,x,l);else{var b=Math.sqrt(2*(1+b)),c=1/b;n.cross(a, -d,x);l[0]=x[0]*c;l[1]=x[1]*c;l[2]=x[2]*c;l[3]=0.5*b;m.normalize(l)}1l[3]&&(l[3]=-1);return l};n.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var y={create:function(a){var d=new j(9);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8]):d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=0;return d},createFrom:function(a,d,l,b,c,e,k,f,G){var t=new j(9);t[0]=a;t[1]=d;t[2]=l;t[3]=b;t[4]=c;t[5]=e;t[6]=k;t[7]=f;t[8]=G;return t},determinant:function(a){var d= -a[3],l=a[4],b=a[5],c=a[6],e=a[7],k=a[8];return a[0]*(k*l-b*e)+a[1]*(-k*d+b*c)+a[2]*(e*d-l*c)},inverse:function(a,d){var l=a[0],b=a[1],c=a[2],e=a[3],k=a[4],f=a[5],G=a[6],t=a[7],g=a[8],h=g*k-f*t,j=-g*e+f*G,m=t*e-k*G,r=l*h+b*j+c*m;if(!r)return null;r=1/r;d||(d=y.create());d[0]=h*r;d[1]=(-g*b+c*t)*r;d[2]=(f*b-c*k)*r;d[3]=j*r;d[4]=(g*l-c*G)*r;d[5]=(-f*l+c*e)*r;d[6]=m*r;d[7]=(-t*l+b*G)*r;d[8]=(k*l-b*e)*r;return d},multiply:function(a,d,l){l||(l=a);var b=a[0],c=a[1],e=a[2],k=a[3],f=a[4],G=a[5],t=a[6],g= -a[7];a=a[8];var h=d[0],j=d[1],m=d[2],r=d[3],n=d[4],v=d[5],p=d[6],w=d[7];d=d[8];l[0]=h*b+j*k+m*t;l[1]=h*c+j*f+m*g;l[2]=h*e+j*G+m*a;l[3]=r*b+n*k+v*t;l[4]=r*c+n*f+v*g;l[5]=r*e+n*G+v*a;l[6]=p*b+w*k+d*t;l[7]=p*c+w*f+d*g;l[8]=p*e+w*G+d*a;return l},multiplyVec2:function(a,d,l){l||(l=d);var b=d[0];d=d[1];l[0]=b*a[0]+d*a[3]+a[6];l[1]=b*a[1]+d*a[4]+a[7];return l},multiplyVec3:function(a,d,l){l||(l=d);var b=d[0],c=d[1];d=d[2];l[0]=b*a[0]+c*a[3]+d*a[6];l[1]=b*a[1]+c*a[4]+d*a[7];l[2]=b*a[2]+c*a[5]+d*a[8];return l}, -set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])},identity:function(a){a||(a=y.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=1;a[5]=0;a[6]=0;a[7]=0;a[8]=1;return a},transpose:function(a, -d){if(!d||a===d){var l=a[1],b=a[2],c=a[5];a[1]=a[3];a[2]=a[6];a[3]=l;a[5]=a[7];a[6]=b;a[7]=c;return a}d[0]=a[0];d[1]=a[3];d[2]=a[6];d[3]=a[1];d[4]=a[4];d[5]=a[7];d[6]=a[2];d[7]=a[5];d[8]=a[8];return d},toMat4:function(a,d){d||(d=u.create());d[15]=1;d[14]=0;d[13]=0;d[12]=0;d[11]=0;d[10]=a[8];d[9]=a[7];d[8]=a[6];d[7]=0;d[6]=a[5];d[5]=a[4];d[4]=a[3];d[3]=0;d[2]=a[2];d[1]=a[1];d[0]=a[0];return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+ -a[8]+"]"}},u={create:function(a){var d=new j(16);a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3],d[4]=a[4],d[5]=a[5],d[6]=a[6],d[7]=a[7],d[8]=a[8],d[9]=a[9],d[10]=a[10],d[11]=a[11],d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]);return d},createFrom:function(a,d,l,b,c,e,k,f,G,t,g,h,m,n,r,p){var v=new j(16);v[0]=a;v[1]=d;v[2]=l;v[3]=b;v[4]=c;v[5]=e;v[6]=k;v[7]=f;v[8]=G;v[9]=t;v[10]=g;v[11]=h;v[12]=m;v[13]=n;v[14]=r;v[15]=p;return v},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4]; -d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=a[12];d[13]=a[13];d[14]=a[14];d[15]=a[15];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])&&1E-6>Math.abs(a[4]-d[4])&&1E-6>Math.abs(a[5]-d[5])&&1E-6>Math.abs(a[6]-d[6])&&1E-6>Math.abs(a[7]-d[7])&&1E-6>Math.abs(a[8]-d[8])&&1E-6>Math.abs(a[9]-d[9])&&1E-6>Math.abs(a[10]-d[10])&&1E-6>Math.abs(a[11]-d[11])&&1E-6>Math.abs(a[12]- -d[12])&&1E-6>Math.abs(a[13]-d[13])&&1E-6>Math.abs(a[14]-d[14])&&1E-6>Math.abs(a[15]-d[15])},identity:function(a){a||(a=u.create());a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},transpose:function(a,d){if(!d||a===d){var l=a[1],b=a[2],c=a[3],e=a[6],k=a[7],f=a[11];a[1]=a[4];a[2]=a[8];a[3]=a[12];a[4]=l;a[6]=a[9];a[7]=a[13];a[8]=b;a[9]=e;a[11]=a[14];a[12]=c;a[13]=k;a[14]=f;return a}d[0]=a[0];d[1]=a[4];d[2]=a[8];d[3]=a[12]; -d[4]=a[1];d[5]=a[5];d[6]=a[9];d[7]=a[13];d[8]=a[2];d[9]=a[6];d[10]=a[10];d[11]=a[14];d[12]=a[3];d[13]=a[7];d[14]=a[11];d[15]=a[15];return d},determinant:function(a){var d=a[0],l=a[1],b=a[2],c=a[3],e=a[4],k=a[5],f=a[6],g=a[7],t=a[8],h=a[9],j=a[10],m=a[11],n=a[12],r=a[13],p=a[14];a=a[15];return n*h*f*c-t*r*f*c-n*k*j*c+e*r*j*c+t*k*p*c-e*h*p*c-n*h*b*g+t*r*b*g+n*l*j*g-d*r*j*g-t*l*p*g+d*h*p*g+n*k*b*m-e*r*b*m-n*l*f*m+d*r*f*m+e*l*p*m-d*k*p*m-t*k*b*a+e*h*b*a+t*l*f*a-d*h*f*a-e*l*j*a+d*k*j*a},inverse:function(a, -d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=a[4],g=a[5],h=a[6],t=a[7],j=a[8],m=a[9],n=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],w=b*g-c*k,H=b*h-e*k,z=b*t-f*k,A=c*h-e*g,q=c*t-f*g,x=e*t-f*h,y=j*s-m*r,B=j*v-n*r,C=j*u-p*r,D=m*v-n*s,E=m*u-p*s,I=n*u-p*v,F=w*I-H*E+z*D+A*C-q*B+x*y;if(!F)return null;F=1/F;d[0]=(g*I-h*E+t*D)*F;d[1]=(-c*I+e*E-f*D)*F;d[2]=(s*x-v*q+u*A)*F;d[3]=(-m*x+n*q-p*A)*F;d[4]=(-k*I+h*C-t*B)*F;d[5]=(b*I-e*C+f*B)*F;d[6]=(-r*x+v*z-u*H)*F;d[7]=(j*x-n*z+p*H)*F;d[8]=(k*E-g*C+t*y)*F;d[9]= -(-b*E+c*C-f*y)*F;d[10]=(r*q-s*z+u*w)*F;d[11]=(-j*q+m*z-p*w)*F;d[12]=(-k*D+g*B-h*y)*F;d[13]=(b*D-c*B+e*y)*F;d[14]=(-r*A+s*H-v*w)*F;d[15]=(j*A-m*H+n*w)*F;return d},toRotationMat:function(a,d){d||(d=u.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];d[4]=a[4];d[5]=a[5];d[6]=a[6];d[7]=a[7];d[8]=a[8];d[9]=a[9];d[10]=a[10];d[11]=a[11];d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d},toMat3:function(a,d){d||(d=y.create());d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[4];d[4]=a[5];d[5]=a[6];d[6]=a[8];d[7]=a[9];d[8]=a[10]; -return d},toInverseMat3:function(a,d){var b=a[0],c=a[1],e=a[2],f=a[4],k=a[5],g=a[6],h=a[8],t=a[9],j=a[10],m=j*k-g*t,n=-j*f+g*h,p=t*f-k*h,r=b*m+c*n+e*p;if(!r)return null;r=1/r;d||(d=y.create());d[0]=m*r;d[1]=(-j*c+e*t)*r;d[2]=(g*c-e*k)*r;d[3]=n*r;d[4]=(j*b-e*h)*r;d[5]=(-g*b+e*f)*r;d[6]=p*r;d[7]=(-t*b+c*h)*r;d[8]=(k*b-c*f)*r;return d},multiply:function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2],k=a[3],g=a[4],h=a[5],t=a[6],j=a[7],m=a[8],n=a[9],p=a[10],r=a[11],s=a[12],v=a[13],u=a[14];a=a[15];var w=d[0], -q=d[1],z=d[2],A=d[3];b[0]=w*c+q*g+z*m+A*s;b[1]=w*e+q*h+z*n+A*v;b[2]=w*f+q*t+z*p+A*u;b[3]=w*k+q*j+z*r+A*a;w=d[4];q=d[5];z=d[6];A=d[7];b[4]=w*c+q*g+z*m+A*s;b[5]=w*e+q*h+z*n+A*v;b[6]=w*f+q*t+z*p+A*u;b[7]=w*k+q*j+z*r+A*a;w=d[8];q=d[9];z=d[10];A=d[11];b[8]=w*c+q*g+z*m+A*s;b[9]=w*e+q*h+z*n+A*v;b[10]=w*f+q*t+z*p+A*u;b[11]=w*k+q*j+z*r+A*a;w=d[12];q=d[13];z=d[14];A=d[15];b[12]=w*c+q*g+z*m+A*s;b[13]=w*e+q*h+z*n+A*v;b[14]=w*f+q*t+z*p+A*u;b[15]=w*k+q*j+z*r+A*a;return b},multiplyVec3:function(a,d,b){b||(b=d); -var c=d[0],e=d[1];d=d[2];b[0]=a[0]*c+a[4]*e+a[8]*d+a[12];b[1]=a[1]*c+a[5]*e+a[9]*d+a[13];b[2]=a[2]*c+a[6]*e+a[10]*d+a[14];return b},multiplyVec4:function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=d[3];b[0]=a[0]*c+a[4]*e+a[8]*f+a[12]*d;b[1]=a[1]*c+a[5]*e+a[9]*f+a[13]*d;b[2]=a[2]*c+a[6]*e+a[10]*f+a[14]*d;b[3]=a[3]*c+a[7]*e+a[11]*f+a[15]*d;return b},translate:function(a,d,b){var c=d[0],e=d[1];d=d[2];var f,k,g,h,j,m,n,p,q,r,s,v;if(!b||a===b)return a[12]=a[0]*c+a[4]*e+a[8]*d+a[12],a[13]=a[1]*c+a[5]*e+ -a[9]*d+a[13],a[14]=a[2]*c+a[6]*e+a[10]*d+a[14],a[15]=a[3]*c+a[7]*e+a[11]*d+a[15],a;f=a[0];k=a[1];g=a[2];h=a[3];j=a[4];m=a[5];n=a[6];p=a[7];q=a[8];r=a[9];s=a[10];v=a[11];b[0]=f;b[1]=k;b[2]=g;b[3]=h;b[4]=j;b[5]=m;b[6]=n;b[7]=p;b[8]=q;b[9]=r;b[10]=s;b[11]=v;b[12]=f*c+j*e+q*d+a[12];b[13]=k*c+m*e+r*d+a[13];b[14]=g*c+n*e+s*d+a[14];b[15]=h*c+p*e+v*d+a[15];return b},scale:function(a,d,b){var c=d[0],e=d[1];d=d[2];if(!b||a===b)return a[0]*=c,a[1]*=c,a[2]*=c,a[3]*=c,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=d,a[9]*= -d,a[10]*=d,a[11]*=d,a;b[0]=a[0]*c;b[1]=a[1]*c;b[2]=a[2]*c;b[3]=a[3]*c;b[4]=a[4]*e;b[5]=a[5]*e;b[6]=a[6]*e;b[7]=a[7]*e;b[8]=a[8]*d;b[9]=a[9]*d;b[10]=a[10]*d;b[11]=a[11]*d;b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b},rotate:function(a,d,b,c){var e=b[0],f=b[1];b=b[2];var k=Math.sqrt(e*e+f*f+b*b),g,h,j,m,n,p,q,r,s,v,u,w,x,z,A,y,B,C,D,E;if(!k)return null;1!==k&&(k=1/k,e*=k,f*=k,b*=k);g=Math.sin(d);h=Math.cos(d);j=1-h;d=a[0];k=a[1];m=a[2];n=a[3];p=a[4];q=a[5];r=a[6];s=a[7];v=a[8];u=a[9];w= -a[10];x=a[11];z=e*e*j+h;A=f*e*j+b*g;y=b*e*j-f*g;B=e*f*j-b*g;C=f*f*j+h;D=b*f*j+e*g;E=e*b*j+f*g;e=f*b*j-e*g;f=b*b*j+h;c?a!==c&&(c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a;c[0]=d*z+p*A+v*y;c[1]=k*z+q*A+u*y;c[2]=m*z+r*A+w*y;c[3]=n*z+s*A+x*y;c[4]=d*B+p*C+v*D;c[5]=k*B+q*C+u*D;c[6]=m*B+r*C+w*D;c[7]=n*B+s*C+x*D;c[8]=d*E+p*e+v*f;c[9]=k*E+q*e+u*f;c[10]=m*E+r*e+w*f;c[11]=n*E+s*e+x*f;return c},rotateX:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[4],f=a[5],k=a[6],g=a[7],h=a[8],j=a[9],m=a[10], -n=a[11];b?a!==b&&(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[4]=e*d+h*c;b[5]=f*d+j*c;b[6]=k*d+m*c;b[7]=g*d+n*c;b[8]=e*-c+h*d;b[9]=f*-c+j*d;b[10]=k*-c+m*d;b[11]=g*-c+n*d;return b},rotateY:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[8],j=a[9],m=a[10],n=a[11];b?a!==b&&(b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*-c;b[1]=f*d+j*-c;b[2]=k*d+m*-c;b[3]=g* -d+n*-c;b[8]=e*c+h*d;b[9]=f*c+j*d;b[10]=k*c+m*d;b[11]=g*c+n*d;return b},rotateZ:function(a,d,b){var c=Math.sin(d);d=Math.cos(d);var e=a[0],f=a[1],k=a[2],g=a[3],h=a[4],j=a[5],m=a[6],n=a[7];b?a!==b&&(b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=a;b[0]=e*d+h*c;b[1]=f*d+j*c;b[2]=k*d+m*c;b[3]=g*d+n*c;b[4]=e*-c+h*d;b[5]=f*-c+j*d;b[6]=k*-c+m*d;b[7]=g*-c+n*d;return b},frustum:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2*e/g;k[1]=0; -k[2]=0;k[3]=0;k[4]=0;k[5]=2*e/h;k[6]=0;k[7]=0;k[8]=(d+a)/g;k[9]=(c+b)/h;k[10]=-(f+e)/j;k[11]=-1;k[12]=0;k[13]=0;k[14]=-(2*f*e)/j;k[15]=0;return k},perspective:function(a,d,b,c,e){a=b*Math.tan(a*Math.PI/360);d*=a;return u.frustum(-d,d,-a,a,b,c,e)},ortho:function(a,d,b,c,e,f,k){k||(k=u.create());var g=d-a,h=c-b,j=f-e;k[0]=2/g;k[1]=0;k[2]=0;k[3]=0;k[4]=0;k[5]=2/h;k[6]=0;k[7]=0;k[8]=0;k[9]=0;k[10]=-2/j;k[11]=0;k[12]=-(a+d)/g;k[13]=-(c+b)/h;k[14]=-(f+e)/j;k[15]=1;return k},lookAt:function(a,d,b,c){c|| -(c=u.create());var e,f,k,g,h,j,m,n,p=a[0],q=a[1];a=a[2];k=b[0];g=b[1];f=b[2];m=d[0];b=d[1];e=d[2];if(p===m&&q===b&&a===e)return u.identity(c);d=p-m;b=q-b;m=a-e;n=1/Math.sqrt(d*d+b*b+m*m);d*=n;b*=n;m*=n;e=g*m-f*b;f=f*d-k*m;k=k*b-g*d;(n=Math.sqrt(e*e+f*f+k*k))?(n=1/n,e*=n,f*=n,k*=n):k=f=e=0;g=b*k-m*f;h=m*e-d*k;j=d*f-b*e;(n=Math.sqrt(g*g+h*h+j*j))?(n=1/n,g*=n,h*=n,j*=n):j=h=g=0;c[0]=e;c[1]=g;c[2]=d;c[3]=0;c[4]=f;c[5]=h;c[6]=b;c[7]=0;c[8]=k;c[9]=j;c[10]=m;c[11]=0;c[12]=-(e*p+f*q+k*a);c[13]=-(g*p+h*q+ -j*a);c[14]=-(d*p+b*q+m*a);c[15]=1;return c},fromRotationTranslation:function(a,d,b){b||(b=u.create());var c=a[0],e=a[1],f=a[2],k=a[3],g=c+c,h=e+e,j=f+f;a=c*g;var m=c*h,c=c*j,n=e*h,e=e*j,f=f*j,g=k*g,h=k*h,k=k*j;b[0]=1-(n+f);b[1]=m+k;b[2]=c-h;b[3]=0;b[4]=m-k;b[5]=1-(a+f);b[6]=e+g;b[7]=0;b[8]=c+h;b[9]=e-g;b[10]=1-(a+n);b[11]=0;b[12]=d[0];b[13]=d[1];b[14]=d[2];b[15]=1;return b},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+ -a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"}},m={create:function(a){var d=new j(4);a?(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]):d[0]=d[1]=d[2]=d[3]=0;return d},createFrom:function(a,d,b,c){var e=new j(4);e[0]=a;e[1]=d;e[2]=b;e[3]=c;return e},set:function(a,d){d[0]=a[0];d[1]=a[1];d[2]=a[2];d[3]=a[3];return d},equal:function(a,d){return a===d||1E-6>Math.abs(a[0]-d[0])&&1E-6>Math.abs(a[1]-d[1])&&1E-6>Math.abs(a[2]-d[2])&&1E-6>Math.abs(a[3]-d[3])},identity:function(a){a||(a=m.create()); -a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a}},E=m.identity();m.calculateW=function(a,d){var b=a[0],c=a[1],e=a[2];if(!d||a===d)return a[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e)),a;d[0]=b;d[1]=c;d[2]=e;d[3]=-Math.sqrt(Math.abs(1-b*b-c*c-e*e));return d};m.dot=function(a,d){return a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3]};m.inverse=function(a,d){var b=a[0],c=a[1],e=a[2],f=a[3],b=(b=b*b+c*c+e*e+f*f)?1/b:0;if(!d||a===d)return a[0]*=-b,a[1]*=-b,a[2]*=-b,a[3]*=b,a;d[0]=-a[0]*b;d[1]=-a[1]*b;d[2]=-a[2]*b;d[3]=a[3]*b; -return d};m.conjugate=function(a,d){if(!d||a===d)return a[0]*=-1,a[1]*=-1,a[2]*=-1,a;d[0]=-a[0];d[1]=-a[1];d[2]=-a[2];d[3]=a[3];return d};m.length=function(a){var d=a[0],b=a[1],c=a[2];a=a[3];return Math.sqrt(d*d+b*b+c*c+a*a)};m.normalize=function(a,d){d||(d=a);var b=a[0],c=a[1],e=a[2],f=a[3],k=Math.sqrt(b*b+c*c+e*e+f*f);if(0===k)return d[0]=0,d[1]=0,d[2]=0,d[3]=0,d;k=1/k;d[0]=b*k;d[1]=c*k;d[2]=e*k;d[3]=f*k;return d};m.add=function(a,d,b){if(!b||a===b)return a[0]+=d[0],a[1]+=d[1],a[2]+=d[2],a[3]+= -d[3],a;b[0]=a[0]+d[0];b[1]=a[1]+d[1];b[2]=a[2]+d[2];b[3]=a[3]+d[3];return b};m.multiply=function(a,d,b){b||(b=a);var c=a[0],e=a[1],f=a[2];a=a[3];var k=d[0],g=d[1],h=d[2];d=d[3];b[0]=c*d+a*k+e*h-f*g;b[1]=e*d+a*g+f*k-c*h;b[2]=f*d+a*h+c*g-e*k;b[3]=a*d-c*k-e*g-f*h;return b};m.multiplyVec3=function(a,d,b){b||(b=d);var c=d[0],e=d[1],f=d[2];d=a[0];var k=a[1],g=a[2];a=a[3];var h=a*c+k*f-g*e,j=a*e+g*c-d*f,m=a*f+d*e-k*c,c=-d*c-k*e-g*f;b[0]=h*a+c*-d+j*-g-m*-k;b[1]=j*a+c*-k+m*-d-h*-g;b[2]=m*a+c*-g+h*-k-j*-d; -return b};m.scale=function(a,d,b){if(!b||a===b)return a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a;b[0]=a[0]*d;b[1]=a[1]*d;b[2]=a[2]*d;b[3]=a[3]*d;return b};m.toMat3=function(a,d){d||(d=y.create());var b=a[0],c=a[1],e=a[2],f=a[3],k=b+b,g=c+c,h=e+e,j=b*k,m=b*g,b=b*h,n=c*g,c=c*h,e=e*h,k=f*k,g=f*g,f=f*h;d[0]=1-(n+e);d[1]=m+f;d[2]=b-g;d[3]=m-f;d[4]=1-(j+e);d[5]=c+k;d[6]=b+g;d[7]=c-k;d[8]=1-(j+n);return d};m.toMat4=function(a,d){d||(d=u.create());var b=a[0],c=a[1],e=a[2],f=a[3],g=b+b,h=c+c,j=e+e,m=b*g,n=b*h,b=b* -j,p=c*h,c=c*j,e=e*j,g=f*g,h=f*h,f=f*j;d[0]=1-(p+e);d[1]=n+f;d[2]=b-h;d[3]=0;d[4]=n-f;d[5]=1-(m+e);d[6]=c+g;d[7]=0;d[8]=b+h;d[9]=c-g;d[10]=1-(m+p);d[11]=0;d[12]=0;d[13]=0;d[14]=0;d[15]=1;return d};m.slerp=function(a,d,b,c){c||(c=a);var e=a[0]*d[0]+a[1]*d[1]+a[2]*d[2]+a[3]*d[3],f,g;if(1<=Math.abs(e))return c!==a&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]),c;f=Math.acos(e);g=Math.sqrt(1-e*e);if(0.0010>Math.abs(g))return c[0]=0.5*a[0]+0.5*d[0],c[1]=0.5*a[1]+0.5*d[1],c[2]=0.5*a[2]+0.5*d[2],c[3]=0.5*a[3]+ -0.5*d[3],c;e=Math.sin((1-b)*f)/g;b=Math.sin(b*f)/g;c[0]=a[0]*e+d[0]*b;c[1]=a[1]*e+d[1]*b;c[2]=a[2]*e+d[2]*b;c[3]=a[3]*e+d[3]*b;return c};m.fromRotationMatrix=function(a,d){d||(d=m.create());var b=a[0]+a[4]+a[8],c;if(0a[0]&&(b=1);a[8]>a[3*b+b]&&(b=2);var e=c[b],f=c[e];c=Math.sqrt(a[3*b+b]-a[3*e+e]-a[3*f+f]+1);d[b]=0.5*c;c= -0.5/c;d[3]=(a[3*f+e]-a[3*e+f])*c;d[e]=(a[3*e+b]+a[3*b+e])*c;d[f]=(a[3*f+b]+a[3*b+f])*c}return d};y.toQuat4=m.fromRotationMatrix;var B=y.create();m.fromAxes=function(a,b,c,e){B[0]=b[0];B[3]=b[1];B[6]=b[2];B[1]=c[0];B[4]=c[1];B[7]=c[2];B[2]=a[0];B[5]=a[1];B[8]=a[2];return m.fromRotationMatrix(B,e)};m.identity=function(a){a||(a=m.create());a[0]=0;a[1]=0;a[2]=0;a[3]=1;return a};m.fromAngleAxis=function(a,b,c){c||(c=m.create());a*=0.5;var e=Math.sin(a);c[3]=Math.cos(a);c[0]=e*b[0];c[1]=e*b[1];c[2]=e*b[2]; -return c};m.toAngleAxis=function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1]+a[2]*a[2];0Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])},negate:function(a,b){b||(b=a); -b[0]=-a[0];b[1]=-a[1];return b},normalize:function(a,b){b||(b=a);var c=a[0]*a[0]+a[1]*a[1];0 -Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},identity:function(a){a||(a=J.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,b){if(!b||a===b){var c=a[1];a[1]=a[2];a[2]=c;return a}b[0]=a[0];b[1]=a[2];b[2]=a[1];b[3]=a[3];return b},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,b){b||(b=a);var c=a[0],e=a[1],f=a[2],g=a[3],h=c*g-f*e;if(!h)return null;h=1/h;b[0]=g*h;b[1]=-e*h;b[2]=-f*h;b[3]=c*h;return b},multiply:function(a, -b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];c[0]=e*b[0]+f*b[2];c[1]=e*b[1]+f*b[3];c[2]=g*b[0]+a*b[2];c[3]=g*b[1]+a*b[3];return c},rotate:function(a,b,c){c||(c=a);var e=a[0],f=a[1],g=a[2];a=a[3];var h=Math.sin(b);b=Math.cos(b);c[0]=e*b+f*h;c[1]=e*-h+f*b;c[2]=g*b+a*h;c[3]=g*-h+a*b;return c},multiplyVec2:function(a,b,c){c||(c=b);var e=b[0];b=b[1];c[0]=e*a[0]+b*a[1];c[1]=e*a[2]+b*a[3];return c},scale:function(a,b,c){c||(c=a);var e=a[1],f=a[2],g=a[3],h=b[0];b=b[1];c[0]=a[0]*h;c[1]=e*b;c[2]=f*h;c[3]= -g*b;return c},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},L={create:function(a){var b=new j(4);a?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):(b[0]=0,b[1]=0,b[2]=0,b[3]=0);return b},createFrom:function(a,b,c,e){var f=new j(4);f[0]=a;f[1]=b;f[2]=c;f[3]=e;return f},add:function(a,b,c){c||(c=b);c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];c[3]=a[3]+b[3];return c},subtract:function(a,b,c){c||(c=b);c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];c[3]=a[3]-b[3];return c},multiply:function(a, -b,c){c||(c=b);c[0]=a[0]*b[0];c[1]=a[1]*b[1];c[2]=a[2]*b[2];c[3]=a[3]*b[3];return c},divide:function(a,b,c){c||(c=b);c[0]=a[0]/b[0];c[1]=a[1]/b[1];c[2]=a[2]/b[2];c[3]=a[3]/b[3];return c},scale:function(a,b,c){c||(c=a);c[0]=a[0]*b;c[1]=a[1]*b;c[2]=a[2]*b;c[3]=a[3]*b;return c},set:function(a,b){b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];return b},equal:function(a,b){return a===b||1E-6>Math.abs(a[0]-b[0])&&1E-6>Math.abs(a[1]-b[1])&&1E-6>Math.abs(a[2]-b[2])&&1E-6>Math.abs(a[3]-b[3])},negate:function(a,b){b|| -(b=a);b[0]=-a[0];b[1]=-a[1];b[2]=-a[2];b[3]=-a[3];return b},length:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return Math.sqrt(b*b+c*c+e*e+a*a)},squaredLength:function(a){var b=a[0],c=a[1],e=a[2];a=a[3];return b*b+c*c+e*e+a*a},lerp:function(a,b,c,e){e||(e=a);e[0]=a[0]+c*(b[0]-a[0]);e[1]=a[1]+c*(b[1]-a[1]);e[2]=a[2]+c*(b[2]-a[2]);e[3]=a[3]+c*(b[3]-a[3]);return e},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};b&&(b.glMatrixArrayType=j,b.MatrixArray=j,b.setMatrixArrayType=c,b.determineMatrixArrayType= -f,b.glMath=e,b.vec2=K,b.vec3=n,b.vec4=L,b.mat2=J,b.mat3=y,b.mat4=u,b.quat4=m);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:e,vec2:K,vec3:n,vec4:L,mat2:J,mat3:y,mat4:u,quat4:m}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; -PIXI.CompileVertexShader=function(b,c){for(var f="",e=0;eb.length)){var c=this.uvs,f=this.indices,e=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;e[0]=1;e[1]=1;f[0]=0;f[1]=1;for(var b=b.length,g=1;gb.length)){var c=this.verticies,f=b[0],e,g=e=0,h=b[0];this.count-=0.2;c[0]=h.x+e;c[1]=h.y+g;c[2]=h.x-e;c[3]=h.y-g;for(var j=b.length,n=1;na.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f - + diff --git a/docs/api.js b/docs/api.js index ac07693..f7042d5 100644 --- a/docs/api.js +++ b/docs/api.js @@ -6,6 +6,8 @@ "CanvasRenderer", "DisplayObject", "DisplayObjectContainer", + "InteractionData", + "InteractionManager", "MovieClip", "Point", "Rectangle", diff --git a/docs/classes/AssetLoader.html b/docs/classes/AssetLoader.html index 01ee229..502038b 100644 --- a/docs/classes/AssetLoader.html +++ b/docs/classes/AssetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/BaseTexture.html b/docs/classes/BaseTexture.html index 1ad6430..09b2df8 100644 --- a/docs/classes/BaseTexture.html +++ b/docs/classes/BaseTexture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/CanvasRenderer.html b/docs/classes/CanvasRenderer.html index f5329ad..924ddeb 100644 --- a/docs/classes/CanvasRenderer.html +++ b/docs/classes/CanvasRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -265,7 +269,7 @@ - pixi/renderers/CanvasRenderer.js:56 + pixi/renderers/CanvasRenderer.js:57

    @@ -341,7 +345,7 @@ - pixi/renderers/CanvasRenderer.js:45 + pixi/renderers/CanvasRenderer.js:46

    @@ -385,7 +389,7 @@ - pixi/renderers/CanvasRenderer.js:21 + pixi/renderers/CanvasRenderer.js:22

    @@ -431,7 +435,7 @@ - pixi/renderers/CanvasRenderer.js:31 + pixi/renderers/CanvasRenderer.js:32

    @@ -475,7 +479,7 @@ - pixi/renderers/CanvasRenderer.js:14 + pixi/renderers/CanvasRenderer.js:15

    diff --git a/docs/classes/DisplayObject.html b/docs/classes/DisplayObject.html index 2474970..151abad 100644 --- a/docs/classes/DisplayObject.html +++ b/docs/classes/DisplayObject.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -321,6 +325,12 @@ +
  • + + view + +
  • + )
    @@ -403,6 +413,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    diff --git a/docs/classes/DisplayObjectContainer.html b/docs/classes/DisplayObjectContainer.html index b338d19..3b5e3eb 100644 --- a/docs/classes/DisplayObjectContainer.html +++ b/docs/classes/DisplayObjectContainer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/InteractionData.html b/docs/classes/InteractionData.html new file mode 100644 index 0000000..4ad5592 --- /dev/null +++ b/docs/classes/InteractionData.html @@ -0,0 +1,369 @@ + + + + + InteractionData - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionData Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    + +
    + + +
    +

    Constructor

    +
    +

    InteractionData

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:319 + +

    + + + + + +
    + +
    + +
    + + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + + + +
    +

    Properties

    + + +
    + + + + + +
    + + + + +
    +

    Properties

    + + +
    +

    global

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:325 + +

    + + + + +
    + +
    +

    This point stores the global coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    +

    local

    + Point + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:332 + +

    + + + + +
    + +
    +

    This point stores the local coords of where the touch/mouse event happened

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/InteractionManager.html b/docs/classes/InteractionManager.html new file mode 100644 index 0000000..162bc5f --- /dev/null +++ b/docs/classes/InteractionManager.html @@ -0,0 +1,594 @@ + + + + + InteractionManager - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    InteractionManager Class

    +
    + + + + + + + + + + + Module: PIXI + + + + +
    + + + +
    +

    The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive. +This manager also supports multitouch.

    +
    + + +
    +

    Constructor

    +
    +

    InteractionManager

    + + +
    + (
      + +
    • + + stage + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:7 + +

    + + + + + +
    + +
    + +
    + + +
    +

    Parameters:

    + +
      + +
    • + + stage + Stage + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Methods

    + + +
    + + + +
    +

    Properties

    + + +
    + + + + + +
    + + +
    +

    Methods

    + + +
    +

    disableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:53 + +

    + + + + + +
    + +
    +

    This method will disable rollover/rollout for ALL interactive items +You may wish to use this an optimization if your app does not require rollover/rollout funcitonality

    +
    + + + + + + +
    + + +
    +

    enableMouseOver

    + + + () + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:66 + +

    + + + + + +
    + +
    +

    This method will enable rollover/rollout for ALL interactive items +It is enabled by default

    +
    + + + + + + +
    + + +
    + + + +
    +

    Properties

    + + +
    +

    mouse

    + InteractionData + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:30 + +

    + + + + +
    + +
    +

    the mouse data

    +
    + + + + + + +
    + + +
    +

    stage

    + Stage + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:17 + +

    + + + + +
    + +
    +

    a refference to the stage

    +
    + + + + + + +
    + + +
    +

    touchs

    + Object + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/InteractionManager.js:37 + +

    + + + + +
    + +
    +

    an object that stores current touches (InteractionData) by id reference

    +
    + + + + + + +
    + + +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/classes/MovieClip.html b/docs/classes/MovieClip.html index fae1b3f..2e6941c 100644 --- a/docs/classes/MovieClip.html +++ b/docs/classes/MovieClip.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -271,6 +275,13 @@ +
  • + click + + + +
  • +
  • gotoAndPlay @@ -285,6 +296,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • play @@ -300,6 +339,13 @@
  • + setInteractive + + + +
  • + +
  • setTexture @@ -313,6 +359,27 @@
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -645,6 +712,90 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    gotoAndPlay

    @@ -819,6 +970,343 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    play

    @@ -957,6 +1445,90 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -996,7 +1568,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -1095,6 +1667,260 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + +

    Inherited from + Sprite: + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/Point.html b/docs/classes/Point.html index 7a2de00..033b9c6 100644 --- a/docs/classes/Point.html +++ b/docs/classes/Point.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Rectangle.html b/docs/classes/Rectangle.html index 6c64a53..81aac51 100644 --- a/docs/classes/Rectangle.html +++ b/docs/classes/Rectangle.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Sprite.html b/docs/classes/Sprite.html index 92e7512..b0f2101 100644 --- a/docs/classes/Sprite.html +++ b/docs/classes/Sprite.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -272,6 +276,13 @@
  • + click + + + +
  • + +
  • fromFrame @@ -289,6 +300,34 @@
  • +
  • + mousedown + + + +
  • + +
  • + mouseout + + + +
  • + +
  • + mouseover + + + +
  • + +
  • + mouseup + + + +
  • +
  • removeChild @@ -297,12 +336,40 @@
  • + setInteractive + + + +
  • + +
  • setTexture
  • +
  • + tap + + + +
  • + +
  • + touchend + + + +
  • + +
  • + touchstart + + + +
  • +
    @@ -607,6 +674,93 @@
    +
    +

    click

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:86 + +

    + + + + + +
    + +
    +

    A callback that is used when the users clicks on the sprite with thier mouse

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    fromFrame

    @@ -655,7 +809,7 @@ - pixi/Sprite.js:111 + pixi/Sprite.js:189

    @@ -666,7 +820,7 @@
    -

    Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId +

    Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId The frame ids are created when a Texture packer file has been loaded

    @@ -762,7 +916,7 @@ - pixi/Sprite.js:127 + pixi/Sprite.js:205

    @@ -821,6 +975,355 @@
    +
    +

    mousedown

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:92 + +

    + + + + + +
    + +
    +

    A callback that is used when the user clicks the mouse down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseout

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:111 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse leaves the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseover

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:105 + +

    + + + + + +
    + +
    +

    A callback that is used when the users mouse rolls over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    mouseup

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:98 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the mouse that was over the sprite +for this callback to be fired the mouse must have been pressed down over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +

    removeChild

    @@ -905,6 +1408,93 @@
    +
    +

    setInteractive

    + + +
    + (
      + +
    • + + interactive + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:164 + +

    + + + + + +
    + +
    +

    Indicates if the sprite will have touch and mouse interactivity. It is false by default

    +
    + + +
    +

    Parameters:

    + +
      + +
    • + + interactive + Boolean + + + + +
      + +
      + + +
    • + +
    +
    + + + + + +
    + +

    setTexture

    @@ -947,7 +1537,7 @@ - pixi/Sprite.js:79 + pixi/Sprite.js:146

    @@ -992,6 +1582,269 @@
    +
    +

    tap

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:121 + +

    + + + + + +
    + +
    +

    A callback that is used when the users taps on the sprite with thier finger +basically a touch version of click

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchend

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:134 + +

    + + + + + +
    + +
    +

    A callback that is used when the user releases the touch that was over the sprite +for this callback to be fired. The touch must have started over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + + +
    +

    touchstart

    + + +
    + (
      + +
    • + + interactionData + +
    • + +
    ) +
    + + + + + + + + + + + + + + + + +
    + + + +

    + + Defined in + + + + + pixi/Sprite.js:128 + +

    + + + + + +
    + +
    +

    A callback that is used when the user touch's over the sprite

    +
    + + +
    +

    Parameters:

    + + +
    + + + + + +
    + +
    diff --git a/docs/classes/SpriteSheetLoader.html b/docs/classes/SpriteSheetLoader.html index a9ed7b3..dd3f111 100644 --- a/docs/classes/SpriteSheetLoader.html +++ b/docs/classes/SpriteSheetLoader.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/Stage.html b/docs/classes/Stage.html index d304cc2..ec59d87 100644 --- a/docs/classes/Stage.html +++ b/docs/classes/Stage.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -157,6 +161,12 @@ +
  • + + interactive + +
  • + )
    @@ -221,6 +231,21 @@ +
  • + + interactive + Boolean + + + + +
    +

    enable / disable interaction (default is false)

    +
    + + +
  • +
    @@ -687,7 +712,7 @@ - pixi/Stage.js:44 + pixi/Stage.js:59

    @@ -764,7 +789,7 @@ - pixi/Stage.js:30 + pixi/Stage.js:35

    diff --git a/docs/classes/Texture.html b/docs/classes/Texture.html index 48980dc..94ae696 100644 --- a/docs/classes/Texture.html +++ b/docs/classes/Texture.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -801,6 +805,10 @@ + + Texture + + @@ -865,6 +873,19 @@ +
    +

    Returns:

    + +
    + + + Texture: + + the texture that was removed + +
    +
    +
    diff --git a/docs/classes/WebGLBatch.html b/docs/classes/WebGLBatch.html index 2db06c7..0d33af9 100644 --- a/docs/classes/WebGLBatch.html +++ b/docs/classes/WebGLBatch.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/classes/WebGLRenderer.html b/docs/classes/WebGLRenderer.html index ddeebf2..9b466c3 100644 --- a/docs/classes/WebGLRenderer.html +++ b/docs/classes/WebGLRenderer.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -160,6 +164,12 @@ +
  • + + view + +
  • + )
    @@ -239,6 +249,21 @@ +
  • + + view + Canvas + + + + +
    +

    the canvas to use as a view, optional

    +
    + + +
  • +
    @@ -345,7 +370,7 @@ - pixi/renderers/WebGLRenderer.js:157 + pixi/renderers/WebGLRenderer.js:158

    @@ -438,7 +463,7 @@ - pixi/renderers/WebGLRenderer.js:526 + pixi/renderers/WebGLRenderer.js:538

    diff --git a/docs/data.json b/docs/data.json index 246ea87..5e94f50 100644 --- a/docs/data.json +++ b/docs/data.json @@ -1,9 +1,9 @@ { "project": { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/" }, "files": { @@ -130,6 +130,16 @@ "fors": {}, "namespaces": {} }, + "pixi/InteractionManager.js": { + "name": "pixi/InteractionManager.js", + "modules": {}, + "classes": { + "InteractionManager": 1, + "InteractionData": 1 + }, + "fors": {}, + "namespaces": {} + }, "pixi/MovieClip.js": { "name": "pixi/MovieClip.js", "modules": {}, @@ -199,6 +209,8 @@ "Texture": 1, "DisplayObject": 1, "DisplayObjectContainer": 1, + "InteractionManager": 1, + "InteractionData": 1, "MovieClip": 1, "Point": 1, "Rectangle": 1, @@ -279,6 +291,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ] }, @@ -328,6 +345,11 @@ "name": "height", "description": "the height of the canvas view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "default": "0" @@ -410,6 +432,41 @@ "extends": "DisplayObject", "is_constructor": 1 }, + "InteractionManager": { + "name": "InteractionManager", + "shortname": "InteractionManager", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 7, + "description": "The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.\nThis manager also supports multitouch.", + "is_constructor": 1, + "params": [ + { + "name": "stage", + "description": "", + "type": "Stage" + } + ], + "type": "Stage" + }, + "InteractionData": { + "name": "InteractionData", + "shortname": "InteractionData", + "classitems": [], + "plugins": [], + "extensions": [], + "plugin_for": [], + "extension_for": [], + "module": "PIXI", + "file": "pixi/InteractionManager.js", + "line": 319, + "is_constructor": 1 + }, "MovieClip": { "name": "MovieClip", "shortname": "MovieClip", @@ -539,6 +596,11 @@ "name": "backgroundColor", "description": "the background color of the stage", "type": "Number" + }, + { + "name": "interactive", + "description": "enable / disable interaction (default is false)", + "type": "Boolean" } ] } @@ -613,7 +675,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 14, + "line": 15, "description": "The width of the canvas view", "itemtype": "property", "name": "width", @@ -623,7 +685,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 21, + "line": 22, "description": "The height of the canvas view", "itemtype": "property", "name": "height", @@ -633,7 +695,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 31, + "line": 32, "description": "The canvas element that the everything is drawn to", "itemtype": "property", "name": "view", @@ -642,7 +704,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 45, + "line": 46, "description": "The canvas context that the everything is drawn to", "itemtype": "property", "name": "context", @@ -651,7 +713,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 56, + "line": 57, "description": "Renders the stage to its canvas view", "itemtype": "method", "name": "render", @@ -666,7 +728,7 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 83, + "line": 96, "description": "resizes the canvas view to the specified width and height", "params": [ { @@ -682,21 +744,21 @@ }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 97, + "line": 110, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 167, + "line": 180, "access": "private", "tagname": "", "class": "CanvasRenderer" }, { "file": "pixi/renderers/CanvasRenderer.js", - "line": 202, + "line": 215, "access": "private", "tagname": "", "class": "CanvasRenderer" @@ -877,21 +939,21 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 64, + "line": 65, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 103, + "line": 104, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 157, + "line": 158, "description": "Renders the stage to its webGL view", "itemtype": "method", "name": "render", @@ -906,28 +968,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 223, + "line": 235, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 252, + "line": 264, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 448, + "line": 460, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 526, + "line": 538, "description": "resizes the webGL view to the specified width and height", "itemtype": "method", "name": "resize", @@ -947,28 +1009,28 @@ }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 547, + "line": 559, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 575, + "line": 587, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 653, + "line": 665, "access": "private", "tagname": "", "class": "WebGLRenderer" }, { "file": "pixi/renderers/WebGLRenderer.js", - "line": 662, + "line": 674, "access": "private", "tagname": "", "class": "WebGLRenderer" @@ -1140,6 +1202,10 @@ "type": "String" } ], + "return": { + "description": "the texture that was removed", + "type": "Texture" + }, "class": "Texture" }, { @@ -1165,6 +1231,11 @@ "name": "height", "description": "the height of the renderers view", "type": "Number" + }, + { + "name": "view", + "description": "the canvas to use as a view, optional", + "type": "Canvas" } ], "class": "DisplayObject" @@ -1258,7 +1329,7 @@ }, { "file": "pixi/DisplayObject.js", - "line": 79, + "line": 82, "access": "private", "tagname": "", "class": "DisplayObject" @@ -1336,6 +1407,73 @@ "class": "DisplayObjectContainer" }, { + "file": "pixi/InteractionManager.js", + "line": 1, + "author": "Mat Groves http://matgroves.com/ @Doormat23", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 17, + "description": "a refference to the stage", + "itemtype": "property", + "name": "stage", + "type": "Stage", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 30, + "description": "the mouse data", + "itemtype": "property", + "name": "mouse", + "type": "InteractionData", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 37, + "description": "an object that stores current touches (InteractionData) by id reference", + "itemtype": "property", + "name": "touchs", + "type": "Object", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 53, + "description": "This method will disable rollover/rollout for ALL interactive items\nYou may wish to use this an optimization if your app does not require rollover/rollout funcitonality", + "itemtype": "method", + "name": "disableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 66, + "description": "This method will enable rollover/rollout for ALL interactive items\nIt is enabled by default", + "itemtype": "method", + "name": "enableMouseOver", + "class": "InteractionManager" + }, + { + "file": "pixi/InteractionManager.js", + "line": 325, + "description": "This point stores the global coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "global", + "type": "Point", + "class": "InteractionData" + }, + { + "file": "pixi/InteractionManager.js", + "line": 332, + "description": "This point stores the local coords of where the touch/mouse event happened", + "itemtype": "property", + "name": "local", + "type": "Point", + "class": "InteractionData" + }, + { "file": "pixi/MovieClip.js", "line": 1, "author": "Mat Groves http://matgroves.com/ @Doormat23", @@ -1584,7 +1722,135 @@ }, { "file": "pixi/Sprite.js", - "line": 79, + "line": 86, + "description": "A callback that is used when the users clicks on the sprite with thier mouse", + "itemtype": "method", + "name": "click", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 92, + "description": "A callback that is used when the user clicks the mouse down over the sprite", + "itemtype": "method", + "name": "mousedown", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 98, + "description": "A callback that is used when the user releases the mouse that was over the sprite\nfor this callback to be fired the mouse must have been pressed down over the sprite", + "itemtype": "method", + "name": "mouseup", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 105, + "description": "A callback that is used when the users mouse rolls over the sprite", + "itemtype": "method", + "name": "mouseover", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 111, + "description": "A callback that is used when the users mouse leaves the sprite", + "itemtype": "method", + "name": "mouseout", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 121, + "description": "A callback that is used when the users taps on the sprite with thier finger\nbasically a touch version of click", + "itemtype": "method", + "name": "tap", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 128, + "description": "A callback that is used when the user touch's over the sprite", + "itemtype": "method", + "name": "touchstart", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 134, + "description": "A callback that is used when the user releases the touch that was over the sprite\nfor this callback to be fired. The touch must have started over the sprite", + "itemtype": "method", + "name": "touchend", + "params": [ + { + "name": "interactionData", + "description": "", + "type": "InteractionData" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 146, "itemtype": "method", "name": "setTexture", "params": [ @@ -1599,7 +1865,23 @@ }, { "file": "pixi/Sprite.js", - "line": 98, + "line": 164, + "description": "Indicates if the sprite will have touch and mouse interactivity. It is false by default", + "itemtype": "method", + "name": "setInteractive", + "params": [ + { + "name": "interactive", + "description": "", + "type": "Boolean" + } + ], + "class": "Sprite", + "module": "PIXI" + }, + { + "file": "pixi/Sprite.js", + "line": 177, "access": "private", "tagname": "", "class": "Sprite", @@ -1607,8 +1889,8 @@ }, { "file": "pixi/Sprite.js", - "line": 111, - "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId\n The frame ids are created when a Texture packer file has been loaded", + "line": 189, + "description": "Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId\n The frame ids are created when a Texture packer file has been loaded", "itemtype": "method", "name": "fromFrame", "static": 1, @@ -1628,7 +1910,7 @@ }, { "file": "pixi/Sprite.js", - "line": 127, + "line": 205, "description": "Helper function that creates a sprite that will contain a texture based on an image url\n If the image is not in the texture cache it will be loaded", "itemtype": "method", "name": "fromImage", @@ -1655,7 +1937,7 @@ }, { "file": "pixi/Stage.js", - "line": 30, + "line": 35, "itemtype": "method", "name": "updateTransform", "internal": "", @@ -1664,7 +1946,7 @@ }, { "file": "pixi/Stage.js", - "line": 44, + "line": 59, "itemtype": "method", "name": "setBackgroundColor", "params": [ @@ -1685,7 +1967,7 @@ }, { "message": "unknown tag: internal", - "line": " pixi/Stage.js:30" + "line": " pixi/Stage.js:35" }, { "message": "Missing item type", @@ -1717,19 +1999,19 @@ }, { "message": "Missing item type\nresizes the canvas view to the specified width and height", - "line": " pixi/renderers/CanvasRenderer.js:83" + "line": " pixi/renderers/CanvasRenderer.js:96" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:97" + "line": " pixi/renderers/CanvasRenderer.js:110" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:167" + "line": " pixi/renderers/CanvasRenderer.js:180" }, { "message": "Missing item type", - "line": " pixi/renderers/CanvasRenderer.js:202" + "line": " pixi/renderers/CanvasRenderer.js:215" }, { "message": "Missing item type", @@ -1761,39 +2043,39 @@ }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:64" + "line": " pixi/renderers/WebGLRenderer.js:65" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:103" + "line": " pixi/renderers/WebGLRenderer.js:104" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:223" + "line": " pixi/renderers/WebGLRenderer.js:235" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:252" + "line": " pixi/renderers/WebGLRenderer.js:264" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:448" + "line": " pixi/renderers/WebGLRenderer.js:460" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:547" + "line": " pixi/renderers/WebGLRenderer.js:559" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:575" + "line": " pixi/renderers/WebGLRenderer.js:587" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:653" + "line": " pixi/renderers/WebGLRenderer.js:665" }, { "message": "Missing item type", - "line": " pixi/renderers/WebGLRenderer.js:662" + "line": " pixi/renderers/WebGLRenderer.js:674" }, { "message": "Missing item type", @@ -1829,7 +2111,7 @@ }, { "message": "Missing item type", - "line": " pixi/DisplayObject.js:79" + "line": " pixi/DisplayObject.js:82" }, { "message": "Missing item type", @@ -1841,6 +2123,10 @@ }, { "message": "Missing item type", + "line": " pixi/InteractionManager.js:1" + }, + { + "message": "Missing item type", "line": " pixi/MovieClip.js:1" }, { @@ -1861,7 +2147,7 @@ }, { "message": "Missing item type", - "line": " pixi/Sprite.js:98" + "line": " pixi/Sprite.js:177" }, { "message": "Missing item type", diff --git a/docs/files/pixi_DisplayObject.js.html b/docs/files/pixi_DisplayObject.js.html index 3314e86..a1d9784 100644 --- a/docs/files/pixi_DisplayObject.js.html +++ b/docs/files/pixi_DisplayObject.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -187,6 +191,9 @@ this._cr = 1; this.renderable = false; + + // NOT YET :/ This only applies to children within the container.. + this.interactive = true; } // constructor @@ -200,7 +207,7 @@ // TODO OPTIMIZE THIS!! with dirty if(this.rotation != this.rotationCache) { - this.rotationCach = this.rotation; + this.rotationCache = this.rotation; this._sr = Math.sin(this.rotation); this._cr = Math.cos(this.rotation); } diff --git a/docs/files/pixi_DisplayObjectContainer.js.html b/docs/files/pixi_DisplayObjectContainer.js.html index 3ef66ea..8083fa9 100644 --- a/docs/files/pixi_DisplayObjectContainer.js.html +++ b/docs/files/pixi_DisplayObjectContainer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -134,7 +138,7 @@ * @property children {Array} */ this.children = []; - + //s this.renderable = false; } @@ -247,7 +251,7 @@ if(!this.visible)return; PIXI.DisplayObject.prototype.updateTransform.call( this ); - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); diff --git a/docs/files/pixi_InteractionManager.js.html b/docs/files/pixi_InteractionManager.js.html new file mode 100644 index 0000000..ed46760 --- /dev/null +++ b/docs/files/pixi_InteractionManager.js.html @@ -0,0 +1,483 @@ + + + + + pixi/InteractionManager.js - Pixi.js API + + + + + + + + +
    +
    +
    + +

    + +
    +
    + API Docs for: 1.0 +
    +
    +
    + +
    + +
    +
    +
    + Show: + + + + + + + +
    + + +
    +
    +
    +

    File: pixi/InteractionManager.js

    + +
    +
    +/**
    + * @author Mat Groves http://matgroves.com/ @Doormat23
    + */
    +
    +
    +
    +/**
    +The interaction manager deals with mouse and touch events. At this moment only Sprite's can be interactive.
    +This manager also supports multitouch.
    +@class InteractionManager
    +@constructor
    +@param stage {Stage}
    +@type Stage
    +*/
    +PIXI.InteractionManager = function(stage)
    +{
    +	/**
    +	 * a refference to the stage
    +	 * @property stage
    +	 * @type Stage
    +	 */
    +	this.stage = stage;
    +
    +	// helpers
    +	this.tempPoint = new PIXI.Point();
    +	this.tempMatrix =  mat3.create();
    +	
    +	this.mouseoverEnabled = true;
    +	
    +	/**
    +	 * the mouse data 
    +	 * @property mouse
    +	 * @type InteractionData
    +	 */
    +	this.mouse = new PIXI.InteractionData();
    +	
    +	/**
    +	 * an object that stores current touches (InteractionData) by id reference 
    +	 * @property touchs
    +	 * @type Object
    +	 */
    +	this.touchs = {};
    +	
    +	//tiny little interactiveData pool!
    +	this.pool = [];
    +	
    +	this.interactiveItems = [];
    +}
    +
    +// constructor
    +PIXI.InteractionManager.constructor = PIXI.InteractionManager;
    +
    +/**
    + * This method will disable rollover/rollout for ALL interactive items
    + * You may wish to use this an optimization if your app does not require rollover/rollout funcitonality
    + * @method disableMouseOver
    + */
    +PIXI.InteractionManager.prototype.disableMouseOver = function()
    +{
    +	if(!this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.removeEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +/**
    + * This method will enable rollover/rollout for ALL interactive items
    + * It is enabled by default
    + * @method enableMouseOver
    + */
    +PIXI.InteractionManager.prototype.enableMouseOver = function()
    +{
    +	if(this.mouseoverEnabled)return;
    +	
    +	this.mouseoverEnabled = false;
    +	if(this.target)this.target.view.addEventListener('mousemove',  this.onMouseMove.bind(this));
    +}
    +
    +PIXI.InteractionManager.prototype.collectInteractiveSprite = function(displayObject)
    +{
    +	var children = displayObject.children;
    +	var length = children.length;
    +	
    +	for (var i = length - 1; i >= 0; i--)
    +	{
    +		var child = children[i];
    +		
    +		// only sprite's right now...
    +		if(child instanceof PIXI.Sprite)
    +		{
    +			if(child.interactive)this.interactiveItems.push(child);
    +		}
    +		else
    +		{
    +			// use this to optimize..
    +			if(!child.interactive)continue;
    +		}
    +		
    +		if(child.children.length > 0)
    +		{
    +			this.collectInteractiveSprite(child);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.setTarget = function(target)
    +{
    +	this.target = target;
    +	if(this.mouseoverEnabled)target.view.addEventListener('mousemove',  this.onMouseMove.bind(this), true);
    +	target.view.addEventListener('mousedown',  this.onMouseDown.bind(this), true);
    + 	target.view.addEventListener('mouseup', 	this.onMouseUp.bind(this), true);
    + 	target.view.addEventListener('mouseout', 	this.onMouseUp.bind(this), true);
    +	
    +	// aint no multi touch just yet!
    +	target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true);
    +	target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true);
    +	target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true);
    +}
    +
    +PIXI.InteractionManager.prototype.hitTest = function(interactionData)
    +{
    +	if(this.dirty)
    +	{
    +		this.dirty = false;
    +		this.interactiveItems = [];
    +		// go through and collect all the objects that are interactive..
    +		this.collectInteractiveSprite(this.stage);
    +	}
    +	
    +	var tempPoint = this.tempPoint;
    +	var tempMatrix = this.tempMatrix;
    +	var global = interactionData.global;
    +	
    +	var length = this.interactiveItems.length;
    +	
    +	for (var i = 0; i < length; i++)
    +	{
    +		var item = this.interactiveItems[i];
    +		if(!item.visible)continue;
    +		
    +		// TODO this could do with some optimizing!
    +		// maybe store the inverse?
    +		// or do a lazy check first?
    +		//mat3.inverse(item.worldTransform, tempMatrix);
    +		//tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; 
    +		//tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5];
    +	
    +		// OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be!
    +		
    +		var worldTransform = item.worldTransform;
    +		
    +		var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2],
    +            a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5],
    +            id = 1 / (a00 * a11 + a01 * -a10);
    +		
    +		tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; 
    +		tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id;
    +		
    +			
    +		var x1 = -item.width * item.anchor.x
    +		
    +		if(tempPoint.x > x1 && tempPoint.x < x1 + item.width)
    +		{
    +			var y1 = -item.height * item.anchor.y;
    +			
    +			if(tempPoint.y > y1 && tempPoint.y < y1 + item.height)
    +			{
    +				interactionData.local.x = tempPoint.x;
    +				interactionData.local.y = tempPoint.y;
    +				
    +				return item;
    +			}
    +		}
    +	}
    +		
    +	return null;	
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	// TODO optimize by not check EVERY TIME! maybe half as often? //
    +	var rect = this.target.view.getBoundingClientRect();
    +	
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	
    +	if(this.currentOver != item)
    +	{
    +		if(this.currentOver)
    +		{
    +			if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse);
    +			this.currentOver = null;
    +		}
    +		
    +		this.target.view.style.cursor = "default";
    +	}
    +		
    +	if(item)
    +	{
    +		
    +		if(this.currentOver == item)return;
    +		
    +		this.currentOver = item;
    +		this.target.view.style.cursor = "pointer";
    +		
    +		if(item.mouseover)item.mouseover(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseDown = function(event)
    +{
    +	var rect = this.target.view.getBoundingClientRect();
    +	this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width);
    +	this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height);
    +	
    +	var item = this.hitTest(this.mouse);
    +	if(item)
    +	{
    +		this.currentDown = item;
    +		if(item.mousedown)item.mousedown(this.mouse);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onMouseUp = function(event)
    +{
    +	if(this.currentDown)
    +	{
    +		if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse);	
    +		
    +		if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse);	
    +		this.currentDown = null;
    +	}
    +}
    +
    +
    +PIXI.InteractionManager.prototype.onTouchMove = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		// update the touch position
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchStart = function(event)
    +{
    +	event.preventDefault();
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		
    +		var touchData = this.pool.pop();
    +		if(!touchData)touchData = new PIXI.InteractionData();
    +		
    +		this.touchs[touchEvent.identifier] = touchData;
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		var item = this.hitTest(touchData);
    +		if(item)
    +		{
    +			touchData.currentDown = item;
    +			if(item.touchstart)item.touchstart(touchData);
    +		}
    +	}
    +}
    +
    +PIXI.InteractionManager.prototype.onTouchEnd = function(event)
    +{
    +	event.preventDefault();
    +	
    +	var rect = this.target.view.getBoundingClientRect();
    +	var changedTouches = event.changedTouches;
    +	
    +	for (var i=0; i < changedTouches.length; i++) 
    +	{
    +		var touchEvent = changedTouches[i];
    +		var touchData = this.touchs[touchEvent.identifier];
    +		
    +		touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width);
    +		touchData.global.y = (touchEvent.clientY - rect.top)  * (this.target.height / rect.height);
    +		
    +		if(touchData.currentDown)
    +		{
    +			if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData);
    +			
    +			var item = this.hitTest(touchData);
    +			if(item == touchData.currentDown)
    +			{
    +				if(touchData.currentDown.tap)touchData.currentDown.tap(touchData);	
    +			}
    +			touchData.currentDown = null;
    +		}
    +		
    +		// remove the touch..
    +		this.pool.push(touchData);
    +		this.touchs[touchEvent.identifier] = null;
    +	}
    +}
    +
    +/**
    +@class InteractionData
    +@constructor
    +*/
    +PIXI.InteractionData = function()
    +{
    +	/**
    +	 * This point stores the global coords of where the touch/mouse event happened
    +	 * @property global 
    +	 * @type Point
    +	 */
    +	this.global = new PIXI.Point();
    +	
    +	/**
    +	 * This point stores the local coords of where the touch/mouse event happened
    +	 * @property local 
    +	 * @type Point
    +	 */
    +	this.local = new PIXI.Point();
    +}
    +
    +// constructor
    +PIXI.InteractionData.constructor = PIXI.InteractionData;
    +
    +
    +
    +    
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/docs/files/pixi_MovieClip.js.html b/docs/files/pixi_MovieClip.js.html index 13c7ad5..9795ab1 100644 --- a/docs/files/pixi_MovieClip.js.html +++ b/docs/files/pixi_MovieClip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Pixi.js.html b/docs/files/pixi_Pixi.js.html index 1e312f2..6b9b22e 100644 --- a/docs/files/pixi_Pixi.js.html +++ b/docs/files/pixi_Pixi.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Point.js.html b/docs/files/pixi_Point.js.html index 6bf960a..1e27dc9 100644 --- a/docs/files/pixi_Point.js.html +++ b/docs/files/pixi_Point.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Rectangle.js.html b/docs/files/pixi_Rectangle.js.html index 52e0c91..e7a6b07 100644 --- a/docs/files/pixi_Rectangle.js.html +++ b/docs/files/pixi_Rectangle.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_Sprite.js.html b/docs/files/pixi_Sprite.js.html index 1deaa9a..3f1d440 100644 --- a/docs/files/pixi_Sprite.js.html +++ b/docs/files/pixi_Sprite.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -186,6 +190,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -208,7 +279,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -223,10 +306,9 @@ // some helper functions.. - /** * - * Helper function that creates a sprite that will contain a texture from the TextureCache based on tjhe frameId + * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId * The frame ids are created when a Texture packer file has been loaded * @method fromFrame * @static diff --git a/docs/files/pixi_Stage.js.html b/docs/files/pixi_Stage.js.html index d127230..f3eb17a 100644 --- a/docs/files/pixi_Stage.js.html +++ b/docs/files/pixi_Stage.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -135,6 +140,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -150,11 +159,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i<j; i++) { this.children[i].updateTransform(); } + + if(this.dirty) + { + this.dirty = false; + + // update interactive! + this.interactionManager.dirty = true; + + + } } /** @@ -170,8 +189,8 @@ PIXI.Stage.prototype.__addChild = function(child) { - //this.__childrenAdded.push(child); - + if(child.interactive)this.dirty = true; + child.stage = this; if(child.children) @@ -187,6 +206,8 @@ PIXI.Stage.prototype.__removeChild = function(child) { + if(child.interactive)this.dirty = true; + this.__childrenRemoved.push(child); child.stage = undefined; diff --git a/docs/files/pixi_extras_Rope.js.html b/docs/files/pixi_extras_Rope.js.html index f0ff723..eafeff0 100644 --- a/docs/files/pixi_extras_Rope.js.html +++ b/docs/files/pixi_extras_Rope.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_extras_Strip.js.html b/docs/files/pixi_extras_Strip.js.html index 85c1c58..db3334f 100644 --- a/docs/files/pixi_extras_Strip.js.html +++ b/docs/files/pixi_extras_Strip.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_AssetLoader.js.html b/docs/files/pixi_loaders_AssetLoader.js.html index 7cb38fe..1bcc5b9 100644 --- a/docs/files/pixi_loaders_AssetLoader.js.html +++ b/docs/files/pixi_loaders_AssetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_loaders_SpriteSheetLoader.js.html b/docs/files/pixi_loaders_SpriteSheetLoader.js.html index 96fab87..4563921 100644 --- a/docs/files/pixi_loaders_SpriteSheetLoader.js.html +++ b/docs/files/pixi_loaders_SpriteSheetLoader.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_CanvasRenderer.js.html b/docs/files/pixi_renderers_CanvasRenderer.js.html index cfedafa..2f97655 100644 --- a/docs/files/pixi_renderers_CanvasRenderer.js.html +++ b/docs/files/pixi_renderers_CanvasRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -124,8 +128,9 @@ * @class CanvasRenderer * @param width {Number} the width of the canvas view * @param height {Number} the height of the canvas view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.CanvasRenderer = function(width, height) +PIXI.CanvasRenderer = function(width, height, view) { /** * The width of the canvas view @@ -149,7 +154,7 @@ * @property view * @type Canvas */ - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); // hack to enable some hardware acceleration! //this.view.style["transform"] = "translatez(0)"; @@ -194,6 +199,18 @@ this.context.clearRect(0, 0, this.width, this.height) this.renderDisplayObject(stage); + //as + + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLBatch.js.html b/docs/files/pixi_renderers_WebGLBatch.js.html index 6070a40..cc1e79c 100644 --- a/docs/files/pixi_renderers_WebGLBatch.js.html +++ b/docs/files/pixi_renderers_WebGLBatch.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_renderers_WebGLRenderer.js.html b/docs/files/pixi_renderers_WebGLRenderer.js.html index 3504fd3..a08b217 100644 --- a/docs/files/pixi_renderers_WebGLRenderer.js.html +++ b/docs/files/pixi_renderers_WebGLRenderer.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -129,13 +133,14 @@ * @default 0 * @param height {Number} the height of the canvas view * @default 0 + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.WebGLRenderer = function(width, height) +PIXI.WebGLRenderer = function(width, height, view) { this.width = width ? width : 800; this.height = height ? height : 600; - this.view = document.createElement( 'canvas' ); + this.view = view ? view : document.createElement( 'canvas' ); this.view.width = this.width; this.view.height = this.height; this.view.background = "#FF0000"; @@ -284,7 +289,7 @@ for (var i=0; i < stage.__childrenRemoved.length; i++) { this.removeDisplayObject(stage.__childrenRemoved[i]); - // stage.__childrenRemoved[i].cacheVisible = false; + // stage.__childrenRemoved[i].cacheVisible = false; } /* // no add all new sprites @@ -334,6 +339,17 @@ } } + // interaction + // run interaction! + if(stage.interactive) + { + //need to add some events! + if(!stage._interactiveEventsAdded) + { + stage._interactiveEventsAdded = true; + stage.interactionManager.setTarget(this); + } + } } /** diff --git a/docs/files/pixi_renderers_WebGLShaders.js.html b/docs/files/pixi_renderers_WebGLShaders.js.html index 5ab65ec..b15b93f 100644 --- a/docs/files/pixi_renderers_WebGLShaders.js.html +++ b/docs/files/pixi_renderers_WebGLShaders.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_BaseTexture.js.html b/docs/files/pixi_textures_BaseTexture.js.html index a1d5004..438dc2f 100644 --- a/docs/files/pixi_textures_BaseTexture.js.html +++ b/docs/files/pixi_textures_BaseTexture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_textures_Texture.js.html b/docs/files/pixi_textures_Texture.js.html index 1b17ae6..d7a1af4 100644 --- a/docs/files/pixi_textures_Texture.js.html +++ b/docs/files/pixi_textures_Texture.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -299,10 +303,13 @@ * Remove a texture from the textureCache. * @method removeTextureFromCache * @param id {String} the id of the texture to be removed + * @return {Texture} the texture that was removed */ PIXI.Texture.removeTextureFromCache = function(id) { - PIXI.TextureCache[id] = texture; + var texture = PIXI.TextureCache[id] + PIXI.TextureCache[id] = null; + return texture; } diff --git a/docs/files/pixi_utils_Detector.js.html b/docs/files/pixi_utils_Detector.js.html index d3f3a54..de02aa1 100644 --- a/docs/files/pixi_utils_Detector.js.html +++ b/docs/files/pixi_utils_Detector.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -125,8 +129,9 @@ * @static * @param width {Number} the width of the renderers view * @param height {Number} the height of the renderers view + * @param view {Canvas} the canvas to use as a view, optional */ -PIXI.autoDetectRenderer = function(width, height) +PIXI.autoDetectRenderer = function(width, height, view) { if(!width)width = 800; if(!height)height = 600; @@ -137,10 +142,10 @@ //console.log(webgl); if( webgl ) { - return new PIXI.WebGLRenderer(width, height) + return new PIXI.WebGLRenderer(width, height, view) } - return new PIXI.CanvasRenderer(width, height); + return new PIXI.CanvasRenderer(width, height, view); } diff --git a/docs/files/pixi_utils_EventTarget.js.html b/docs/files/pixi_utils_EventTarget.js.html index 3585a93..a01653e 100644 --- a/docs/files/pixi_utils_EventTarget.js.html +++ b/docs/files/pixi_utils_EventTarget.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/files/pixi_utils_Utils.js.html b/docs/files/pixi_utils_Utils.js.html index 394866f..9c4f13d 100644 --- a/docs/files/pixi_utils_Utils.js.html +++ b/docs/files/pixi_utils_Utils.js.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/index.html b/docs/index.html index e2ac3f0..71787a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • diff --git a/docs/logo_small.png b/docs/logo_small.png deleted file mode 100644 index f7c1f4f..0000000 --- a/docs/logo_small.png +++ /dev/null Binary files differ diff --git a/docs/modules/PIXI.html b/docs/modules/PIXI.html index 3bdd35a..1f0caeb 100644 --- a/docs/modules/PIXI.html +++ b/docs/modules/PIXI.html @@ -15,11 +15,11 @@
    -

    +

    - API Docs for: 0.9 + API Docs for: 1.0
    @@ -51,6 +51,10 @@
  • DisplayObjectContainer
  • +
  • InteractionData
  • + +
  • InteractionManager
  • +
  • MovieClip
  • Point
  • @@ -171,6 +175,18 @@
  • + + InteractionData + +
  • + +
  • + + InteractionManager + +
  • + +
  • MovieClip diff --git a/examples/example 6 - Interactivity/button.png b/examples/example 6 - Interactivity/button.png new file mode 100644 index 0000000..b0cd012 --- /dev/null +++ b/examples/example 6 - Interactivity/button.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonDown.png b/examples/example 6 - Interactivity/buttonDown.png new file mode 100644 index 0000000..643b757 --- /dev/null +++ b/examples/example 6 - Interactivity/buttonDown.png Binary files differ diff --git a/examples/example 6 - Interactivity/buttonOver.png b/examples/example 6 - Interactivity/buttonOver.png new file mode 100644 index 0000000..8117a2d --- /dev/null +++ b/examples/example 6 - Interactivity/buttonOver.png Binary files differ diff --git a/examples/example 6 - Interactivity/button_test_BG.jpg b/examples/example 6 - Interactivity/button_test_BG.jpg new file mode 100644 index 0000000..0449cbb --- /dev/null +++ b/examples/example 6 - Interactivity/button_test_BG.jpg Binary files differ diff --git a/examples/example 6 - Interactivity/index.html b/examples/example 6 - Interactivity/index.html new file mode 100644 index 0000000..f5a0053 --- /dev/null +++ b/examples/example 6 - Interactivity/index.html @@ -0,0 +1,175 @@ + + + + pixi.js example 6 Interactivity + + + + + + + + + + + diff --git a/examples/example 6 - Interactivity/pixi.js b/examples/example 6 - Interactivity/pixi.js new file mode 100644 index 0000000..e4c61db --- /dev/null +++ b/examples/example 6 - Interactivity/pixi.js @@ -0,0 +1,128 @@ +var PIXI=PIXI||{};PIXI.Point=function(a,c){this.x=a?a:0;this.y=c?c:0};PIXI.Point.clone=function(){return new PIXI.Point(this.x,this.y)};PIXI.Point.constructor=PIXI.Point;PIXI.Rectangle=function(a,c,f,d){this.x=a?a:0;this.y=c?c:0;this.width=f?f:0;this.height=d?d:0};PIXI.Rectangle.clone=function(){return new PIXI.Rectangle(this.x,this.y,this.width,this.height)};PIXI.Rectangle.constructor=PIXI.Rectangle;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1E3/60)}}();function HEXtoRGB(a){return[(a>>16&255)/255,(a>>8&255)/255,(a&255)/255]} +"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(){var a=Array.prototype.slice;return function(c){function f(){var h=g.concat(a.call(arguments));d.apply(this instanceof f?this:c,h)}var d=this,g=a.call(arguments,1);if("function"!=typeof d)throw new TypeError;f.prototype=function j(a){a&&(j.prototype=a);if(!(this instanceof j))return new j}(d.prototype);return f}}()); +var AjaxRequest=function(){var a=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];if(window.ActiveXObject)for(var c=0;c>1);var e=g[0];return e*(1.5-0.5*b*e*e)}}else d.invsqrt=function(b){return 1/Math.sqrt(b)}; +var j=null;f();var k={create:function(b){var e=new j(3);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2]):e[0]=e[1]=e[2]=0;return e},createFrom:function(b,e,a){var c=new j(3);c[0]=b;c[1]=e;c[2]=a;return c},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])},add:function(b,e,a){if(!a||b===a)return b[0]+=e[0],b[1]+=e[1],b[2]+=e[2],b;a[0]=b[0]+e[0];a[1]=b[1]+e[1];a[2]=b[2]+e[2];return a},subtract:function(b, +e,a){if(!a||b===a)return b[0]-=e[0],b[1]-=e[1],b[2]-=e[2],b;a[0]=b[0]-e[0];a[1]=b[1]-e[1];a[2]=b[2]-e[2];return a},multiply:function(b,e,a){if(!a||b===a)return b[0]*=e[0],b[1]*=e[1],b[2]*=e[2],b;a[0]=b[0]*e[0];a[1]=b[1]*e[1];a[2]=b[2]*e[2];return a},negate:function(b,e){e||(e=b);e[0]=-b[0];e[1]=-b[1];e[2]=-b[2];return e},scale:function(b,e,a){if(!a||b===a)return b[0]*=e,b[1]*=e,b[2]*=e,b;a[0]=b[0]*e;a[1]=b[1]*e;a[2]=b[2]*e;return a},normalize:function(b,e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=Math.sqrt(a* +a+c*c+p*p);if(!d)return e[0]=0,e[1]=0,e[2]=0,e;if(1===d)return e[0]=a,e[1]=c,e[2]=p,e;d=1/d;e[0]=a*d;e[1]=c*d;e[2]=p*d;return e},cross:function(b,e,a){a||(a=b);var c=b[0],p=b[1];b=b[2];var d=e[0],f=e[1];e=e[2];a[0]=p*e-b*f;a[1]=b*d-c*e;a[2]=c*f-p*d;return a},length:function(b){var e=b[0],a=b[1];b=b[2];return Math.sqrt(e*e+a*a+b*b)},squaredLength:function(b){var e=b[0],a=b[1];b=b[2];return e*e+a*a+b*b},dot:function(b,e){return b[0]*e[0]+b[1]*e[1]+b[2]*e[2]},direction:function(b,e,a){a||(a=b);var c= +b[0]-e[0],p=b[1]-e[1];b=b[2]-e[2];e=Math.sqrt(c*c+p*p+b*b);if(!e)return a[0]=0,a[1]=0,a[2]=0,a;e=1/e;a[0]=c*e;a[1]=p*e;a[2]=b*e;return a},lerp:function(b,e,a,c){c||(c=b);c[0]=b[0]+a*(e[0]-b[0]);c[1]=b[1]+a*(e[1]-b[1]);c[2]=b[2]+a*(e[2]-b[2]);return c},dist:function(b,e){var a=e[0]-b[0],c=e[1]-b[1],p=e[2]-b[2];return Math.sqrt(a*a+c*c+p*p)}},r=null,n=new j(4);k.unproject=function(b,e,a,c,p){p||(p=b);r||(r=s.create());var d=r;n[0]=2*(b[0]-c[0])/c[2]-1;n[1]=2*(b[1]-c[1])/c[3]-1;n[2]=2*b[2]-1;n[3]=1; +s.multiply(a,e,d);if(!s.inverse(d))return null;s.multiplyVec4(d,n);if(0===n[3])return null;p[0]=n[0]/n[3];p[1]=n[1]/n[3];p[2]=n[2]/n[3];return p};var y=k.createFrom(1,0,0),C=k.createFrom(0,1,0),m=k.createFrom(0,0,1),u=k.create();k.rotationTo=function(b,e,a){a||(a=l.create());var c=k.dot(b,e);if(1<=c)l.set(E,a);else if(-0.999999>c)k.cross(y,b,u),1E-6>k.length(u)&&k.cross(C,b,u),1E-6>k.length(u)&&k.cross(m,b,u),k.normalize(u),l.fromAngleAxis(Math.PI,u,a);else{var c=Math.sqrt(2*(1+c)),p=1/c;k.cross(b, +e,u);a[0]=u[0]*p;a[1]=u[1]*p;a[2]=u[2]*p;a[3]=0.5*c;l.normalize(a)}1a[3]&&(a[3]=-1);return a};k.str=function(b){return"["+b[0]+", "+b[1]+", "+b[2]+"]"};var x={create:function(b){var e=new j(9);b?(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8]):e[0]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=0;return e},createFrom:function(b,e,a,c,p,d,f,g,G){var v=new j(9);v[0]=b;v[1]=e;v[2]=a;v[3]=c;v[4]=p;v[5]=d;v[6]=f;v[7]=g;v[8]=G;return v},determinant:function(b){var e= +b[3],a=b[4],c=b[5],p=b[6],d=b[7],f=b[8];return b[0]*(f*a-c*d)+b[1]*(-f*e+c*p)+b[2]*(d*e-a*p)},inverse:function(b,e){var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],G=b[6],v=b[7],h=b[8],j=h*f-g*v,k=-h*d+g*G,l=v*d-f*G,q=a*j+c*k+p*l;if(!q)return null;q=1/q;e||(e=x.create());e[0]=j*q;e[1]=(-h*c+p*v)*q;e[2]=(g*c-p*f)*q;e[3]=k*q;e[4]=(h*a-p*G)*q;e[5]=(-g*a+p*d)*q;e[6]=l*q;e[7]=(-v*a+c*G)*q;e[8]=(f*a-c*d)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],p=b[1],d=b[2],f=b[3],g=b[4],G=b[5],v=b[6],h= +b[7];b=b[8];var j=e[0],k=e[1],l=e[2],q=e[3],m=e[4],t=e[5],n=e[6],w=e[7];e=e[8];a[0]=j*c+k*f+l*v;a[1]=j*p+k*g+l*h;a[2]=j*d+k*G+l*b;a[3]=q*c+m*f+t*v;a[4]=q*p+m*g+t*h;a[5]=q*d+m*G+t*b;a[6]=n*c+w*f+e*v;a[7]=n*p+w*g+e*h;a[8]=n*d+w*G+e*b;return a},multiplyVec2:function(b,e,a){a||(a=e);var c=e[0];e=e[1];a[0]=c*b[0]+e*b[3]+b[6];a[1]=c*b[1]+e*b[4]+b[7];return a},multiplyVec3:function(b,e,a){a||(a=e);var c=e[0],p=e[1];e=e[2];a[0]=c*b[0]+p*b[3]+e*b[6];a[1]=c*b[1]+p*b[4]+e*b[7];a[2]=c*b[2]+p*b[5]+e*b[8];return a}, +set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])},identity:function(b){b||(b=x.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=1;b[5]=0;b[6]=0;b[7]=0;b[8]=1;return b},transpose:function(b, +e){if(!e||b===e){var a=b[1],c=b[2],p=b[5];b[1]=b[3];b[2]=b[6];b[3]=a;b[5]=b[7];b[6]=c;b[7]=p;return b}e[0]=b[0];e[1]=b[3];e[2]=b[6];e[3]=b[1];e[4]=b[4];e[5]=b[7];e[6]=b[2];e[7]=b[5];e[8]=b[8];return e},toMat4:function(b,e){e||(e=s.create());e[15]=1;e[14]=0;e[13]=0;e[12]=0;e[11]=0;e[10]=b[8];e[9]=b[7];e[8]=b[6];e[7]=0;e[6]=b[5];e[5]=b[4];e[4]=b[3];e[3]=0;e[2]=b[2];e[1]=b[1];e[0]=b[0];return e},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+ +b[8]+"]"}},s={create:function(b){var e=new j(16);b&&(e[0]=b[0],e[1]=b[1],e[2]=b[2],e[3]=b[3],e[4]=b[4],e[5]=b[5],e[6]=b[6],e[7]=b[7],e[8]=b[8],e[9]=b[9],e[10]=b[10],e[11]=b[11],e[12]=b[12],e[13]=b[13],e[14]=b[14],e[15]=b[15]);return e},createFrom:function(b,e,a,c,p,d,f,g,h,v,N,I,k,l,q,m){var t=new j(16);t[0]=b;t[1]=e;t[2]=a;t[3]=c;t[4]=p;t[5]=d;t[6]=f;t[7]=g;t[8]=h;t[9]=v;t[10]=N;t[11]=I;t[12]=k;t[13]=l;t[14]=q;t[15]=m;return t},set:function(b,e){e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4]; +e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=b[12];e[13]=b[13];e[14]=b[14];e[15]=b[15];return e},equal:function(b,e){return b===e||1E-6>Math.abs(b[0]-e[0])&&1E-6>Math.abs(b[1]-e[1])&&1E-6>Math.abs(b[2]-e[2])&&1E-6>Math.abs(b[3]-e[3])&&1E-6>Math.abs(b[4]-e[4])&&1E-6>Math.abs(b[5]-e[5])&&1E-6>Math.abs(b[6]-e[6])&&1E-6>Math.abs(b[7]-e[7])&&1E-6>Math.abs(b[8]-e[8])&&1E-6>Math.abs(b[9]-e[9])&&1E-6>Math.abs(b[10]-e[10])&&1E-6>Math.abs(b[11]-e[11])&&1E-6>Math.abs(b[12]- +e[12])&&1E-6>Math.abs(b[13]-e[13])&&1E-6>Math.abs(b[14]-e[14])&&1E-6>Math.abs(b[15]-e[15])},identity:function(b){b||(b=s.create());b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return b},transpose:function(b,e){if(!e||b===e){var a=b[1],c=b[2],p=b[3],d=b[6],f=b[7],g=b[11];b[1]=b[4];b[2]=b[8];b[3]=b[12];b[4]=a;b[6]=b[9];b[7]=b[13];b[8]=c;b[9]=d;b[11]=b[14];b[12]=p;b[13]=f;b[14]=g;return b}e[0]=b[0];e[1]=b[4];e[2]=b[8];e[3]=b[12]; +e[4]=b[1];e[5]=b[5];e[6]=b[9];e[7]=b[13];e[8]=b[2];e[9]=b[6];e[10]=b[10];e[11]=b[14];e[12]=b[3];e[13]=b[7];e[14]=b[11];e[15]=b[15];return e},determinant:function(b){var e=b[0],a=b[1],c=b[2],p=b[3],d=b[4],f=b[5],g=b[6],h=b[7],v=b[8],j=b[9],I=b[10],k=b[11],l=b[12],q=b[13],m=b[14];b=b[15];return l*j*g*p-v*q*g*p-l*f*I*p+d*q*I*p+v*f*m*p-d*j*m*p-l*j*c*h+v*q*c*h+l*a*I*h-e*q*I*h-v*a*m*h+e*j*m*h+l*f*c*k-d*q*c*k-l*a*g*k+e*q*g*k+d*a*m*k-e*f*m*k-v*f*c*b+d*j*c*b+v*a*g*b-e*j*g*b-d*a*I*b+e*f*I*b},inverse:function(b, +e){e||(e=b);var a=b[0],c=b[1],p=b[2],d=b[3],f=b[4],g=b[5],h=b[6],v=b[7],j=b[8],k=b[9],l=b[10],m=b[11],q=b[12],n=b[13],t=b[14],r=b[15],w=a*g-c*f,B=a*h-p*f,z=a*v-d*f,A=c*h-p*g,s=c*v-d*g,u=p*v-d*h,x=j*n-k*q,y=j*t-l*q,C=j*r-m*q,D=k*t-l*n,E=k*r-m*n,J=l*r-m*t,F=w*J-B*E+z*D+A*C-s*y+u*x;if(!F)return null;F=1/F;e[0]=(g*J-h*E+v*D)*F;e[1]=(-c*J+p*E-d*D)*F;e[2]=(n*u-t*s+r*A)*F;e[3]=(-k*u+l*s-m*A)*F;e[4]=(-f*J+h*C-v*y)*F;e[5]=(a*J-p*C+d*y)*F;e[6]=(-q*u+t*z-r*B)*F;e[7]=(j*u-l*z+m*B)*F;e[8]=(f*E-g*C+v*x)*F;e[9]= +(-a*E+c*C-d*x)*F;e[10]=(q*s-n*z+r*w)*F;e[11]=(-j*s+k*z-m*w)*F;e[12]=(-f*D+g*y-h*x)*F;e[13]=(a*D-c*y+p*x)*F;e[14]=(-q*A+n*B-t*w)*F;e[15]=(j*A-k*B+l*w)*F;return e},toRotationMat:function(b,e){e||(e=s.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[3];e[4]=b[4];e[5]=b[5];e[6]=b[6];e[7]=b[7];e[8]=b[8];e[9]=b[9];e[10]=b[10];e[11]=b[11];e[12]=0;e[13]=0;e[14]=0;e[15]=1;return e},toMat3:function(b,e){e||(e=x.create());e[0]=b[0];e[1]=b[1];e[2]=b[2];e[3]=b[4];e[4]=b[5];e[5]=b[6];e[6]=b[8];e[7]=b[9];e[8]=b[10]; +return e},toInverseMat3:function(b,e){var a=b[0],c=b[1],d=b[2],f=b[4],H=b[5],g=b[6],h=b[8],j=b[9],k=b[10],l=k*H-g*j,m=-k*f+g*h,n=j*f-H*h,q=a*l+c*m+d*n;if(!q)return null;q=1/q;e||(e=x.create());e[0]=l*q;e[1]=(-k*c+d*j)*q;e[2]=(g*c-d*H)*q;e[3]=m*q;e[4]=(k*a-d*h)*q;e[5]=(-g*a+d*f)*q;e[6]=n*q;e[7]=(-j*a+c*h)*q;e[8]=(H*a-c*f)*q;return e},multiply:function(b,e,a){a||(a=b);var c=b[0],d=b[1],f=b[2],H=b[3],g=b[4],h=b[5],j=b[6],k=b[7],l=b[8],m=b[9],n=b[10],q=b[11],r=b[12],t=b[13],s=b[14];b=b[15];var w=e[0], +B=e[1],z=e[2],A=e[3];a[0]=w*c+B*g+z*l+A*r;a[1]=w*d+B*h+z*m+A*t;a[2]=w*f+B*j+z*n+A*s;a[3]=w*H+B*k+z*q+A*b;w=e[4];B=e[5];z=e[6];A=e[7];a[4]=w*c+B*g+z*l+A*r;a[5]=w*d+B*h+z*m+A*t;a[6]=w*f+B*j+z*n+A*s;a[7]=w*H+B*k+z*q+A*b;w=e[8];B=e[9];z=e[10];A=e[11];a[8]=w*c+B*g+z*l+A*r;a[9]=w*d+B*h+z*m+A*t;a[10]=w*f+B*j+z*n+A*s;a[11]=w*H+B*k+z*q+A*b;w=e[12];B=e[13];z=e[14];A=e[15];a[12]=w*c+B*g+z*l+A*r;a[13]=w*d+B*h+z*m+A*t;a[14]=w*f+B*j+z*n+A*s;a[15]=w*H+B*k+z*q+A*b;return a},multiplyVec3:function(b,e,a){a||(a=e); +var c=e[0],d=e[1];e=e[2];a[0]=b[0]*c+b[4]*d+b[8]*e+b[12];a[1]=b[1]*c+b[5]*d+b[9]*e+b[13];a[2]=b[2]*c+b[6]*d+b[10]*e+b[14];return a},multiplyVec4:function(b,e,a){a||(a=e);var c=e[0],d=e[1],f=e[2];e=e[3];a[0]=b[0]*c+b[4]*d+b[8]*f+b[12]*e;a[1]=b[1]*c+b[5]*d+b[9]*f+b[13]*e;a[2]=b[2]*c+b[6]*d+b[10]*f+b[14]*e;a[3]=b[3]*c+b[7]*d+b[11]*f+b[15]*e;return a},translate:function(b,e,a){var c=e[0],d=e[1];e=e[2];var f,g,h,j,v,k,l,m,n,q,r,t;if(!a||b===a)return b[12]=b[0]*c+b[4]*d+b[8]*e+b[12],b[13]=b[1]*c+b[5]*d+ +b[9]*e+b[13],b[14]=b[2]*c+b[6]*d+b[10]*e+b[14],b[15]=b[3]*c+b[7]*d+b[11]*e+b[15],b;f=b[0];g=b[1];h=b[2];j=b[3];v=b[4];k=b[5];l=b[6];m=b[7];n=b[8];q=b[9];r=b[10];t=b[11];a[0]=f;a[1]=g;a[2]=h;a[3]=j;a[4]=v;a[5]=k;a[6]=l;a[7]=m;a[8]=n;a[9]=q;a[10]=r;a[11]=t;a[12]=f*c+v*d+n*e+b[12];a[13]=g*c+k*d+q*e+b[13];a[14]=h*c+l*d+r*e+b[14];a[15]=j*c+m*d+t*e+b[15];return a},scale:function(b,e,a){var c=e[0],d=e[1];e=e[2];if(!a||b===a)return b[0]*=c,b[1]*=c,b[2]*=c,b[3]*=c,b[4]*=d,b[5]*=d,b[6]*=d,b[7]*=d,b[8]*=e,b[9]*= +e,b[10]*=e,b[11]*=e,b;a[0]=b[0]*c;a[1]=b[1]*c;a[2]=b[2]*c;a[3]=b[3]*c;a[4]=b[4]*d;a[5]=b[5]*d;a[6]=b[6]*d;a[7]=b[7]*d;a[8]=b[8]*e;a[9]=b[9]*e;a[10]=b[10]*e;a[11]=b[11]*e;a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15];return a},rotate:function(b,e,a,c){var d=a[0],f=a[1];a=a[2];var g=Math.sqrt(d*d+f*f+a*a),h,j,k,l,m,n,r,q,s,t,u,w,B,z,A,x,y,C,D,E;if(!g)return null;1!==g&&(g=1/g,d*=g,f*=g,a*=g);h=Math.sin(e);j=Math.cos(e);k=1-j;e=b[0];g=b[1];l=b[2];m=b[3];n=b[4];r=b[5];q=b[6];s=b[7];t=b[8];u=b[9];w= +b[10];B=b[11];z=d*d*k+j;A=f*d*k+a*h;x=a*d*k-f*h;y=d*f*k-a*h;C=f*f*k+j;D=a*f*k+d*h;E=d*a*k+f*h;d=f*a*k-d*h;f=a*a*k+j;c?b!==c&&(c[12]=b[12],c[13]=b[13],c[14]=b[14],c[15]=b[15]):c=b;c[0]=e*z+n*A+t*x;c[1]=g*z+r*A+u*x;c[2]=l*z+q*A+w*x;c[3]=m*z+s*A+B*x;c[4]=e*y+n*C+t*D;c[5]=g*y+r*C+u*D;c[6]=l*y+q*C+w*D;c[7]=m*y+s*C+B*D;c[8]=e*E+n*d+t*f;c[9]=g*E+r*d+u*f;c[10]=l*E+q*d+w*f;c[11]=m*E+s*d+B*f;return c},rotateX:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[4],f=b[5],g=b[6],h=b[7],j=b[8],k=b[9],l=b[10], +m=b[11];a?b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[4]=d*e+j*c;a[5]=f*e+k*c;a[6]=g*e+l*c;a[7]=h*e+m*c;a[8]=d*-c+j*e;a[9]=f*-c+k*e;a[10]=g*-c+l*e;a[11]=h*-c+m*e;return a},rotateY:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[8],k=b[9],l=b[10],m=b[11];a?b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*-c;a[1]=f*e+k*-c;a[2]=g*e+l*-c;a[3]=h* +e+m*-c;a[8]=d*c+j*e;a[9]=f*c+k*e;a[10]=g*c+l*e;a[11]=h*c+m*e;return a},rotateZ:function(b,e,a){var c=Math.sin(e);e=Math.cos(e);var d=b[0],f=b[1],g=b[2],h=b[3],j=b[4],k=b[5],l=b[6],m=b[7];a?b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]):a=b;a[0]=d*e+j*c;a[1]=f*e+k*c;a[2]=g*e+l*c;a[3]=h*e+m*c;a[4]=d*-c+j*e;a[5]=f*-c+k*e;a[6]=g*-c+l*e;a[7]=h*-c+m*e;return a},frustum:function(b,e,a,c,d,f,g){g||(g=s.create());var h=e-b,j=c-a,k=f-d;g[0]=2*d/h;g[1]=0; +g[2]=0;g[3]=0;g[4]=0;g[5]=2*d/j;g[6]=0;g[7]=0;g[8]=(e+b)/h;g[9]=(c+a)/j;g[10]=-(f+d)/k;g[11]=-1;g[12]=0;g[13]=0;g[14]=-(2*f*d)/k;g[15]=0;return g},perspective:function(b,e,a,c,d){b=a*Math.tan(b*Math.PI/360);e*=b;return s.frustum(-e,e,-b,b,a,c,d)},ortho:function(b,a,c,d,f,g,h){h||(h=s.create());var j=a-b,k=d-c,l=g-f;h[0]=2/j;h[1]=0;h[2]=0;h[3]=0;h[4]=0;h[5]=2/k;h[6]=0;h[7]=0;h[8]=0;h[9]=0;h[10]=-2/l;h[11]=0;h[12]=-(b+a)/j;h[13]=-(d+c)/k;h[14]=-(g+f)/l;h[15]=1;return h},lookAt:function(b,a,c,d){d|| +(d=s.create());var f,g,h,j,k,l,m,n,r=b[0],u=b[1];b=b[2];h=c[0];j=c[1];g=c[2];m=a[0];c=a[1];f=a[2];if(r===m&&u===c&&b===f)return s.identity(d);a=r-m;c=u-c;m=b-f;n=1/Math.sqrt(a*a+c*c+m*m);a*=n;c*=n;m*=n;f=j*m-g*c;g=g*a-h*m;h=h*c-j*a;(n=Math.sqrt(f*f+g*g+h*h))?(n=1/n,f*=n,g*=n,h*=n):h=g=f=0;j=c*h-m*g;k=m*f-a*h;l=a*g-c*f;(n=Math.sqrt(j*j+k*k+l*l))?(n=1/n,j*=n,k*=n,l*=n):l=k=j=0;d[0]=f;d[1]=j;d[2]=a;d[3]=0;d[4]=g;d[5]=k;d[6]=c;d[7]=0;d[8]=h;d[9]=l;d[10]=m;d[11]=0;d[12]=-(f*r+g*u+h*b);d[13]=-(j*r+k*u+ +l*b);d[14]=-(a*r+c*u+m*b);d[15]=1;return d},fromRotationTranslation:function(b,a,c){c||(c=s.create());var d=b[0],f=b[1],g=b[2],h=b[3],j=d+d,k=f+f,l=g+g;b=d*j;var m=d*k,d=d*l,n=f*k,f=f*l,g=g*l,j=h*j,k=h*k,h=h*l;c[0]=1-(n+g);c[1]=m+h;c[2]=d-k;c[3]=0;c[4]=m-h;c[5]=1-(b+g);c[6]=f+j;c[7]=0;c[8]=d+k;c[9]=f-j;c[10]=1-(b+n);c[11]=0;c[12]=a[0];c[13]=a[1];c[14]=a[2];c[15]=1;return c},str:function(b){return"["+b[0]+", "+b[1]+", "+b[2]+", "+b[3]+", "+b[4]+", "+b[5]+", "+b[6]+", "+b[7]+", "+b[8]+", "+b[9]+", "+ +b[10]+", "+b[11]+", "+b[12]+", "+b[13]+", "+b[14]+", "+b[15]+"]"}},l={create:function(b){var a=new j(4);b?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a[0]=a[1]=a[2]=a[3]=0;return a},createFrom:function(b,a,c,d){var f=new j(4);f[0]=b;f[1]=a;f[2]=c;f[3]=d;return f},set:function(b,a){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];return a},equal:function(b,a){return b===a||1E-6>Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])&&1E-6>Math.abs(b[2]-a[2])&&1E-6>Math.abs(b[3]-a[3])},identity:function(b){b||(b=l.create()); +b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b}},E=l.identity();l.calculateW=function(b,a){var c=b[0],d=b[1],f=b[2];if(!a||b===a)return b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f)),b;a[0]=c;a[1]=d;a[2]=f;a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-f*f));return a};l.dot=function(b,a){return b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3]};l.inverse=function(b,a){var c=b[0],d=b[1],f=b[2],g=b[3],c=(c=c*c+d*d+f*f+g*g)?1/c:0;if(!a||b===a)return b[0]*=-c,b[1]*=-c,b[2]*=-c,b[3]*=c,b;a[0]=-b[0]*c;a[1]=-b[1]*c;a[2]=-b[2]*c;a[3]=b[3]*c; +return a};l.conjugate=function(b,a){if(!a||b===a)return b[0]*=-1,b[1]*=-1,b[2]*=-1,b;a[0]=-b[0];a[1]=-b[1];a[2]=-b[2];a[3]=b[3];return a};l.length=function(b){var a=b[0],c=b[1],d=b[2];b=b[3];return Math.sqrt(a*a+c*c+d*d+b*b)};l.normalize=function(b,a){a||(a=b);var c=b[0],d=b[1],f=b[2],g=b[3],h=Math.sqrt(c*c+d*d+f*f+g*g);if(0===h)return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a;h=1/h;a[0]=c*h;a[1]=d*h;a[2]=f*h;a[3]=g*h;return a};l.add=function(b,a,c){if(!c||b===c)return b[0]+=a[0],b[1]+=a[1],b[2]+=a[2],b[3]+= +a[3],b;c[0]=b[0]+a[0];c[1]=b[1]+a[1];c[2]=b[2]+a[2];c[3]=b[3]+a[3];return c};l.multiply=function(b,a,c){c||(c=b);var d=b[0],f=b[1],g=b[2];b=b[3];var h=a[0],j=a[1],k=a[2];a=a[3];c[0]=d*a+b*h+f*k-g*j;c[1]=f*a+b*j+g*h-d*k;c[2]=g*a+b*k+d*j-f*h;c[3]=b*a-d*h-f*j-g*k;return c};l.multiplyVec3=function(b,a,c){c||(c=a);var d=a[0],f=a[1],g=a[2];a=b[0];var h=b[1],j=b[2];b=b[3];var k=b*d+h*g-j*f,l=b*f+j*d-a*g,m=b*g+a*f-h*d,d=-a*d-h*f-j*g;c[0]=k*b+d*-a+l*-j-m*-h;c[1]=l*b+d*-h+m*-a-k*-j;c[2]=m*b+d*-j+k*-h-l*-a; +return c};l.scale=function(b,a,c){if(!c||b===c)return b[0]*=a,b[1]*=a,b[2]*=a,b[3]*=a,b;c[0]=b[0]*a;c[1]=b[1]*a;c[2]=b[2]*a;c[3]=b[3]*a;return c};l.toMat3=function(b,a){a||(a=x.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c*k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=m-g;a[4]=1-(l+f);a[5]=d+h;a[6]=c+j;a[7]=d-h;a[8]=1-(l+n);return a};l.toMat4=function(b,a){a||(a=s.create());var c=b[0],d=b[1],f=b[2],g=b[3],h=c+c,j=d+d,k=f+f,l=c*h,m=c*j,c=c* +k,n=d*j,d=d*k,f=f*k,h=g*h,j=g*j,g=g*k;a[0]=1-(n+f);a[1]=m+g;a[2]=c-j;a[3]=0;a[4]=m-g;a[5]=1-(l+f);a[6]=d+h;a[7]=0;a[8]=c+j;a[9]=d-h;a[10]=1-(l+n);a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a};l.slerp=function(b,a,c,d){d||(d=b);var f=b[0]*a[0]+b[1]*a[1]+b[2]*a[2]+b[3]*a[3],g,h;if(1<=Math.abs(f))return d!==b&&(d[0]=b[0],d[1]=b[1],d[2]=b[2],d[3]=b[3]),d;g=Math.acos(f);h=Math.sqrt(1-f*f);if(0.0010>Math.abs(h))return d[0]=0.5*b[0]+0.5*a[0],d[1]=0.5*b[1]+0.5*a[1],d[2]=0.5*b[2]+0.5*a[2],d[3]=0.5*b[3]+ +0.5*a[3],d;f=Math.sin((1-c)*g)/h;c=Math.sin(c*g)/h;d[0]=b[0]*f+a[0]*c;d[1]=b[1]*f+a[1]*c;d[2]=b[2]*f+a[2]*c;d[3]=b[3]*f+a[3]*c;return d};l.fromRotationMatrix=function(b,a){a||(a=l.create());var c=b[0]+b[4]+b[8],d;if(0b[0]&&(c=1);b[8]>b[3*c+c]&&(c=2);var f=d[c],g=d[f];d=Math.sqrt(b[3*c+c]-b[3*f+f]-b[3*g+g]+1);a[c]=0.5*d;d= +0.5/d;a[3]=(b[3*g+f]-b[3*f+g])*d;a[f]=(b[3*f+c]+b[3*c+f])*d;a[g]=(b[3*g+c]+b[3*c+g])*d}return a};x.toQuat4=l.fromRotationMatrix;var D=x.create();l.fromAxes=function(b,a,c,d){D[0]=a[0];D[3]=a[1];D[6]=a[2];D[1]=c[0];D[4]=c[1];D[7]=c[2];D[2]=b[0];D[5]=b[1];D[8]=b[2];return l.fromRotationMatrix(D,d)};l.identity=function(b){b||(b=l.create());b[0]=0;b[1]=0;b[2]=0;b[3]=1;return b};l.fromAngleAxis=function(b,a,c){c||(c=l.create());b*=0.5;var d=Math.sin(b);c[3]=Math.cos(b);c[0]=d*a[0];c[1]=d*a[1];c[2]=d*a[2]; +return c};l.toAngleAxis=function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1]+b[2]*b[2];0Math.abs(b[0]-a[0])&&1E-6>Math.abs(b[1]-a[1])},negate:function(b,a){a||(a=b); +a[0]=-b[0];a[1]=-b[1];return a},normalize:function(b,a){a||(a=b);var c=b[0]*b[0]+b[1]*b[1];0 +Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},identity:function(a){a||(a=K.create());a[0]=1;a[1]=0;a[2]=0;a[3]=1;return a},transpose:function(a,c){if(!c||a===c){var d=a[1];a[1]=a[2];a[2]=d;return a}c[0]=a[0];c[1]=a[2];c[2]=a[1];c[3]=a[3];return c},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},inverse:function(a,c){c||(c=a);var d=a[0],f=a[1],g=a[2],h=a[3],j=d*h-g*f;if(!j)return null;j=1/j;c[0]=h*j;c[1]=-f*j;c[2]=-g*j;c[3]=d*j;return c},multiply:function(a, +c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];d[0]=f*c[0]+g*c[2];d[1]=f*c[1]+g*c[3];d[2]=h*c[0]+a*c[2];d[3]=h*c[1]+a*c[3];return d},rotate:function(a,c,d){d||(d=a);var f=a[0],g=a[1],h=a[2];a=a[3];var j=Math.sin(c);c=Math.cos(c);d[0]=f*c+g*j;d[1]=f*-j+g*c;d[2]=h*c+a*j;d[3]=h*-j+a*c;return d},multiplyVec2:function(a,c,d){d||(d=c);var f=c[0];c=c[1];d[0]=f*a[0]+c*a[1];d[1]=f*a[2]+c*a[3];return d},scale:function(a,c,d){d||(d=a);var f=a[1],g=a[2],h=a[3],j=c[0];c=c[1];d[0]=a[0]*j;d[1]=f*c;d[2]=g*j;d[3]= +h*c;return d},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}},M={create:function(a){var c=new j(4);a?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3]):(c[0]=0,c[1]=0,c[2]=0,c[3]=0);return c},createFrom:function(a,c,d,f){var g=new j(4);g[0]=a;g[1]=c;g[2]=d;g[3]=f;return g},add:function(a,c,d){d||(d=c);d[0]=a[0]+c[0];d[1]=a[1]+c[1];d[2]=a[2]+c[2];d[3]=a[3]+c[3];return d},subtract:function(a,c,d){d||(d=c);d[0]=a[0]-c[0];d[1]=a[1]-c[1];d[2]=a[2]-c[2];d[3]=a[3]-c[3];return d},multiply:function(a, +c,d){d||(d=c);d[0]=a[0]*c[0];d[1]=a[1]*c[1];d[2]=a[2]*c[2];d[3]=a[3]*c[3];return d},divide:function(a,c,d){d||(d=c);d[0]=a[0]/c[0];d[1]=a[1]/c[1];d[2]=a[2]/c[2];d[3]=a[3]/c[3];return d},scale:function(a,c,d){d||(d=a);d[0]=a[0]*c;d[1]=a[1]*c;d[2]=a[2]*c;d[3]=a[3]*c;return d},set:function(a,c){c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];return c},equal:function(a,c){return a===c||1E-6>Math.abs(a[0]-c[0])&&1E-6>Math.abs(a[1]-c[1])&&1E-6>Math.abs(a[2]-c[2])&&1E-6>Math.abs(a[3]-c[3])},negate:function(a,c){c|| +(c=a);c[0]=-a[0];c[1]=-a[1];c[2]=-a[2];c[3]=-a[3];return c},length:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return Math.sqrt(c*c+d*d+f*f+a*a)},squaredLength:function(a){var c=a[0],d=a[1],f=a[2];a=a[3];return c*c+d*d+f*f+a*a},lerp:function(a,c,d,f){f||(f=a);f[0]=a[0]+d*(c[0]-a[0]);f[1]=a[1]+d*(c[1]-a[1]);f[2]=a[2]+d*(c[2]-a[2]);f[3]=a[3]+d*(c[3]-a[3]);return f},str:function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"}};a&&(a.glMatrixArrayType=j,a.MatrixArray=j,a.setMatrixArrayType=c,a.determineMatrixArrayType= +f,a.glMath=d,a.vec2=L,a.vec3=k,a.vec4=M,a.mat2=K,a.mat3=x,a.mat4=s,a.quat4=l);return{glMatrixArrayType:j,MatrixArray:j,setMatrixArrayType:c,determineMatrixArrayType:f,glMath:d,vec2:L,vec3:k,vec4:M,mat2:K,mat3:x,mat4:s,quat4:l}});PIXI.shaderFragmentSrc=["precision mediump float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {","gl_FragColor \x3d texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","gl_FragColor \x3d gl_FragColor * vColor;","}"]; +PIXI.shaderVertexSrc=["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform mat4 uMVMatrix;","varying vec2 vTextureCoord;","varying float vColor;","void main(void) {","gl_Position \x3d uMVMatrix * vec4(aVertexPosition, 1.0, 1.0);","vTextureCoord \x3d aTextureCoord;","vColor \x3d aColor;","}"]; +PIXI.CompileVertexShader=function(a,c){for(var f="",d=0;da.length)){var c=this.uvs,f=this.indices,d=this.colors;this.count-=0.2;c[0]=0;c[1]=1;c[2]=0;c[3]=1;d[0]=1;d[1]=1;f[0]=0;f[1]=1;for(var a=a.length,g=1;ga.length)){var c=this.verticies,f=a[0],d,g=d=0,h=a[0];this.count-=0.2;c[0]=h.x+d;c[1]=h.y+g;c[2]=h.x-d;c[3]=h.y-g;for(var j=a.length,k=1;kk&&c.xk&&c.y< +k+h.height))return a.local.x=c.x,a.local.y=c.y,h}}return null}; +PIXI.InteractionManager.prototype.onMouseMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);a=this.hitTest(this.mouse);this.currentOver!=a&&(this.currentOver&&(this.currentOver.mouseout&&this.currentOver.mouseout(this.mouse),this.currentOver=null),this.target.view.style.cursor="default");a&&this.currentOver!=a&&(this.currentOver=a,this.target.view.style.cursor= +"pointer",a.mouseover&&a.mouseover(this.mouse))};PIXI.InteractionManager.prototype.onMouseDown=function(a){var c=this.target.view.getBoundingClientRect();this.mouse.global.x=(a.clientX-c.left)*(this.target.width/c.width);this.mouse.global.y=(a.clientY-c.top)*(this.target.height/c.height);if(a=this.hitTest(this.mouse))this.currentDown=a,a.mousedown&&a.mousedown(this.mouse)}; +PIXI.InteractionManager.prototype.onMouseUp=function(){this.currentDown&&(this.currentDown.mouseup&&this.currentDown.mouseup(this.mouse),this.currentOver==this.currentDown&&this.currentDown.click&&this.currentDown.click(this.mouse),this.currentDown=null)}; +PIXI.InteractionManager.prototype.onTouchMove=function(a){a.preventDefault();var c=this.target.view.getBoundingClientRect();a=a.changedTouches;for(var f=0;f= 0; i--) + { + var child = children[i]; + + // only sprite's right now... + if(child instanceof PIXI.Sprite) + { + if(child.interactive)this.interactiveItems.push(child); + } + else + { + // use this to optimize.. + if(!child.interactive)continue; + } + + if(child.children.length > 0) + { + this.collectInteractiveSprite(child); + } + } +} + +PIXI.InteractionManager.prototype.setTarget = function(target) +{ + this.target = target; + if(this.mouseoverEnabled)target.view.addEventListener('mousemove', this.onMouseMove.bind(this), true); + target.view.addEventListener('mousedown', this.onMouseDown.bind(this), true); + target.view.addEventListener('mouseup', this.onMouseUp.bind(this), true); + target.view.addEventListener('mouseout', this.onMouseUp.bind(this), true); + + // aint no multi touch just yet! + target.view.addEventListener("touchstart", this.onTouchStart.bind(this), true); + target.view.addEventListener("touchend", this.onTouchEnd.bind(this), true); + target.view.addEventListener("touchmove", this.onTouchMove.bind(this), true); +} + +PIXI.InteractionManager.prototype.hitTest = function(interactionData) +{ + if(this.dirty) + { + this.dirty = false; + this.interactiveItems = []; + // go through and collect all the objects that are interactive.. + this.collectInteractiveSprite(this.stage); + } + + var tempPoint = this.tempPoint; + var tempMatrix = this.tempMatrix; + var global = interactionData.global; + + var length = this.interactiveItems.length; + + for (var i = 0; i < length; i++) + { + var item = this.interactiveItems[i]; + if(!item.visible)continue; + + // TODO this could do with some optimizing! + // maybe store the inverse? + // or do a lazy check first? + //mat3.inverse(item.worldTransform, tempMatrix); + //tempPoint.x = tempMatrix[0] * global.x + tempMatrix[1] * global.y + tempMatrix[2]; + //tempPoint.y = tempMatrix[4] * global.y + tempMatrix[3] * global.x + tempMatrix[5]; + + // OPTIMIZED! assuming the matrix transform is affine.. which it totally shold be! + + var worldTransform = item.worldTransform; + + var a00 = worldTransform[0], a01 = worldTransform[1], a02 = worldTransform[2], + a10 = worldTransform[3], a11 = worldTransform[4], a12 = worldTransform[5], + id = 1 / (a00 * a11 + a01 * -a10); + + tempPoint.x = a11 * id * global.x + -a01 * id * global.y + (a12 * a01 - a02 * a11) * id; + tempPoint.y = a00 * id * global.y + -a10 * id * global.x + (-a12 * a00 + a02 * a10) * id; + + + var x1 = -item.width * item.anchor.x + + if(tempPoint.x > x1 && tempPoint.x < x1 + item.width) + { + var y1 = -item.height * item.anchor.y; + + if(tempPoint.y > y1 && tempPoint.y < y1 + item.height) + { + interactionData.local.x = tempPoint.x; + interactionData.local.y = tempPoint.y; + + return item; + } + } + } + + return null; +} + +PIXI.InteractionManager.prototype.onMouseMove = function(event) +{ + event.preventDefault(); + + // TODO optimize by not check EVERY TIME! maybe half as often? // + var rect = this.target.view.getBoundingClientRect(); + + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * ( this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + + if(this.currentOver != item) + { + if(this.currentOver) + { + if(this.currentOver.mouseout)this.currentOver.mouseout(this.mouse); + this.currentOver = null; + } + + this.target.view.style.cursor = "default"; + } + + if(item) + { + + if(this.currentOver == item)return; + + this.currentOver = item; + this.target.view.style.cursor = "pointer"; + + if(item.mouseover)item.mouseover(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseDown = function(event) +{ + var rect = this.target.view.getBoundingClientRect(); + this.mouse.global.x = (event.clientX - rect.left) * (this.target.width / rect.width); + this.mouse.global.y = (event.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(this.mouse); + if(item) + { + this.currentDown = item; + if(item.mousedown)item.mousedown(this.mouse); + } +} + +PIXI.InteractionManager.prototype.onMouseUp = function(event) +{ + if(this.currentDown) + { + if(this.currentDown.mouseup)this.currentDown.mouseup(this.mouse); + + if(this.currentOver == this.currentDown)if(this.currentDown.click)this.currentDown.click(this.mouse); + this.currentDown = null; + } +} + + +PIXI.InteractionManager.prototype.onTouchMove = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.touchs[touchEvent.identifier]; + + // update the touch position + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + } +} + +PIXI.InteractionManager.prototype.onTouchStart = function(event) +{ + event.preventDefault(); + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + + var touchData = this.pool.pop(); + if(!touchData)touchData = new PIXI.InteractionData(); + + this.touchs[touchEvent.identifier] = touchData; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + var item = this.hitTest(touchData); + if(item) + { + touchData.currentDown = item; + if(item.touchstart)item.touchstart(touchData); + } + } +} + +PIXI.InteractionManager.prototype.onTouchEnd = function(event) +{ + event.preventDefault(); + + var rect = this.target.view.getBoundingClientRect(); + var changedTouches = event.changedTouches; + + for (var i=0; i < changedTouches.length; i++) + { + var touchEvent = changedTouches[i]; + var touchData = this.touchs[touchEvent.identifier]; + + touchData.global.x = (touchEvent.clientX - rect.left) * (this.target.width / rect.width); + touchData.global.y = (touchEvent.clientY - rect.top) * (this.target.height / rect.height); + + if(touchData.currentDown) + { + if(touchData.currentDown.touchend)touchData.currentDown.touchend(touchData); + + var item = this.hitTest(touchData); + if(item == touchData.currentDown) + { + if(touchData.currentDown.tap)touchData.currentDown.tap(touchData); + } + touchData.currentDown = null; + } + + // remove the touch.. + this.pool.push(touchData); + this.touchs[touchEvent.identifier] = null; + } +} + +/** +@class InteractionData +@constructor +*/ +PIXI.InteractionData = function() +{ + /** + * This point stores the global coords of where the touch/mouse event happened + * @property global + * @type Point + */ + this.global = new PIXI.Point(); + + /** + * This point stores the local coords of where the touch/mouse event happened + * @property local + * @type Point + */ + this.local = new PIXI.Point(); +} + +// constructor +PIXI.InteractionData.constructor = PIXI.InteractionData; + + diff --git a/src/pixi/Sprite.js b/src/pixi/Sprite.js index fa23d1b..4b8954a 100644 --- a/src/pixi/Sprite.js +++ b/src/pixi/Sprite.js @@ -70,6 +70,73 @@ } this.renderable = true; + + + + // [readonly] best not to toggle directly! use setInteractive() + this.interactive = false; + + + // thi next bit is here for the docs... + + /* + * MOUSE Callbacks + */ + + /** + * A callback that is used when the users clicks on the sprite with thier mouse + * @method click + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user clicks the mouse down over the sprite + * @method mousedown + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the mouse that was over the sprite + * for this callback to be fired the mouse must have been pressed down over the sprite + * @method mouseup + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse rolls over the sprite + * @method mouseover + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the users mouse leaves the sprite + * @method mouseout + * @param interactionData {InteractionData} + */ + + /* + * TOUCH Callbacks + */ + + /** + * A callback that is used when the users taps on the sprite with thier finger + * basically a touch version of click + * @method tap + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user touch's over the sprite + * @method touchstart + * @param interactionData {InteractionData} + */ + + /** + * A callback that is used when the user releases the touch that was over the sprite + * for this callback to be fired. The touch must have started over the sprite + * @method touchend + * @param interactionData {InteractionData} + */ } // constructor @@ -92,7 +159,19 @@ this.width = texture.frame.width; this.height = texture.frame.height; this.updateFrame = true; - +} + +/** + * Indicates if the sprite will have touch and mouse interactivity. It is false by default + * @method setInteractive + * @param interactive {Boolean} + */ +PIXI.Sprite.prototype.setInteractive = function(interactive) +{ + this.interactive = interactive; + // TODO more to be done here.. + // need to sort out a re-crawl! + if(stage)stage.dirty = true; } /** @@ -107,7 +186,6 @@ // some helper functions.. - /** * * Helper function that creates a sprite that will contain a texture from the TextureCache based on the frameId diff --git a/src/pixi/Stage.js b/src/pixi/Stage.js index 75bea00..4abe469 100644 --- a/src/pixi/Stage.js +++ b/src/pixi/Stage.js @@ -8,8 +8,9 @@ @extends DisplayObjectContainer @constructor @param backgroundColor {Number} the background color of the stage +@param interactive {Boolean} enable / disable interaction (default is false) */ -PIXI.Stage = function(backgroundColor) +PIXI.Stage = function(backgroundColor, interactive) { PIXI.DisplayObjectContainer.call( this ); @@ -19,6 +20,10 @@ this.childIndex = 0; this.stage= this; + // interaction! + this.interactive = interactive ? true : false; + this.interactionManager = new PIXI.InteractionManager(this); + this.setBackgroundColor(backgroundColor); } @@ -34,11 +39,21 @@ PIXI.Stage.prototype.updateTransform = function() { this.worldAlpha = 1; - + for(var i=0,j=this.children.length; i>>>>>> Interactivity Added } return new PIXI.CanvasRenderer(width, height, view); diff --git a/src/yuidoc.json b/src/yuidoc.json index c4fb6a8..bdc5b2d 100644 --- a/src/yuidoc.json +++ b/src/yuidoc.json @@ -1,8 +1,8 @@ { "name": "Pixi.js API", - "logo": "../logo_small.png", - "description": "The Foo API: a library for doing X, Y, and Z", - "version": "0.9", + "logo": "http://www.goodboydigital.com/pixijs/logo_small.png", + "description": "Pixi.js is a fast lightweight 2D library that works across all devices.", + "version": "1.0", "url": "http://goodboydigital.com/", "options": { "outdir": "../docs"